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 响应
以上所有方法均返回相同的响应结构:session_id 可以保证存在。以下两种情况会返回额外字段或字段更少:
- 已提供
payment_method_id— 该 charge 会立即处理,且checkout_url为null。请改用返回的payment_id。 confirm: true在创建 session 时创建了 payment — 响应还会包含payment_id、client_secret和publishable_key,供 Dodo Payments checkout SDK 使用。
生成的
checkout_url 只能使用一次,并会在 24 小时内过期。不要在不同客户或 payment 尝试之间缓存或重复使用它——每当需要新链接时,都应创建新的 checkout session。1
Get the checkout URL
从 API 响应中提取
checkout_url。2
Redirect your customer
将客户定向到 checkout URL 以完成购买。
3
Handle the return
payment 完成后,客户会被重定向到你的
return_url,并附带查询参数,包括 payment/subscription ID、status、客户 email 以及任何 license keys。完整列表请参阅 return_url parameter docs。Request Body
Required Fields
每个 checkout session 所需的基本字段
Optional Fields
用于自定义 checkout 体验的其他配置
Required Fields
array
必填
要包含在 checkout session 中的产品数组。每个产品都必须具有来自 Dodo Payments dashboard 的有效
product_id。Optional Fields
配置这些字段可以自定义 checkout 体验,并为 payment 流程添加业务逻辑。Customer Information
Customer Information
Payment Configuration
Payment Configuration
array
控制 checkout 期间客户可使用的 payment methods。此字段有助于针对特定市场或业务要求进行优化。常见选项:
credit、debit、upi_collect、apple_pay、google_pay、amazon_pay、klarna、affirm、afterpay_clearpay、cashapp、ach、multibanco、bancontact_card、eps、ideal、blik、paypal。这并非完整集合——有关每个可接受值,请参阅 Create Checkout Session API reference。Example:string
使用固定的 billing currency 覆盖默认 currency 选择。使用 ISO 4217 currency codes。Supported Currencies:
USD、EUR、GBP、CAD、AUD、INR 等Example:"USD" 表示美元,"EUR" 表示欧元此字段仅在 adaptive pricing 启用时生效。如果 adaptive pricing 已禁用,则使用产品的默认 currency。
boolean
默认值:"false"
为回头客显示之前保存的 payment methods,从而提升 checkout 速度和用户体验。
Session Management
Session Management
string
payment 完成后用于重定向客户的 URL。Dodo Payments 会在重定向时向你的 URL 追加以下查询参数:
Example redirect URLs:
string
客户点击返回按钮或取消 checkout session 时用于重定向客户的 URL。如果未提供,则不会显示返回按钮。
boolean
默认值:"false"
如果为 true,则立即完成所有 session 详情。如果缺少必需数据,API 将抛出错误。
array
将一个或多个叠加的 discount codes 应用到 checkout session。代码按数组顺序应用(第一个代码降低基础价格,第二个代码降低已折扣的价格,依此类推),每个 session 最多可使用 20 个代码。
下面的单数
discount_code 字段已弃用,但仍完全受支持——现有 integrations 无需更改即可继续工作。它不能与同一 request 中的 discount_codes 组合使用。方便时请迁移到 discount_codes,以使用叠加功能。string
已弃用
已弃用——新 integrations 请优先使用
discount_codes。为保持向后兼容,此字段仍然有效,但不能与同一 request 中的 discount_codes 组合使用。object
用于存储 session 其他信息的自定义键值对。
boolean
覆盖此 session 的 merchant 默认 3DS 行为。
boolean
默认值:"false"
启用最小地址收集模式。启用后,checkout 仅收集:
- Country:税费确定始终必填
- ZIP/Postal code:仅在销售税、VAT 或 GST 计算需要的地区收集
string
属于已关联客户的已保存 payment method。需要
confirm: true 和现有的 customer.customer_id。设置后,charge 会立即处理,并将 checkout_url 作为 null 返回——请改用返回的 payment_id。boolean
默认值:"false"
如果为 true,则返回缩短的 checkout URL,而不是完整的 session URL。
string
基于 collection 的 checkout 流程所使用的产品 collection ID。
string
客户的 Tax ID(例如 VAT number)。需要
billing_address 以及一个 country。string
与 Tax ID 关联的可选 business 或 legal name。与有效的
tax_id 一起提供时,该名称会显示在 invoice 上,而不是客户的个人姓名。integer
覆盖 merchant-level mandate floor(以 INR paise 表示),用于印度银行卡上的 INR e-mandates。
Custom Fields
Custom Fields
array
通过自定义表单字段在 checkout 期间收集客户的其他信息。每个 checkout session 最多可定义 5 个自定义字段。客户响应会包含在 webhook payload 中,并可通过 API 获取。
客户对自定义字段的响应包含在:
- Webhooks:
payment.succeeded、subscription.active及其他相关 event payload 包含custom_field_responses数组 - API responses:Payment 和 subscription 对象包含
custom_field_responses
Subscription Configuration
Subscription Configuration
object
包含 subscription 产品的 checkout sessions 的其他配置。
Usage Examples
以下 10 个完整示例展示了适用于不同业务场景的 checkout session 配置:1. Simple Single Product Checkout
2. Multi-Product Cart
3. Subscription with Trial Period
4. Pre-confirmed Checkout
当
confirm 设置为 true 时,客户会直接进入 checkout page,跳过所有确认步骤。5. Checkout with Currency Override
仅当账户设置中启用了 adaptive currency 时,
billing_currency 覆盖值才会生效。如果 adaptive currency 已禁用,此参数不会产生任何影响。6. Saved Payment Methods for Returning Customers
7. B2B Checkout with Tax ID Collection
8. Dark Theme Checkout with Stacked Discount Codes
9. Regional Payment Methods (UPI for India)
有关 UPI 配置和测试的详细信息,请参阅 India Payment Methods 页面。10. BNPL (Buy Now Pay Later) Checkout
有关 BNPL 配置和测试的详细信息,请参阅 Buy Now Pay Later (BNPL) 页面。11. Using Existing Payment Methods for Instant Checkout
使用客户已保存的 payment method 创建一个立即处理的 checkout session,跳过 payment method 收集:Payment method 必须属于该客户,并且与 payment currency 兼容。这使回头客能够一键购买。
12. Short Links for Cleaner Payment URLs
使用自定义 slugs 生成更短且可分享的 payment links:13. Skip Payment Success Page with Immediate Redirect
在 payment 完成后立即重定向客户,跳过默认 success page:启用
redirect_immediately 后,客户会在 payment 完成后立即被重定向到你的 return_url,完全跳过默认 success page。14. Forcing a Language
强制 checkout 以指定语言显示,覆盖客户浏览器的语言检测:ar)、Catalan (ca)、Chinese (zh)、Dutch (nl)、English (en)、French (fr)、German (de)、Hebrew (he)、Indonesian (id)、Italian (it)、Japanese (ja)、Korean (ko)、Malay (ms)、Polish (pl)、Portuguese (pt)、Romanian (ro)、Russian (ru)、Spanish (es)、Swedish (sv)、Thai (th)、Turkish (tr)
15. Collecting Custom Fields
使用自定义字段在 checkout 期间收集客户的其他信息:自定义字段响应会自动包含在 webhook payload(
payment.succeeded、subscription.active 等)中,也可以通过 API 获取。你可以使用这些响应丰富 CRM、触发 onboarding 流程或自定义客户体验。text、number、email、url、date、dropdown、boolean
Previewing Checkout Sessions
创建 checkout session 之前,你可以预览包括税费、折扣和总额在内的价格明细。这有助于在客户继续 checkout 前显示准确的价格。当购物车包含 subscription 产品时,preview response 还会返回
next_billing_date——即 upcoming billing date 的预览,以便你在创建 subscription 前显示该日期。它相对于当前时间计算:适用 trial 时为 now + trial period,否则为 now + one payment frequency。仅包含一次性产品的购物车不会返回此字段。这是基于 preview 时间的估算;权威的 next_billing_date 会在 subscription 激活时设置。preview 还会返回
trial_period_days(实际 trial 时长,可为免费或付费)和 trial_amount(折扣后的每单位 trial charge,以价格 currency 的最小单位表示)。trial_amount 仅在付费 trial时存在;免费 trial 或无 trial 时为 null。使用 current_breakup 获取今天实际应付的含税总额。- Node.js SDK
- Python SDK
Preview API Reference
查看完整的 preview endpoint 文档。
Moving from Dynamic Links to Checkout Sessions
Key Differences
以前使用 Dynamic Links 创建 payment link 时,必须提供客户完整的 billing address。 使用 Checkout Sessions 后,这不再是必需的。你只需传递已有的信息,其余部分由我们处理。例如:- 如果只知道客户的 billing country,只需提供该信息。
- checkout flow 会在将客户转到 payment page 前自动收集缺失的详情。
- 另一方面,如果你已经拥有所有必需信息,并希望直接跳转到 payment page,则可以传递完整数据集,并在 request body 中包含
confirm=true。
Migration Process
从 Dynamic Links 迁移到 Checkout Sessions 非常简单:1
Update your integration
更新 integration,以使用新的 API 或 SDK method。
2
Adjust request payload
根据 Checkout Sessions 格式调整 request payload。
3
That's it!
是。不需要在你这边进行额外处理或特殊迁移步骤。
Related API Reference
Create Checkout Session
使用所有可用参数和选项创建 checkout sessions 的完整 API reference
Preview Checkout Session
在创建 session 前预览价格、税费和总额的 API reference