Wallet Checkout
Apple Pay (iOS) and Google Pay (Android) — the native checkout path on React Native.
Wallet Checkout is the native-mobile equivalent of Embedded Checkout on web. Users authorize a payment with Face ID / Touch ID / device biometrics; the SDK exchanges the platform's encrypted payment token for a Basis Theory token; your server completes the charge using the backend SDK.
Status: API in design. Apple Pay tokenization and Google Pay tokenization both go through Basis Theory's
/apple-payand/google-payendpoints — that part is ready. The native button components and unified RN-side API live in@easylabs/react-nativeand are landing alongside the v0.2 release. This page documents the planned shape; some snippets may not run yet.
Apple Pay (iOS)
Prerequisites
- An Apple Merchant ID registered in your Apple Developer account
- A payment processing certificate uploaded to the Easy Dashboard
- The Apple Pay capability enabled in your Xcode project
- A real device — Apple Pay does not work in the iOS Simulator beyond the sandbox sheet
Flow
[ApplePayButton] → user authorizes → onPaymentAuthorized
↓
tokenize(applePayPayload)
↓
Basis Theory /apple-pay
↓
bt token → your server
↓
backend SDK creates the transferMerchant Capabilities
Google Pay (Android)
Prerequisites
- A Google Pay merchant ID
- The
Google Pay API library
bundled with your build (
com.google.android.gms:play-services-wallet) - Production access requested in the Google Pay & Wallet console
- Sandbox testing works on any Android device with a Google account
Flow
[GooglePayButton] → user authorizes → onPaymentDataResult
↓
tokenize(googlePayPayload)
↓
Basis Theory /google-pay
↓
bt token → your server
↓
backend SDK creates the transferCross-platform helper
Server side
Apple Pay and Google Pay tokens behave like any other tokenized payment instrument once they reach your server. See Backend SDK → Transfers for completing the charge.
Related
- Elements — manual card capture as the fallback flow
- EasyProvider — required ancestor
- Embedded Checkout — why the iframe path isn't used on React Native