尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Vezmo payments in your iPhone and Android apps: one native payment sheet for iOS (Swift), Android (Kotlin), React Native and Flutter. Cards, Apple Pay, Google Pay, pay later, subscriptions.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Take payments in your iPhone and Android apps with Vezmo, in a native payment sheet: cards with 3D Secure, Apple Pay, Google Pay, Instant ACH, Klarna, Affirm, Afterpay, Amazon Pay, Cash App, UPI and Pix, in the buyer's own currency. Start subscriptions too, with a free trial or a first payment, and the card or bank account saved for the renewals.
Screens from the example apps against Vezmo's sandbox, as the end-to-end tests capture them.
| Your app | Package | Install | Guide |
|---|---|---|---|
| React Native or Expo | @vezmopay/react-native | npx expo install @vezmopay/react-native | README · online guide |
| iOS, Swift (SwiftUI or UIKit) | VezmoCheckout Swift package | Xcode → Add Package Dependencies → this repository's URL | README · online guide |
| Android, Kotlin (Compose or Views) | com.vezmo:vezmo-checkout | implementation("com.vezmo:vezmo-checkout:0.1.0") | README · online guide |
| Flutter | vezmo_checkout (on the native SDKs) | flutter pub add vezmo_checkout | README · online guide |
All four draw the same sheet and return the same results. Apps without an SDK can open Vezmo's hosted checkout in the phone's secure browser sheet instead (Checkout for apps).
| Minimum | |
|---|---|
| React Native | React Native 0.79 with the New Architecture; Expo SDK 53 with a development build (not Expo Go) |
| iOS | iOS 15.1, Xcode 16, Swift 5.9 |
| Android | Android 7.0 (API 24); compile SDK 36, Kotlin 2.1, Java 17 |
| Flutter | Flutter 3.41 (Dart 3.11) |
Every app also needs a Vezmo business with your app added under Developers → Mobile apps in the dashboard. On
iPhone that is where you register the return link (for example acme://vezmo) the buyer comes back through after
3D Secure, a bank app or a pay-later provider.
succeeded, processing (UPI, Pix or a bank debit still settling), canceled
or failed, with an error code. The sheet never throws.sequenceDiagram
autonumber
participant App as Your app
participant Server as Your server
participant Vezmo
App->>Server: Checkout
Server->>Vezmo: Create a checkout session (API key)
Vezmo-->>Server: clientToken
Server-->>App: clientToken
App->>Vezmo: prepare(clientToken), then present() the sheet
Note over App,Vezmo: The buyer pays. Vezmo prices and confirms the payment, including 3D Secure.
Vezmo-->>App: Result: succeeded, processing, canceled or failed
Vezmo->>Server: payment.success webhook
Server->>Server: Fulfil the order
POST /api/v1/merchant/secure-payments) with your Vezmo API key and
sends its client token (data.securePayment.clientToken) to the app. For a subscription it creates the
subscription (POST /api/v1/merchant/subscription) and sends its checkoutToken.payment.success webhook (or subscription.* for subscriptions), not from
the app's result alone.Your API key and secret stay on your server. The app only ever holds a session's client token.
In React Native, for example:
const { prepareCheckout, presentCheckout } = useVezmoCheckout();
const prep = await prepareCheckout({ clientToken });
if (prep.error) return showError(prep.error.message);
const result = await presentCheckout(); // 'succeeded' | 'processing' | 'canceled' | 'failed'
The iOS, Android and Flutter READMEs have the same steps in Swift, Kotlin and Dart.
Create sessions with your sandbox API key, then pay with:
| Card | What happens |
|---|---|
4242 4242 4242 4242 | Paid. 3D Secure, when asked, shows a test page where you approve or fail it. |
4000 0000 0000 3220 | Always asks for 3D Secure. |
4000 0000 0000 0002 | Declined. |
Any future expiry date and any CVC. In the sandbox, Apple Pay and Google Pay use the cards in the phone's wallet without charging them. For Instant ACH, choose the Success test bank, and enter any six digits when asked for a code.
Each package has an example app (a small shop called Northwind Audio) that pays against Vezmo's sandbox:
| Example | Run it |
|---|---|
| React Native | yarn example expo run:ios or yarn example expo run:android from packages/react-native |
| iOS | xcodegen generate in packages/ios/Example, then open VezmoExample.xcodeproj |
| Android | gradle :example:installRelease from packages/android, or install example-apk from the latest Android SDK run |
| Flutter | flutter run from packages/flutter/example |
packages/
react-native/ @vezmopay/react-native: TypeScript, native modules, Expo config plugin, example app, Maestro flows
ios/ VezmoCheckout: Swift sources, unit tests, example app (XcodeGen), Maestro flows
android/ vezmo-checkout: Kotlin library, example app, Maestro flows
flutter/ vezmo_checkout: Dart plugin on the iOS and Android SDKs, tests, example app, Maestro flows
Package.swift Swift Package Manager manifest for the iOS SDK (at the root so the repository URL installs it)
.github/ CI, end-to-end, release and TestFlight workflows
CI runs each package's tests on its pull requests and on main, and pays end to end from the example apps on an
Android emulator and an iPhone simulator with Maestro: cards with 3D Secure, a decline, cancel,
a bad token, both business models, a Cash App redirect back into the app, Instant ACH, subscriptions with and without a
free trial, and dark mode. CONTRIBUTING.md lists what each workflow covers.
The SDKs are 0.x: a minor release (0.1 → 0.2) can change the API, so pin to a minor version. Each package's
CHANGELOG.md lists its changes: React Native,
iOS, Android, Flutter.
Maintainers release in the order in RELEASING.md.