这是官方的 Dodo Payments React Native 结账 SDK,
@dodopayments/react-native-checkout。它会在原生浏览器视图中打开 Dodo 的托管结账页面,并返回类型化结果。注意:还有一个名为 dodopayments-react-native-sdk(未使用 scope)的旧版无关 package,其 API 完全不同。本页面仅介绍当前官方的 scoped package。Checkout Sessions API
从您的 backend 创建此 SDK 要打开的 checkout_url。
Mobile Integration Guide
了解它如何融入完整的移动支付流程。
SFSafariViewController,在 Android 上打开 Chrome Custom Tab,不持有 API key,也不会直接调用 Dodo API。所有结账逻辑都在浏览器中运行;SDK 只负责管理视图生命周期并捕获 return URL。
安装
1
Install the Package
- Android
- iOS
- Expo
package 会自动链接,并从 Maven 拉取 无需其他设置;原生依赖会自动解析。
com.dodopayments.api:checkout-android。2
Register a Callback URL Scheme
您的应用必须注册 URL scheme,才能接收结账页面返回的 return URL。
- Android (Gradle)
- iOS (Info.plist)
- Expo (both platforms)
在 将
android/app/build.gradle 中:android/app/build.gradle
"myapp" 替换为您应用的 scheme。使用
转发 Return URL
Linking listener 是 iOS 处理 return URL 所必需的。在 Android 上,handleOpenURL 是一个 no-op,会解析 false,因为 Android 核心会原生处理其 redirect。在两个平台上无条件注册该 listener 都是安全的。
结果含义
CheckoutStatus
必填
以下值之一:
succeeded、failed、cancelled、pending、expired。string
当 return URL 中包含该值时设置。将其显示在 UI 中,但不要用它授予访问权限。请参阅下方的“验证支付”。
string
用于订阅结账时设置。
string[]
结账包含 license key 产品时设置。
string
结账捕获 email 时设置。
Record<string, string>
return URL 中的每个 query parameter,均按原样返回。
验证支付
Webhooks
支付成功或订阅激活时,Dodo Payments 会调用您的 backend。
Get Payment Detail
使用您的 secret key 查询
paymentId,直接检查其状态。result.status 授予访问权限。
错误
只有在误用或平台故障时,start 才会以 CheckoutError 拒绝。已取消或被拒绝的支付始终作为结果返回,而不是抛出 exception。
INVALID_CHECKOUT_URL:不是checkout.dodopayments.comsession URL。INVALID_RETURN_URL:不是有效的绝对 URL。ALREADY_IN_PROGRESS:已有结账正在运行。PLATFORM_ERROR:意外的平台故障。
已放弃的会话
如果应用或 JS bundle 在结账过程中被终止,promise 会丢失,但原生层会保留 session。请在下次 mount 时恢复该 session,并与您的 backend 对账。相关内容
Mobile Integration Guide
适用于 Android、iOS 和 Flutter 的相同契约。
Expo Boilerplate
包含结账集成的完整 Expo 示例。