03 支付回调与履约确认

功能

微信把支付结果通知接入方后台。后台先验证通知签名,再核对商户号、订单、支付状态和实付金额。没通过就不要调用这个接口,也不要给用户发货。

核验通过后,这个接口告诉小鹅钱已经收到,小鹅才创建履约订单。用户此时仍停在接入方支付页。同一笔支付重试时,五个字段必须和第一次完全一致,小鹅会返回已有的 paid。

请求体没有收货地址。履约订单使用创建结算时锁定的地址。发货前如果地址变了,调用 同步订单地址。

接口

POST /open/api/v1/sdk/checkouts/:id/confirm-payment

鉴权:接入方后台 HMAC

调用方:接入方后台。路径里的 id 是结算会话号。

请求体

属性类型必填说明
external_user_idstring必填,最长 128付款用户在接入方的唯一 ID,和换 JWT、核对结算时是同一个。
partner_order_nostring必填,最长 64接入方自己的订单号。同一笔支付重试时不要换号。
transaction_idstring必填,最长 128已经核验过的微信支付流水。不要填未核验的单号。
paid_amount_centnumber必填用户实际支付的金额,单位分,不能为 0。
paid_atstring必填真实支付时间,带时区的 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"
}'