跳到主要内容

结账会话

结账会话代表客户进行付款时的会话。它是收集付款详细信息以创建一次性付款或订阅的主要机制。创建会话后,您需要将客户重定向到一个安全的、托管的支付页面。付款完成后,客户将被重定向回您的应用程序。

相关指南:一次性付款,订阅。

结账会话对象

结账会话对象包含有关支付流程的所有详细信息,包括订单项、支付状态和客户信息。

属性类型描述
idstring对象的唯一标识符。
urlstring您应将客户重定向到此 URL 以完成支付。
statusstring结账会话的状态。可以是 open、complete 或 expired。
payment_statusstring会话的支付状态。可以是 paid、unpaid 或 no_payment_required。
modestring结账会话的模式,决定了所收集的付款类型。可以是 payment、setup 或 subscription。
amount_subtotalstring所有订单项价格的总和。
amount_totalstring应用折扣和税费后的总金额。
currency_idstring用于支付的货币 ID。
customer_idstring此会话的客户 ID。
line_itemsarray客户正在购买的商品列表。
metadataobject您可以附加到对象上的一组键值对。
success_urlstring成功付款后重定向到的 URL。
cancel_urlstring如果客户取消会话,重定向到的 URL。
expires_atnumber结账会话将过期的 Unix 时间戳。

创建结账会话

为客户创建一个会话以输入其付款详细信息。

创建一个结账会话

javascript
const session = await payment.checkoutSessions.create({
  success_url: 'https://example.com/success',
  cancel_url: 'https://example.com/cancel',
  line_items: [
    {
      price_id: 'price_12345',
      quantity: 1,
    },
  ],
  mode: 'payment', // or 'subscription'
});

参数

名称类型描述
line_itemsarray必需。 订单项对象列表。有关详细信息,请参阅下方的 订单项属性 表。
success_urlstring必需。 客户成功付款后将被引导至的 URL。
cancel_urlstring必需。 如果客户取消付款,将被引导至的 URL。
allow_promotion_codesboolean启用促销代码。默认为 false。
billing_address_collectionstring指定是否收集客户的账单地址。可以是 auto 或 required。默认为 auto。
client_reference_idstring用于引用结账会话的唯一字符串。这可用于将会话与您的内部系统进行对账。
customer_idstring要与此会话关联的现有客户的 ID。
customer_creationstring确定如何处理客户创建。可以是 if_required 或 always。默认为 always。
expires_atnumber会话将在此 Unix 时间戳后过期。默认为自创建起 24 小时。
metadataobject一组用于存储有关对象的附加信息的键值对。
payment_intent_dataobject将用于创建底层 PaymentIntent 的数据。请参阅下方的 Payment Intent 数据属性 表。
subscription_dataobject如果会话处于 subscription 模式,将用于创建订阅的数据。请参阅下方的 订阅数据属性 表。
include_free_trialboolean如果为 true 且会话处于 subscription 模式,它将包含价格上定义的任何试用期。

订单项属性

名称类型描述
price_idstringPrice 对象的 ID。
quantitynumber正在购买的订单项数量。默认为 1。
adjustable_quantityobject允许客户在结账页面上调整此订单项的数量。包含 enabled (布尔值)、minimum (数字) 和 maximum (数字) 属性。

订阅数据属性

名称类型描述
descriptionstring订阅的可选描述。
trial_period_daysnumber订阅的试用天数。
metadataobject一组存储在订阅上的键值对。

返回

已创建的结账会话对象。

Response

json
{
  "id": "cs_123456789",
  "object": "checkout.session",
  "url": "https://checkout.example.com/pay/cs_123456789",
  "status": "open",
  "payment_status": "unpaid",
  "mode": "payment",
  "success_url": "https://example.com/success",
  "cancel_url": "https://example.com/cancel",
  "line_items": [
    {
      "price_id": "price_12345",
      "quantity": 1
    }
  ],
  "expires_at": 1678886400,
  // ... 其他属性
}

检索结账会话

检索现有结账会话的详细信息。

检索一个结账会话

javascript
const session = await payment.checkoutSessions.retrieve('cs_123456789');

参数

名称类型描述
idstring必需。 要检索的结账会话的唯一标识符。

返回

检索到的结账会话对象。

Response

json
{
  "id": "cs_123456789",
  "object": "checkout.session",
  "status": "complete",
  "payment_status": "paid",
  // ... 其他属性
}

更新结账会话

通过设置传入参数的值来更新结账会话对象。任何未提供的参数将保持不变。

更新一个结账会话

javascript
const session = await payment.checkoutSessions.update('cs_123456789', {
  metadata: {
    order_id: '6735'
  }
});

参数

名称类型描述
idstring必需。 要更新的会话 ID。
metadataobject一组存储在对象上的键值对。这是唯一可以更新的字段。

返回

更新后的结账会话对象。

列出所有结账会话

返回您的结账会话列表。会话按创建日期排序返回,最新的会话最先出现。

列出结账会话

javascript
const sessions = await payment.checkoutSessions.list({
  limit: 5,
  status: 'open'
});

参数

名称类型描述
statusstring按状态筛选会话。可以是 open、complete 或 expired。
payment_statusstring按支付状态筛选会话。可以是 paid、unpaid 或 no_payment_required。
customer_idstring仅返回给定客户 ID 的会话。
customer_didstring仅返回给定客户 DID 的会话。
payment_intent_idstring仅返回给定 PaymentIntent 的会话。
payment_link_idstring仅返回从给定支付链接创建的会话。
subscription_idstring仅返回给定订阅的会话。
metadata.{key}string按自定义元数据字段筛选。例如 metadata.order_id: '6735'。
pagenumber用于分页的页码。默认为 1。
pageSizenumber每页的项目数。默认为 20。

返回

一个包含结账会话对象 list 的分页对象。

Response

json
{
  "count": 15,
  "list": [
    {
      "id": "cs_123456789",
      "object": "checkout.session",
      "status": "open",
      // ... 其他属性
    },
    {
      "id": "cs_987654321",
      "object": "checkout.session",
      "status": "open",
      // ... 其他属性
    }
  ]
}

使结账会话过期

手动使结账会话过期。此操作不可逆。

使一个结账会话过期

javascript
const session = await payment.checkoutSessions.expire('cs_123456789');

参数

名称类型描述
idstring必需。 要使其过期的结账会话 ID。

返回

状态为 expired 的已过期结账会话对象。

Response

json
{
  "id": "cs_123456789",
  "object": "checkout.session",
  "status": "expired",
  // ... 其他属性
}