这是官方的 Dodo Payments Flutter package(
dodopayments_checkout
在 pub.dev 上)。此外还有一个由社区构建的独立 package,参见
社区项目。Checkout Sessions API
从你的 backend 创建此 SDK 要打开的 checkout_url。
Mobile Integration Guide
了解它如何融入完整的移动支付流程。
dodopayments_checkout 会在 iOS 上的
SFSafariViewController 和 Android 上的 Chrome Custom Tab 中打开 Dodo 的托管结账页面——使用的
是与独立的 iOS 和
Android SDK 相同的原生核心。所有结账逻辑都位于
这些原生核心中;Dart 层通过类型化的
Pigeon channel 传递调用。它不持有 API key,
也不会调用 Dodo Payments API。
需要 Flutter 3.44+ / Dart 3.12+、iOS 16+,以及 Android minSdk 23。
安装
1
Add the Dependency
pubspec.yaml
2
Register a Callback URL Scheme
- iOS
- Android
在 然后将收到的 URL(例如通过
ios/Runner/Info.plist 中添加一个用于 scheme 的 URL type:ios/Runner/Info.plist
app_links)转发到 SDK,因为
SFSafariViewController 无法捕获自己的返回 URL:在这里转发每个 URL 都是安全的。
handleOpenURL 只会处理
与已注册的 returnUrl 匹配的 URL,并会为其他 URL
解析 false。使用
结果含义
CheckoutStatus
必填
以下值之一:
succeeded、failed、cancelled、pending、expired。String?
当返回 URL 包含该值时设置。将其显示在 UI 中,但不要使用它来授予访问权限。请参见下方的“验证付款”。
String?
用于订阅结账时设置。
List<String>?
当结账包含 license key 产品时设置。
String?
当结账捕获 email 时设置。
Map<String, String>
返回 URL 中的每个 query parameter,均按原样保留。
验证付款
Webhooks
付款成功或订阅激活时,Dodo Payments 会调用你的 backend。
Get Payment Detail
使用你的 secret key 查询
paymentId,直接检查其状态。result.status。
外观自定义
通过customization 在 CheckoutParams 上自定义 checkout 浏览器的工具栏、按钮和配色方案。选项按平台分组,因为 Android 的 Custom Tab 和 iOS 的 SFSafariViewController 提供了不同的原生控件。所有字段均为可选;省略 customization 后,将使用各平台的默认外观。
Android — Custom Tab
Android — Custom Tab
错误
start 仅在使用方式错误或平台故障时抛出 CheckoutException。
已取消或被拒绝的支付始终会作为结果返回,而不会作为异常抛出。
invalidCheckoutUrl(INVALID_CHECKOUT_URL):不是checkout.dodopayments.comsession URL。invalidReturnUrl(INVALID_RETURN_URL):不是有效的绝对 URL。alreadyInProgress(ALREADY_IN_PROGRESS):checkout 已在运行。platformError(PLATFORM_ERROR):意外的平台故障。
已放弃的会话
如果应用在 checkout 过程中被终止,请在下次启动时恢复会话,并将其与后端进行协调。
相关内容
Mobile Integration Guide
Android、iOS 和 React Native 使用相同的契约。
Community Projects
此外还有一个由社区构建的独立 Flutter 软件包。