Skip to main content

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.
一次性链接:API 返回的 checkout_url 不可重复使用,并会在 24 小时内过期(当 confirm=true 时为 15 分钟)。该链接 предназначен for a single customer to complete one payment. 请为每位客户和每次支付尝试生成新的 checkout session,而不是共享或重复使用链接。

前置条件

1

Dodo Payments Account

你需要拥有一个已启用且可访问 API 的 Dodo Payments 商户账户。
2

API Credentials

从 Dodo Payments 控制面板生成 API 凭证:
3

Products Setup

在实现 checkout session 之前,请先在 Dodo Payments 控制面板中创建产品。

创建第一个 Checkout Session

API 响应

以上所有方法均返回相同的响应结构:
只有 session_id 可以保证存在。以下两种情况会返回额外字段或字段更少:
  • 已提供 payment_method_id — 该 charge 会立即处理,且 checkout_urlnull。请改用返回的 payment_id
  • confirm: true 在创建 session 时创建了 payment — 响应还会包含 payment_idclient_secretpublishable_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 以完成购买。
Alternative Integration Options:除了重定向之外,你还可以使用 Overlay Checkout(模态覆盖层)或 Inline Checkout(完全嵌入)将 checkout 直接嵌入页面。在原生移动应用中,可将同一 URL 传递给适用于 Android、iOS、React Native 或 Flutter 的 Mobile Checkout SDKs。这些方式都使用相同的 checkout session 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
Mixed Checkout:你可以在同一个 checkout session 中组合一次性 payment 产品和 subscription 产品。这支持多种强大用例,例如 subscription 的设置费、硬件与 SaaS 的组合套餐等。
Find Your Product IDs:你可以在 Dodo Payments dashboard 的 Products → View Details 中找到产品 ID,也可以使用 List Products API

Optional Fields

配置这些字段可以自定义 checkout 体验,并为 payment 流程添加业务逻辑。
object
客户信息。你可以使用客户 ID 关联现有客户,也可以在 checkout 期间创建新的客户记录。
使用客户 ID 将现有客户关联到 checkout session。
object
用于准确计算税费、防止欺诈并满足监管合规要求的 billing address 信息。
confirm 设置为 true 时,所有 billing address 字段都必须填写,session 才能成功创建。
array
控制 checkout 期间客户可使用的 payment methods。此字段有助于针对特定市场或业务要求进行优化。常见选项creditdebitupi_collectapple_paygoogle_payamazon_payklarnaaffirmafterpay_clearpaycashappachmultibancobancontact_cardepsidealblikpaypal。这并非完整集合——有关每个可接受值,请参阅 Create Checkout Session API reference
Critical:始终将 creditdebit 作为备用选项,以便在首选 payment methods 不可用时避免 checkout 失败。
Example
string
使用固定的 billing currency 覆盖默认 currency 选择。使用 ISO 4217 currency codes。Supported CurrenciesUSDEURGBPCADAUDINRExample"USD" 表示美元,"EUR" 表示欧元
此字段仅在 adaptive pricing 启用时生效。如果 adaptive pricing 已禁用,则使用产品的默认 currency。
boolean
默认值:"false"
为回头客显示之前保存的 payment methods,从而提升 checkout 速度和用户体验。
string
payment 完成后用于重定向客户的 URL。Dodo Payments 会在重定向时向你的 URL 追加以下查询参数:Example redirect URLs:
使用 license_keyemail 查询参数,可以在返回页面上显示 license keys 或立即发送确认,而无需额外的 API 调用。
string
客户点击返回按钮或取消 checkout session 时用于重定向客户的 URL。如果未提供,则不会显示返回按钮。
设置 cancel_url,为客户提供一种明确的方式返回你的网站而不完成购买。这可以改善 checkout 体验并减少操作阻力。
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 计算需要的地区收集
通过删除不必要的表单字段,此功能可以显著减少 checkout 阻力。
启用最小地址收集,以更快完成 checkout。对于需要完整 billing 详情的企业,仍可使用完整地址收集。
string
属于已关联客户的已保存 payment method。需要 confirm: true 和现有的 customer.customer_id。设置后,charge 会立即处理,并将 checkout_url 作为 null 返回——请改用返回的 payment_id
如果为 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。
object
自定义 checkout 界面的外观和行为。
object
配置 checkout session 的特定功能和行为。
array
通过自定义表单字段在 checkout 期间收集客户的其他信息。每个 checkout session 最多可定义 5 个自定义字段。客户响应会包含在 webhook payload 中,并可通过 API 获取。
客户对自定义字段的响应包含在:
  • Webhookspayment.succeededsubscription.active 及其他相关 event payload 包含 custom_field_responses 数组
  • API responses:Payment 和 subscription 对象包含 custom_field_responses
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_id 时,必须将 confirm 设置为 true,并提供现有的 customer_id。系统会根据 payment 的 currency 验证 payment method 是否符合条件。由于 charge 会立即处理,checkout_url 会作为 null 返回——请改用返回的 payment_id
Payment method 必须属于该客户,并且与 payment currency 兼容。这使回头客能够一键购买。
使用自定义 slugs 生成更短且可分享的 payment links:
Short links 非常适合通过 SMS、email 或社交媒体分享。它们比长 URL 更容易记忆,也能建立更多客户信任。

13. Skip Payment Success Page with Immediate Redirect

在 payment 完成后立即重定向客户,跳过默认 success page:
当你拥有比默认 payment success page 提供更佳用户体验的自定义 success page 时,请使用 redirect_immediately: true。这对于移动应用和嵌入式 checkout 流程尤其有用。
启用 redirect_immediately 后,客户会在 payment 完成后立即被重定向到你的 return_url,完全跳过默认 success page。

14. Forcing a Language

强制 checkout 以指定语言显示,覆盖客户浏览器的语言检测:
当你知道客户的首选语言(例如来自其账户设置),或面向特定地区市场时,请使用 force_language
Supported languages: Arabic (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.succeededsubscription.active 等)中,也可以通过 API 获取。你可以使用这些响应丰富 CRM、触发 onboarding 流程或自定义客户体验。
Available field types: textnumberemailurldatedropdownboolean

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 获取今天实际应付的含税总额。

Preview API Reference

查看完整的 preview endpoint 文档。

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!

是。不需要在你这边进行额外处理或特殊迁移步骤。

Create Checkout Session

使用所有可用参数和选项创建 checkout sessions 的完整 API reference

Preview Checkout Session

在创建 session 前预览价格、税费和总额的 API reference
最后修改于 2026年8月17日