这是官方的 Dodo Payments Swift iOS 结账 SDK。它会在原生浏览器视图中打开 Dodo 托管的结账页面,并返回类型化结果。
Checkout Sessions API
从你的 backend 创建此 SDK 打开的 checkout_url。
Mobile Integration Guide
了解它如何融入完整的移动端支付流程。
SFSafariViewController 中打开 Dodo 托管的结账页面,不持有 API key,也不会直接调用 Dodo API。所有结账逻辑都在浏览器中运行;SDK 只负责管理视图生命周期并捕获返回 URL。
需要 iOS 16+ 和 Swift 6。
安装
1
Add the Package
在 Xcode 中,前往 File → Add Package Dependencies 并输入:选择 1.0.0 或更高版本。或者,将其添加到你的
Package.swift:Package.swift
2
Register a Callback URL Scheme
你的应用必须注册 URL scheme,以接收结账页面返回的 URL。将以下内容添加到你的 你也可以通过 Xcode 的 Info → URL Types UI 添加此配置。
Info.plist:Info.plist
使用
转发返回 URL
SFSafariViewController 没有在进程内捕获自身返回 URL 的方式。你的应用必须将传入的 URL 转发到 SDK。
- SwiftUI
- SceneDelegate
在此处转发每个 URL 都是安全的。
handleOpenURL 只会处理与已注册 returnUrl 匹配的 URL,对于其他 URL 则返回 false。结果含义
CheckoutStatus
必填
以下值之一:
succeeded、failed、cancelled、pending、expired。String?
当返回 URL 中包含该值时设置。将其显示在 UI 中,不要使用它来授予访问权限。请参阅下方的“验证付款”。
String?
适用于订阅结账。
[String]?
当结账包含许可证密钥产品时设置。
String?
当结账收集电子邮件时设置。
[String: String]
返回 URL 中的每个 query parameter,逐字保留。
验证付款
Webhooks
付款成功或订阅激活时,Dodo Payments 会调用你的 backend。
Get Payment Detail
使用你的 secret key 查询
paymentId,直接检查其状态。result.status 授予权限。
错误
start 仅会在使用错误或平台故障时抛出 CheckoutError。已取消或被拒绝的付款始终作为结果返回,而不是异常。
invalidCheckoutUrl(INVALID_CHECKOUT_URL):不是checkout.dodopayments.comsession URL。invalidReturnUrl(INVALID_RETURN_URL):不是有效的绝对 URL。alreadyInProgress(ALREADY_IN_PROGRESS):结账已在运行。platformError(PLATFORM_ERROR):意外的平台故障。
已放弃的会话
如果应用在结账过程中被终止,请在下次启动时恢复该 session,并将其与 backend 对账。
相关内容
Mobile Integration Guide
Android、React Native 和 Flutter 使用相同的契约。
React Native SDK
在 iOS 上封装相同的 Swift 核心。