Checkout 产品指南

托管收银台、Payment Intent、Refund、Webhook 事件和状态附录。接口细节见 API 参考。

概述

Stabo Checkout B2C Payment Intent API 面向 B2C 商户提供托管收银台能力。商户后端创建 Payment Intent 后,将客户跳转到 checkoutUrl 完成钱包支付;支付结果通过 Webhook 主动推送,商户也可以通过查询接口进行补查和对账。

通过本 API,可以实现以下功能:

  • Payment Intent 管理:创建支付意图、查询支付详情、分页查询支付列表
  • 托管收银台跳转:使用 checkoutUrl 引导客户完成钱包支付
  • 退款管理:创建退款、查询退款列表和退款详情
  • 实时通知:通过 Webhook 接收支付成功、取消等事件
  • 对账补偿:在 Webhook 异常或延迟时,通过查询接口补查最终状态

版本:v1.2

接口范围:Payment Intent、Refund、Webhook

特殊说明:金额使用标准单位十进制字符串,时间使用带时区偏移的 ISO 8601,枚举使用大写码值。详见通用约定的数据格式。

标准支付链路

步骤商户动作结果
1获取 Access Token获取 access_token
2创建 Payment Intent获取 checkoutUrl / clientSecret
3跳转托管收银台客户完成钱包支付
4接收 Webhook获得支付结果通知
5主动补查查询 Payment Intent / Refund 详情

API 一览

模块接口说明
Payment IntentPOST /openapi/v1/payment-intents创建 Payment Intent
Payment IntentGET /openapi/v1/payment-intents/{paymentIntentId}查询 Payment Intent 详情
Payment IntentGET /openapi/v1/payment-intents分页查询 Payment Intent
RefundPOST /openapi/v1/payment-intents/{paymentIntentId}/refunds创建 Refund
RefundGET /openapi/v1/payment-intents/{paymentIntentId}/refunds分页查询 Refund
RefundGET /openapi/v1/payment-intents/{paymentIntentId}/refunds/{refundId}查询 Refund 详情
Webhook商户配置的 HTTPS URL接收 Payment Intent 与 Refund 事件

每个接口的参数、响应和在线调试见 API 参考。

Webhook 事件

Webhook 是商户接收支付结果的主链路,查询接口用于补偿和对账。商户应提供可公网访问的 HTTPS URL,收到通知后返回 2xx 状态码。通知机制、请求头和签名验证见 Webhook。

事件类型

事件类型触发时机data.object
checkout.payment_intent.processing发现链上付款,等待确认(状态 PROCESSING)Payment Intent 对象
checkout.payment_intent.partially_paid已确认到账金额小于应付金额(状态 PARTIALLY_PAID)Payment Intent 对象
checkout.payment_intent.paid已足额到账,等待合规检查与入账(状态 PAID)Payment Intent 对象
checkout.payment_intent.succeeded已记入商户余额(状态 COMPLETED)Payment Intent 对象
checkout.payment_intent.canceled已取消或已过期(状态 CANCELED)Payment Intent 对象
checkout.refund.created退款已创建Refund 对象
checkout.refund.succeeded退款完成(状态 COMPLETED)Refund 对象
checkout.refund.failed退款失败(状态 FAILED)Refund 对象

事件类型 checkout.payment_intent.succeeded 对应的状态是 COMPLETED。请以 data.object.status 判断订单状态。

载荷

Payment Intent 事件的 data.object 与 GET /openapi/v1/payment-intents/{paymentIntentId} 返回的对象相同。

Refund 事件的 data.object 与查询 Refund 详情返回的对象相同。

载荷在状态变化提交后生成,反映已提交的状态。

处理建议

  • 按 data.object.paymentIntentId 或 data.object.referenceNo 更新本地订单。
  • 处理逻辑必须幂等。同一事件可能重复投递。
  • 未及时收到 Webhook 时,用查询接口补查。

通知示例

{
  "id": "evt_1Mxxx",
  "object": "event",
  "type": "checkout.payment_intent.succeeded",
  "created": 1778480710,
  "data": {
    "object": {
      "paymentIntentId": "pi_MNOL0POUV8IDPXCD",
      "status": "COMPLETED",
      "amount": "20.00",
      "currency": "USD",
      "referenceNo": "ORD-20260511-0001",
      "payments": [
        {
          "network": "Polygon",
          "currency": "USDT",
          "amount": "20.08",
          "txHash": "0x5f2c...a91e",
          "status": "CONFIRMED",
          "confirmedAt": "2026-05-11T14:18:02+08:00"
        }
      ],
      "receivedAmount": "20.00",
      "feeAmount": "0.30",
      "refundedAmount": "0.00",
      "hasRefund": false,
      "completedAt": "2026-05-11T14:25:10+08:00",
      "createdAt": "2026-05-11T14:12:34+08:00",
      "metadata": {}
    }
  }
}

附录

Payment Intent 状态

状态说明
AWAITING_PAYMENT等待客户付款
PROCESSING已发现链上付款,等待确认
PARTIALLY_PAID已确认到账金额小于应付金额
PAID已足额到账,等待合规检查与入账
COMPLETED已记入商户余额
CANCELED已取消,含过期。原因见 cancellationReason

Refund 状态

状态说明
PENDING_APPROVAL等待运营审批
PROCESSING已审批,链上退款执行中
COMPLETED退款完成
FAILED退款失败、被拒或已取消。原因见 failureReason

退款原因

枚举值说明
DUPLICATE重复支付或重复订单
FRAUDULENT欺诈或风险原因
REQUESTED_BY_CUSTOMER客户主动要求退款
OTHER其他原因

错误与支持

错误响应的口径见错误码。接入中的常见问题见常见问题。如需帮助,可通过 Stabo 客户经理或技术支持渠道联系,并提供 traceId。

本页目录