Quick Start Guide
Get your first checkout session running in under 5 minutes
API Reference & Live Testing
Explore the full API documentation and interactively test Checkout Session requests and responses.
Preview Checkout
Calculate pricing, taxes, and totals before creating a session.
Session Validity: Checkout sessions are valid for 24 hours by default. If you pass
confirm=true in your request, the session will only be valid for 15 minutes.前置条件
1
Dodo Payments Account
你需要拥有一个已启用且可访问 API 的 Dodo Payments 商户账户。
2
API Credentials
从 Dodo Payments 控制面板生成 API 凭证:
3
Products Setup
在实现 checkout session 之前,请先在 Dodo Payments 控制面板中创建产品。
创建第一个 Checkout Session
- Node.js SDK
- Python SDK
- REST API
API 响应
以上所有方法均返回相同的响应结构:生成的
checkout_url 只能使用一次,并会在 24 小时内过期。请勿缓存或在不同客户或支付尝试之间重复使用它——需要新链接时,请创建新的 checkout session。1
Get the checkout URL
从 API 响应中提取
checkout_url。2
Redirect your customer
将客户引导至 checkout URL 以完成购买。
3
Handle the return
支付完成后,客户会被重定向到你的
return_url,并附带包含支付/订阅 ID、状态、客户邮箱以及任何许可证密钥的查询参数。完整列表请参阅 return_url 参数文档。Request Body
Required Fields
每个 checkout session 所需的必填字段
Optional Fields
用于自定义 checkout 体验的其他配置
必填字段
array
必填
要包含在 checkout session 中的产品数组。每个产品都必须具有来自 Dodo Payments 控制面板的有效
product_id。可选字段
配置这些字段以自定义 checkout 体验,并为支付流程添加业务逻辑。Customer Information
Customer Information
Payment Configuration
Payment Configuration
array
控制 checkout 期间客户可用的支付方式。此功能有助于针对特定市场或业务要求进行优化。可用选项:
credit、debit、upi_collect、apple_pay、google_pay、amazon_pay、klarna、affirm、afterpay_clearpay、cashapp、multibanco、bancontact_card、eps、ideal、przelewy24、paypal示例:string
使用固定账单货币覆盖默认的货币选择。使用 ISO 4217 货币代码。支持的货币:
USD、EUR、GBP、CAD、AUD、INR 等示例:"USD" 表示美元,"EUR" 表示欧元只有启用 adaptive pricing 时,此字段才会生效。如果禁用 adaptive pricing,将使用产品的默认货币。
boolean
默认值:"false"
为回访客户显示之前保存的支付方式,从而提升 checkout 速度和用户体验。
Session Management
Session Management
string
支付完成后用于重定向客户的 URL。重定向时,Dodo Payments 会向你的 URL 追加以下查询参数:
重定向 URL 示例:
string
客户点击返回按钮或取消 checkout session 时用于重定向客户的 URL。如果未提供,则不会显示返回按钮。
boolean
默认值:"false"
如果为 true,则立即完成所有 session 详细信息。如果缺少必填数据,API 将抛出错误。
array
向 checkout session 应用一个或多个叠加的折扣代码。代码按数组顺序应用(第一个代码降低基础价格,第二个代码降低已折扣的价格,依此类推),每个 session 最多可使用 20 个代码。
下面的单数
discount_code 字段已弃用,但仍受到完整支持——现有集成无需更改即可继续运行。它不能与同一请求中的 discount_codes 组合使用。方便时请迁移到 discount_codes,以使用叠加折扣功能。string
已弃用
已弃用——新集成请优先使用
discount_codes。为保持向后兼容,此字段仍然有效,但不能与同一请求中的 discount_codes 组合使用。object
用于存储有关 session 的其他信息的自定义键值对。
boolean
覆盖此 session 的商户默认 3DS 行为。
boolean
默认值:"false"
启用最小地址收集模式。启用后,checkout 仅收集:
- 国家/地区:税费确定始终需要
- ZIP/邮政编码:仅在计算销售税、VAT 或 GST 必需的地区收集
Custom Fields
Custom Fields
array
使用自定义表单字段在 checkout 期间收集客户的其他信息。每个 checkout session 最多可定义 5 个自定义字段。客户响应会包含在 webhook payload 中,并可通过 API 获取。
客户对自定义字段的响应会包含在:
- Webhooks:
payment.succeeded、subscription.active以及其他相关事件 payload 中包含custom_field_responses数组 - API 响应:支付和订阅对象包含
custom_field_responses
Subscription Configuration
Subscription Configuration
object
包含订阅产品的 checkout session 的其他配置。
使用示例
以下是 10 个全面示例,展示适用于不同业务场景的 checkout session 配置:1. 简单的单产品 Checkout
2. 多产品购物车
3. 带试用期的订阅
4. 预确认 Checkout
当
confirm 设置为 true 时,客户将直接进入 checkout 页面,跳过所有确认步骤。5. 带货币覆盖的 Checkout
只有在账户设置中启用 adaptive currency 时,
billing_currency 覆盖才会生效。如果禁用 adaptive currency,此参数不会产生任何影响。6. 为回访客户保存支付方式
7. 收集税务 ID 的 B2B Checkout
8. 带叠加折扣代码的深色主题 Checkout
9. 区域性支付方式(印度 UPI)
有关 UPI 配置和测试的详细信息,请参阅 India Payment Methods 页面。10. BNPL(先买后付)Checkout
有关 BNPL 配置和测试的详细信息,请参阅 Buy Now Pay Later (BNPL) 页面。11. 使用现有支付方式进行即时 Checkout
使用客户已保存的支付方式创建能够立即处理的 checkout session,并跳过支付方式收集:支付方式必须属于该客户,并且必须与支付货币兼容。这可以为回访客户实现一键购买。
12. 用于生成简洁支付 URL 的短链接
使用自定义 slug 生成可缩短且可分享的支付链接:13. 跳过支付成功页面并立即重定向
在支付完成后立即重定向客户,跳过默认的成功页面:启用
redirect_immediately 后,客户会在支付完成后立即被重定向到你的 return_url,完全跳过默认的成功页面。14. 强制指定语言
强制 checkout 以指定语言显示,覆盖客户浏览器的语言检测结果:ar)、加泰罗尼亚语(ca)、中文(zh)、荷兰语(nl)、英语(en)、法语(fr)、德语(de)、希伯来语(he)、印度尼西亚语(id)、意大利语(it)、日语(ja)、韩语(ko)、马来语(ms)、波兰语(pl)、葡萄牙语(pt)、罗马尼亚语(ro)、俄语(ru)、西班牙语(es)、瑞典语(sv)、泰语(th)、土耳其语(tr)
15. 收集自定义字段
使用自定义字段在 checkout 期间收集客户的其他信息:自定义字段响应会自动包含在 webhook payload 中(
payment.succeeded、subscription.active 等),并可通过 API 获取。你可以使用这些信息丰富 CRM、触发 onboarding 流程或自定义客户体验。text、number、email、url、date、dropdown、boolean
预览 Checkout Sessions
创建 checkout session 之前,你可以预览包含税费、折扣和总额的价格明细。这有助于在客户进入 checkout 之前显示准确的价格。当购物车包含订阅产品时,预览响应还会返回
next_billing_date——即即将到来的账单日期预览,以便你在创建订阅之前将其显示给客户。它相对于当前时间计算:适用试用期时为 now + trial period,否则为 now + one payment frequency。一次性购物车不会包含此字段。这是基于预览时间的估算;权威的 next_billing_date 会在订阅激活时设置。预览还会返回
trial_period_days(有效试用期长度,免费或付费)和 trial_amount(折扣后的每单位试用费用,以价格货币的最小单位表示)。trial_amount 仅在付费试用时存在;免费试用或无试用时为 null。使用 current_breakup 获取今天实际应付的含税总额。- Node.js SDK
- Python SDK
Preview API Reference
查看完整的预览 endpoint 文档。
从 Dynamic Links 迁移到 Checkout Sessions
主要区别
以前使用 Dynamic Links 创建支付链接时,必须提供客户完整的账单地址。 使用 Checkout Sessions 后,不再需要这样做。你只需传递已有的信息,剩余部分由我们处理。例如:- 如果你只知道客户的账单国家/地区,只需提供该信息。
- checkout 流程会在将客户带到支付页面之前自动收集缺失的信息。
- 另一方面,如果你已经拥有所有必需信息,并希望直接跳转到支付页面,则可以传递完整数据集,并在请求正文中包含
confirm=true。
迁移流程
从 Dynamic Links 迁移到 Checkout Sessions 非常简单:1
Update your integration
更新集成,以使用新的 API 或 SDK 方法。
2
Adjust request payload
根据 Checkout Sessions 格式调整请求 payload。
3
That's it!
是。不需要在你的一侧进行额外处理或执行特殊迁移步骤。
相关 API 参考
Create Checkout Session
创建 checkout session 的完整 API 参考,包含所有可用参数和选项
Preview Checkout Session
在创建 session 之前预览价格、税费和总额的 API 参考