# Dodo 结账会话 (https://talivia.com/zh-CN/docs/revenue-guides/dodo-payments/checkout-session)



后端创建 Dodo 结账会话时使用此方案。Dodo 浮层结账和内嵌结账也从结账会话开始，因此同样适用。

在**网站设置 → 收入 → Dodo Payments**中连接账户，然后把当前 Talivia 会话放入结账元数据。

## 将会话加入结账元数据 [#将会话加入结账元数据]

在后端读取 Talivia 会话 Cookie，并将它合并到现有 Dodo 调用的 `metadata` 对象中。

```javascript title="创建 Dodo 结账会话"
const taliviaSessionId = request.cookies.get('talivia_session_id')?.value;

const checkout = await dodo.checkoutSessions.create({
  product_cart,
  return_url: 'https://your-site.com/thanks',
  metadata: {
    // Keep your existing metadata fields here.
    ...(taliviaSessionId && { talivia_session_id: taliviaSessionId }),
  },
});
```

`metadata` 是 Dodo 的标准元数据对象。请保留已有字段，只新增 `talivia_session_id`。Talivia 会从已验证的付款事件中读取该值并完成归因。

## 结账接口位于其他来源 [#结账接口位于其他来源]

如果浏览器代码调用其他来源的结账接口，请在请求中包含不透明的会话值：

```javascript title="浏览器移交结账"
const sessionId = window.talivia.getSessionId();

await fetch('https://api.your-site.com/create-checkout', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ sessionId }),
});
```

照常验证请求。后端创建结账会话时，将收到的值放入 `metadata.talivia_session_id`。会话编号是归因标识符，不是身份验证凭据。

服务商端选项请参阅 [Dodo 结账会话](https://docs.dodopayments.com/developer-resources/checkout-session)。

无需手动配置网络回调。

连接服务商时，Talivia 会配置并验证 Dodo 网络回调。
