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.Prerequisites
1
Dodo Payments Account
You’ll need an active Dodo Payments merchant account with API access.
2
API Credentials
Generate your API credentials from the Dodo Payments dashboard:
3
Products Setup
Create your products in the Dodo Payments dashboard before implementing checkout sessions.
Creating Your First Checkout Session
- Node.js SDK
- Python SDK
- REST API
API Response
All methods above return the same response structure:1
Get the checkout URL
Extract the
checkout_url from the API response.2
Redirect your customer
Direct your customer to the checkout URL to complete their purchase.
3
Handle the return
After payment, customers are redirected to your
return_url with query parameters including payment/subscription ID, status, customer email, and any license keys. See the return_url parameter docs for the full list.Request Body
Required Fields
Essential fields needed for every checkout session
Optional Fields
Additional configuration to customize your checkout experience
Required Fields
Array of products to include in the checkout session. Each product must have a valid
product_id from your Dodo Payments dashboard.可选字段
配置这些字段以自定义结账体验,并将业务逻辑添加到您的支付流程中。Customer Information
Customer Information
Payment Configuration
Payment Configuration
控制在结账时可用给客户的支付方式。这有助于优化特定市场或业务需求。可用选项:
credit, debit, upi_collect, apple_pay, google_pay, amazon_pay, klarna, affirm, afterpay_clearpay, cashapp, multibanco, bancontact_card, eps, ideal, przelewy24, paypal, sunbit示例:使用固定的计费货币覆盖默认的货币选择。使用 ISO 4217 货币代码。支持货币:
USD、EUR、GBP、CAD、AUD、INR 等示例:"USD" 表示美元,"EUR" 表示欧元此字段仅在启用自适应定价时有效。如果禁用了自适应定价,则将使用产品的默认货币。
显示返回客户之前保存的支付方式,以改善结账速度和用户体验。
Session Management
Session Management
付款完成后重定向客户的 URL。Dodo Payments 会在重定向时将以下查询参数附加到您的 URL:
重定向 URL 示例:
客户点击返回按钮或取消结账会话时的重定向 URL。如果未提供,则不显示返回按钮。
如果为 true,则立即确定所有会话详情。如果需要的数据缺失,API 将抛出错误。
将一个或多个叠加优惠码应用于结账会话。优惠码按照 数组顺序 应用(第一个代码减少基础价格,第二个代码减少已折扣的价格,以此类推),每个会话最多可应用 20 个优惠码。
下面的单一
discount_code 字段已 弃用,但仍然完全支持——现有集成可以继续无需更改地工作。它不能与同一请求中的 discount_codes 结合使用。请在方便时迁移到 discount_codes 以利用堆叠优势。已弃用 — 新集成优先使用
discount_codes。此字段仍可用于向后兼容,但不能与同一请求中的 discount_codes 结合使用。自定义键值对以存储有关会话的附加信息。
覆盖此会话的商家默认 3DS 行为。
启用最小地址收集模式。启用后,结账仅收集:
- 国家:始终确定税的必要条件
- ZIP/邮政编码:仅适用于需要销售税、增值税或消费税计算的地区
Custom Fields
Custom Fields
在结账时使用自定义表单字段收集来自客户的额外信息。您可以在每个结账会话中定义最多 5 个自定义字段。客户的响应包含在 webhook 负载中,并可通过 API 获取。
客户对自定义字段的响应包含在:
- Webhooks:
payment.succeeded,subscription.active, 和其他相关事件负载中包含custom_field_responses数组 - API 响应:支付和订阅对象包含
custom_field_responses
Subscription Configuration
Subscription Configuration
包含订阅产品的结账会话的附加配置。
使用示例
以下是展示不同业务场景下结账会话配置的10个综合示例:1. 简单单产品结账
2. 多件商品购物车
3. 带试用期的订阅
4. 预确认结账
当
confirm 设为 true 时,客户将被直接带到结账页面,跳过任何确认步骤。5. 带货币覆盖的结账
billing_currency 覆盖仅在您的账户设置中启用适应性货币时生效。如果适应性货币被禁用,则此参数将无效。6. 为回头客保存的付款方式
7. B2B 结账带税号收集
8. 带叠加折扣代码的暗色主题结账
9. 区域支付方法(适用于印度的 UPI)
有关 UPI 配置和测试的详细信息,请参阅 印度支付方法 页面。10. BNPL(先买后付)结账
有关 BNPL 配置和测试的详细信息,请参阅 先买后付(BNPL) 页面。11. 使用现有支付方式进行即时结账
使用客户的保存支付方式创建一个立即处理的结账会话,跳过支付方式收集:支付方式必须属于客户,并与支付货币兼容。这使得回头客可以进行单击购买。
12. 简短链接用于更清晰的支付 URL
生成带有自定义后缀的简短、可分享的支付链接:13. 跳过付款成功页面并立即重定向
在支付完成后立即重定向客户,跳过默认成功页面:当启用
redirect_immediately 时,客户将在支付完成后立即重定向到您的 return_url,完全跳过默认成功页面。14. 强制语言
强制结账页面显示特定语言,覆盖客户的浏览器语言检测:ar), 加泰罗尼亚语 (ca), 中文 (zh), 荷兰语 (nl), 英语 (en), 法语 (fr), 德语 (de), 希伯来语 (he), 印度尼西亚语 (id), 意大利语 (it), 日语 (ja), 韩语 (ko), 马来语 (ms), 波兰语 (pl), 葡萄牙语 (pt), 罗马尼亚语 (ro), 俄语 (ru), 西班牙语 (es), 瑞典语 (sv), 泰语 (th), 土耳其语 (tr)
15. 收集自定义字段
在结账时使用自定义字段收集来自客户的额外信息:自定义字段响应会自动包含在 webhook 负载(
payment.succeeded, subscription.active,等)中,并可通过 API 获取。使用它们来丰富您的 CRM,触发上手流程,或自定义客户体验。text, number, email, url, date, dropdown, boolean
预览结账会话
在创建结账会话之前,您可以预览包括税费、折扣和总计在内的定价明细。这对于在客户进行结账之前显示准确的定价是有用的。- Node.js SDK
- Python SDK
Preview API Reference
查看完整的预览端点文档。
从动态链接迁移到结账会话
关键区别
以前,在使用动态链接创建支付链接时,您需要提供客户的完整账单地址。 使用结账会话,这已不再必要。您可以直接传递您拥有的任何信息,其余的我们会处理。例如:- 如果您只知道客户的账单国家,只需提供该信息即可。
- 结账流程将自动收集缺失的详细信息,然后才将客户移动到付款页面。
- 另一方面,如果您已经拥有所有必需信息,并希望直接跳到付款页面,可以传递完整的数据集并在请求正文中包含
confirm=true。
迁移过程
从动态链接迁移到结账会话很简单:1
Update your integration
更新您的集成以使用新的 API 或 SDK 方法。
2
Adjust request payload
根据 Checkout Sessions 格式调整请求负载。
3
That's it!
是的。您的端不需要任何额外处理或特殊迁移步骤。
相关 API 参考
Create Checkout Session
创建结账会话的完整 API 参考,包含所有可用参数和选项
Preview Checkout Session
在创建会议之前预览定价、税收和总计的 API 参考