Overview
SMART_MOBILE_WALLET enables merchants to offer payments via mobile-native wallet applications that support token-based payments, app-switching, and mobile authentication. These wallets often integrate at the OS or device level, providing a seamless and secure checkout experience.
Our routing logic automatically determines the best provider based on region, user device, and wallet availability.
Supported Mobile Wallets
| Wallet Provider | Markets Supported | Notes |
|---|---|---|
| Apple Pay | Global (iOS) | Token-based, secure element; requires Apple device |
| Google Pay | Global (Android) | Supports NFC, in-app, and tokenized flows |
| Samsung Pay | Global | Embedded in Samsung devices, supports MST and NFC |
| Huawei Pay | China | Limited to Huawei ecosystem |
| Mi Pay | China, India | Tied to Xiaomi devices |
| LG Pay | Korea | Device-embedded wallet |
| GrabPay | Southeast Asia | Often categorized under both mobile and e-wallets |
| GCash | Philippines | Telco-backed wallet with QR and mobile app |
| TrueMoney | Thailand | Wallet app used for mobile top-ups and bill pay |
| Paytm | India | App-based with wallet + UPI support |
| PhonePe | India | Mobile-first with UPI and wallet |
Payload
Fields
| Field | Type | Required? | Description |
|---|---|---|---|
paymentMethod | ApmMethod | Yes (default) | Always SMART_MOBILE_WALLET |
paymentType | ApmFlowType | Yes (default) | Always MOBILE_WALLET |
walletProvider | String? | ✅ | Wallet name (e.g. google_pay, apple_pay) |
walletPhoneNumber | String? | Optional | Associated mobile number for auth or verification |
walletUserId | String? | Optional | Wallet-specific user ID |
walletSessionToken | String? | Optional | Used for returning user sessions |
paymentToken | String? | Optional | Token issued from mobile wallet SDK (e.g. PAN token) |
paymentTokenType | String? | Optional | Type of token (EMV, PAN_ONLY, etc.) |
deviceId | String? | Optional | Device UUID or platform ID |
deviceModel | String? | Optional | Phone model (e.g., "iPhone 14") |
deviceOs | String? | Optional | OS name/version (e.g., iOS 17, Android 14) |
sdkVersion | String? | Optional | SDK integration version |
authorizationReference | String? | Optional | Auth reference string (e.g., fingerprint auth session) |
customFields | Map<String,String>? | Optional | Additional PSP/provider-specific data |
Response
Fields
| Field | Type | Required? | Description |
|---|---|---|---|
paymentMethod | ApmMethod | Yes | Always SMART_MOBILE_WALLET |
paymentType | ApmFlowType | Yes | Always MOBILE_WALLET |
redirectUrl | String? | Optional | For app-switch or browser-based completion |
iframeUrl | String? | Optional | If mobile wallet supports embedded flows |
providerTransactionId | String? | Yes | External reference from provider |
isFinal | Boolean | Optional | If true, no further interaction is needed |
displayMessage | String? | Optional | Message to show to the user |
displayInstructions | String? | Optional | Any UI instructions (e.g., "Switch back to app") |
sessionToken | String? | Optional | For follow-up API or polling |
walletMetadata | Map<String, String>? | Optional | Additional provider info (e.g., auth method used) |
🧠 Best Practices
- Use
walletProviderto route requests explicitly (e.g.google_pay,paytm). - Provide
paymentTokenandpaymentTokenTypefor secure device-based tokenization. - Always validate
deviceOs,deviceId, andsdkVersionfor compliance. - Handle both
redirectUrlanddisplayInstructionsfor hybrid and app-switch flows. - Consider
walletMetadatafor debugging and reconciliation.
Let me know if you want to continue with the next one.
