03 支付回调与履约确认
功能
微信把支付结果通知接入方后台。后台先验证通知签名,再核对商户号、订单、支付状态和实付金额。没通过就不要调用这个接口,也不要给用户发货。
核验通过后,这个接口告诉小鹅钱已经收到,小鹅才创建履约订单。用户此时仍停在接入方支付页。同一笔支付重试时,五个字段必须和第一次完全一致,小鹅会返回已有的 paid。
请求体没有收货地址。履约订单使用创建结算时锁定的地址。发货前如果地址变了,调用 同步订单地址。
接口
POST /open/api/v1/sdk/checkouts/:id/confirm-payment
鉴权:接入方后台 HMAC
调用方:接入方后台。路径里的
id是结算会话号。
请求体
| 属性 | 类型 | 必填 | 说明 |
|---|---|---|---|
external_user_id | string | 必填,最长 128 | 付款用户在接入方的唯一 ID,和换 JWT、核对结算时是同一个。 |
partner_order_no | string | 必填,最长 64 | 接入方自己的订单号。同一笔支付重试时不要换号。 |
transaction_id | string | 必填,最长 128 | 已经核验过的微信支付流水。不要填未核验的单号。 |
paid_amount_cent | number | 必填 | 用户实际支付的金额,单位分,不能为 0。 |
paid_at | string | 必填 | 真实支付时间,带时区的 ISO 8601。必须落在结算会话有效期内。 |
返回值
成功时 code 为 0,data.status 为 paid,并带上履约订单号 order_no。
示例
curlbash
# 先设置 CHANNEL_ACCESS_KEY、CHANNEL_SECRET_KEY,并按接口说明计算 signature
curl --request POST 'https://api.channel.suiinn.com/open/api/v1/sdk/checkouts/checkout-id/confirm-payment' \
--header 'X-Channel-Key: $CHANNEL_ACCESS_KEY' \
--header 'X-Channel-Timestamp: $timestamp' \
--header 'X-Channel-Nonce: $nonce' \
--header 'X-Channel-Signature: $signature' \
--header 'Content-Type: application/json' \
--data-raw '{
"external_user_id": "your-user-id",
"partner_order_no": "P202601010001",
"transaction_id": "4200000000000000",
"paid_amount_cent": 9900,
"paid_at": "2026-01-01T00:00:00+08:00"
}'