Mobile apps
Integrate Autlantic Billing into an iOS or Android app the same way Stripe Checkout works: your backend creates a session with a secret API key; the app opens the returned hosted checkout URL; webhooks unlock access.
Do not put abk_test_* / abk_live_* or webhook secrets in the mobile binary.
Flow
- App asks your backend for a checkout session (subscription, one-time payment, or payment link).
- Backend calls Billing
POST /v1/*(Node / Python / Go / PHP / Java / .NET / HTTP) and returnscheckoutUrl(or payment linkurl) plus deep-link return URLs. - App opens that URL with the Autlantic Checkout SDK.
- Customer completes wallet UX on hosted checkout (WalletConnect on mobile).
- Checkout returns to your
successUrlorcancelUrl(app deep link). - Billing delivers a signed webhook to your backend. Verify the signature, then grant entitlement.
- App polls your API for access status. Do not call Billing
/v1from the device with a secret key.
App → Merchant backend → Billing API (/v1)
App → present(checkoutUrl) → Hosted checkout
Billing → signed webhook → Merchant backend → unlock
App → Merchant backend (status)Return URLs (deep links)
Subscriptions, one-time payments, and payment links accept successUrl and cancelUrl on create. Use your app’s URL scheme or universal / app links, for example:
myapp://billing/successhttps://app.example.com/billing/success
Hosted checkout uses these for “Return to merchant” / cancel. After return, refresh status from your backend. Unlock only after a verified webhook (invoice.paid, subscription.activated, payment.paid, etc.).
Official Checkout SDKs
| Platform | Install | API reference |
|---|---|---|
| iOS | Swift Package Manager (sdks/ios, tag sdks/ios/v0.1.0) | iOS Checkout |
| Android | Maven Central (com.autlantic:checkout 0.1.0) | Android Checkout |
| Flutter | pub.dev (autlantic_checkout 0.1.0) | Flutter Checkout |
| React Native | npm (@autlantic/checkout 0.1.0) | React Native Checkout |
// iOS
AutlanticCheckout.present(url: checkoutURL, returnURLScheme: "myapp", from: self) { result in /* … */ }// Android
AutlanticCheckout.present(context, checkoutUrl)// Flutter
await AutlanticCheckout.present(checkoutUrl, returnUrlScheme: 'myapp');// React Native
await AutlanticCheckout.present(checkoutUrl, { returnUrlScheme: 'myapp' });Prefer system browser surfaces (ASWebAuthenticationSession on iOS; Chrome Custom Tabs on Android — including Flutter/RN plugins) so WalletConnect can hand off to wallet apps. Avoid locked WebViews.
Device smoke (Test keys)
Step-by-step phone/simulator check with abk_test_*: Device smoke test.
Sample merchant backend
pnpm example:mobile
# POST http://localhost:3055/api/checkoutRepo: examples/mobile-checkout.
Openable apps (point at the sample backend):
- iOS:
ios-sample/CheckoutSample.xcodeproj - Android:
android-sample(./gradlew :app:assembleDebug)
Alternate hosted backends: Python (3056), Go (3057), PHP (3058), Java (3059), .NET (3060).
What the mobile app must never do
- Ship or embed Autlantic API keys or webhook secrets
- Call authenticated
/v1/*with a secret from the device - Verify webhooks on device
- Rebuild vault approve / mandate flows for v1 (use hosted checkout)