本文将带领您了解后端的托管式结账流程,并且提供了详细的分布指南,帮助您将托管式结账模式 (Hosted checkout)集成到您的网站或应用程序中。
结账流程
- 当客户准备购买时,其结账请求将从您的客户端发送至您的服务端。服务端将使用Subotiz API创建一个结账会话(Checkout session)。
- 创建的结账会话将提供一个URL,即Subotiz托管的结账页面,客户将被重定向到该页面。
- 客户在Subotiz托管的结账页面上填写付款信息、联系信息等并完成结账。
- Subotiz通过Webhook将支付结果通知您的服务端。
开始之前
创建商品和定价
Subotiz提供创建产品和产品定价的平台,其信息将保存在服务器上。不过,结账会话会使用
产品定价的pricing_id来动态获取产品信息,因此你需要创建一个产品和至少一个相关的产品定价,以便传递到结账流程中。-
创建商品:
- 创建商品定价:
接入步骤
- 提供支付成功或取消支付页面
您的应用程序需要准备两个公开可访问的页面URL:
- 客户成功付款后将被重定向到的页面URL;
- 如果客户取消付款,将被重定向到的页面URL;
(两者允许使用同一页面)
- 提供 webhook 通知地址
创建一个事件接收地址来接收您账户的事件。当事件发生(例如,成功支付)时,Subotiz将向Webhook端点发送一个包含JSON格式事件对象的HTTPS POST请求。您可以使用这些事件来保持您系统的业务数据同步。
- 提供创建结账会话的入口
您的系统客户端需要一个入口来启动结账流程,例如订单预览页面上的“结账”按钮。当客户点击此按钮时,您的服务器应调用Subotiz API来创建一个结账会话,并根据订单信息修改API调用参数。创建结账会话时传递的参数决定了客户在结账页上看到的内容(例如,商品信息、订单价格等)。待API响应后,将客户重定向到Subotiz结账页。
示例:在托管模式下创建结账会话
curl --location 'https://api.subotiz.com/api/v1/session' \
--header 'Content-Type: application/json' \
--header 'Hub-Timestamp: 1756513740897' \
--header 'Hub-Access-No: 77d52a21dc032b4' \
--header 'Request-Id: 9913dca8-90f8-4e20-98bc-565f0222ffa8' \
--header 'Hub-Signature: 75c8bfd1cac3c68d2bcf05bc36c913e36577d8d97bc08fba9ce67551808480eb'
--data-raw '{
"access_no": "77d52a21dc032b4",
"sub_merchant_id": "2816433",
"order_id": "123e4567-zzzaa20daw11a",
"payer_id": "customer_id_0012",
"line_items": [
{
"price_id": "543321366326164797",
"quantity": "1"
}
],
"email": "zhangsan@subotiz.com",
"callback_url": "https://webhook.site/a5ea4995-8438-4ba4-affe-0f95ffac26ss",
"integration_method": "hosted",
"cancel_url": "https://www.subotiz.com",
"return_url": "https://www.subotiz.com"
}'
关键参数:
order_id:您平台的内部订单ID,用于后续关联业务数据integration_method:设置为hosted以使用托管页面集成模式cancel_url:如果客户在Subotiz结账页面取消付款,将被重定向到的页面URLreturn_url:客户在Subotiz结账页面成功付款后被重定向到的页面URL
结账成功后,Subotiz会将客户重定向回您的成功页面(
return_url),完成一次完整的结账流程。此外,Subotiz会向您的服务器端点发送Webhook通知,使您能够在Subotiz后台处理成功订阅之后的逻辑,例如更新订单状态或激活订阅。