如果你正在做跨境电商、SaaS 或任何需要面向全球用户收款的数字业务,你一定听说过 checkout。这家总部位于伦敦的支付平台,覆盖全球超过 170 个国家和地区,支持 150 多种货币和数十种本地支付方式。更重要的是,它用一套设计高度统一的 REST API 和嵌入式结账组件 Flow,让开发者可以在几分钟内搭建完全 PCI 合规的收银台,无需触碰任何敏感卡片数据。
今天,我们就基于 checkout 最新官方文档,拆解它的核心能力、技术优势以及几个最实用的接口。
checkout 是什么?它凭什么成为头部玩家的首选?
checkout 的定位从来不是简单的“支付网关”,而是一套完整的**支付基础设施**。它把收单、风控、3D Secure 认证、令牌化、退款、支付链接等功能全部整合到一个平台上。商户只需对接一套 REST API,就能在全球范围内处理复杂的支付流程。
对开发者来说,checkout 有几个特别吸引人的优点:
1. Flow 嵌入式结账,PCI 合规零负担
checkout 提供了名为 **Flow** 的预构建支付 UI 组件。你只需要在自己的结账页面上挂载这个组件,它就会自动渲染所有可用的支付方式(Visa、Mastercard、Apple Pay、Google Pay、PayPal、Klarna 等),并处理所有敏感信息的采集和令牌化。卡片数据永远不会到达你的服务器,PCI 合规压力降到最低。
2. Payment Session 模型,前后端分离优雅
发起支付前,后端先调用 `POST /payment-sessions` 创建一个 Payment Session,返回一个一次性令牌 `payment_session_token`。前端拿到这个令牌后,用它初始化 Flow 组件。整个过程中,前端不直接接触商户的 Secret Key,安全设计非常合理。
3. Unified Payments API,一张卡多种用法
checkout 的支付 API 支持多种付款来源:通过 Flow 生成的 token、卡组织生成的 network_token、已存储的支付工具 id,甚至是完整的卡号(需 SAQ D 级别 PCI 合规)。这意味着不管你是新接入的商户,还是已经在用卡组织网络令牌的成熟团队,都能用同一套 API 处理支付。
4. 完整的后支付功能与强大搜索能力
退款(Refund)、撤销(Void)、取消(Reverse)等操作全部 REST 化,响应结构清晰,支持幂等键防重复。文档中还提供了一个强大的支付搜索接口,你可以用灵活的查询语法精确筛选交易,这在财务对账和异常排查中非常实用。

核心接口实战:从创建 Payment Session 到接收 Webhook
以下示例均基于 checkout 的沙箱环境。API 基础 URL 包含你账户专属的 prefix,可在 Dashboard 中获取。
1. 后端创建 Payment Session
curl -X POST https://{prefix}.api.sandbox.checkout/payment-sessions \
-H "Authorization: sk_xxx" \
-H "Content-Type: application/json" \
-d '{
"amount": 1000,
"currency": "GBP",
"reference": "ORD-123A",
"billing": {
"address": {
"country": "GB"
}
},
"customer": {
"name": "Jordan Smith",
"email": "[email protected]"
},
"success_url": "https://yoursite.com/success",
"failure_url": "https://yoursite.com/failure"
}'
响应中的 `id` 是 session 的唯一标识,`payment_session_token` 是前端挂载 Flow 组件必需的凭证。
2. 前端挂载 Flow 组件
const checkout = await CheckoutWebComponents({
paymentSession: paymentSessionToken,
publicKey: 'pk_xxx',
environment: 'sandbox'
});
const flowComponent = checkout.create('flow');
flowComponent.mount('#flow-container');
Flow 会自动渲染所有符合条件的支付方式。用户选择卡支付后,Flow 内部完成卡片令牌化并发起扣款。如果发卡行要求 3D Secure 认证,Flow 也会自动处理挑战弹窗或重定向,开发者无需额外编写任何逻辑。
3. 监听同步支付完成事件
对于不需要重定向的支付方式(如普通卡支付),Flow 会在支付完成后触发 `onPaymentCompleted` 回调:
const checkout = await CheckoutWebComponents({
paymentSession,
publicKey,
onPaymentCompleted: (_self, paymentResponse) => {
console.log('Payment ID:', paymentResponse.id);
// 显示成功提示,等待 Webhook 最终确认
}
});
```
对于需要重定向的支付方式(如 PayPal、部分 3DS 流程),用户会被引导回 `success_url`,URL 参数中会携带 `cko-payment-id`,你可以在后端调用查询接口获取详情。

4. 退款与查询
退款接口非常简洁:
curl -X POST https://{prefix}.api.sandbox.checkout/payments/{paymentId}/refunds \
-H "Authorization: sk_xxx" \
-H "Content-Type: application/json" \
-d '{
"amount": 6540,
"reference": "REFUND-001"
}'
退款异步处理,最终结果通过 Webhook 通知。如果需要根据特定条件批量查询交易,可以使用搜索接口:
curl -X POST https://{prefix}.api.sandbox.checkout/payments/search \
-H "Authorization: sk_xxx" \
-H "Content-Type: application/json" \
-d '{
"query": "id:'\''pay_mbabizu24mvu3mela5njyhpit4'\''",
"limit": 10
}'
搜索接口支持复杂的查询语法,可以按金额、状态、时间范围等维度筛选,非常适合财务团队对账。
总结
checkout 是那种“越用越顺”的支付平台。它的 Flow 组件让前端集成几乎零门槛,Payment Session 模型在安全性和开发效率之间取得了优雅的平衡,而统一支付 API 则让卡、令牌、网络令牌三种支付来源可以用完全相同的方式处理。对于有全球化支付需求的团队,它几乎是一个“一站式终点站”。
现在就可以去 checkout 注册一个沙箱账号,用文档中的测试卡号(4242 4242 4242 4242)跑通你的第一笔 GBP 交易。当你在几分钟内看到一个完整的结账页面出现在自己网站上时,你会明白为什么那么多头部企业选择了 checkout。
文章评论