Mobile SDKs
Native payment experiences for Android and iOS. Pre-built UI components, Google Pay & Apple Pay, card scanning, and 3D Secure -- all PCI compliant out of the box.
Native UI
Jetpack Compose & SwiftUI components
Wallet Pay
Google Pay & Apple Pay built in
Card Scanning
ML-powered camera card capture
PCI Compliant
SAQ-A eligible, zero card data
Android SDK
v1.0.0 · API 26+ (compileSdk 34) · GitHub
Installation
// build.gradle.kts
dependencies {
implementation("com.wyrr:payments:1.0.0")
}Quick Start
1val wyrr = Wyrr.initialize(
2 context = applicationContext,
3 publishableKey = "pk_test_...",
4 environment = Wyrr.Environment.SANDBOX
5)
6
7val config = PaymentSheetConfiguration(
8 sessionId = "cs_...",
9 merchantName = "Acme Corp",
10 brandColor = "#4F46E5"
11)
12
13PaymentSheet(config) { result ->
14 when (result) {
15 is PaymentResult.Succeeded -> handleSuccess(result.paymentId)
16 is PaymentResult.Failed -> handleError(result.error)
17 is PaymentResult.Cancelled -> handleCancel()
18 }
19}
Features
Google Pay
Native Google Pay integration via play-services-wallet
Card Scanning
Camera-based card recognition powered by ML Kit
3D Secure
Automatic 3DS challenge handling via Chrome Custom Tabs
PCI Compliant
SAQ-A eligible -- card data never touches your servers
Payment Sheet
The PaymentSheet is a pre-built, drop-in UI that handles the entire payment flow. It renders a bottom sheet (Android) or modal (iOS) with card entry, Google Pay / Apple Pay buttons, saved payment methods, and input validation. Your app receives a simple callback with the result -- no need to build or certify your own card form.
Card Entry
PCI-compliant card form with real-time validation, card brand detection, and postal code collection.
Wallet Payments
One-tap Google Pay or Apple Pay. Automatically shown when available on the device.
Saved Methods
Returning customers see their saved cards and can pay with a single tap.
Localization
Supports 25+ languages and automatically adapts to the device locale.
Card Scanning
Both SDKs include camera-based card scanning that extracts the card number, expiry date, and cardholder name in real time. On Android this is powered by Google ML Kit; on iOS it uses the Vision framework. Card scanning is presented automatically inside the PaymentSheet when camera permission is granted, or you can invoke it standalone via the CardScanner API.
Real-Time OCR
Card details recognized as the user holds their card to the camera. No photo capture required.
Privacy First
All processing happens on-device. No images or card data are sent to any server.
Fallback Ready
If the camera is unavailable or permission is denied, users can type their card details manually.
3D Secure Authentication
When a payment requires 3D Secure (3DS) verification, the SDK handles the full challenge flow automatically. On Android the issuer's authentication page opens in a Chrome Custom Tab; on iOS it uses SFSafariViewController. Once the cardholder completes the challenge, control returns to your app with the payment result. No additional code is needed beyond the standard PaymentSheet callback.
3DS2 First
Frictionless flow attempted first, with step-up challenge as fallback.
Automatic Handling
No extra code required. The SDK detects when 3DS is needed and presents the challenge.
Liability Shift
Successful 3DS authentication shifts chargeback liability to the issuing bank.
Customization
Both SDKs support theming so the payment UI matches your brand. Pass a brandColor to tint buttons and highlights, or provide a full WyrrTheme object to control typography, corner radii, dark/light mode, and individual component styles.
1val theme = WyrrTheme(
2 primaryColor = Color(0xFF4F46E5),
3 backgroundColor = Color.White,
4 cornerRadius = 12.dp,
5 fontFamily = FontFamily.SansSerif,
6 darkMode = false
7)
8
9PaymentSheet(
10 configuration = config,
11 theme = theme
12) { result -> /* ... */ }