Skip to content

订单支付结果通知(Webhook)

当订单状态变为「完成」(status = 1)后,平台将向创建订单时提供的 notify_url 发起异步 HTTP POST 通知。

基础约定

  • 请求方式:POST
  • 请求头:Content-Type: application/json
  • 请求体:JSON
  • 成功判定:以 HTTP 状态码为准,商户必须返回 HTTP 200
  • 通知可能重复:请按幂等方式处理

来源 IP 校验(强制)

商户侧必须对 Webhook 请求做来源 IP 校验(白名单)。

安全校验

当前通知体会包含 api_key 字段用于校验来源合法性。

  • 仅接收 HTTPS
  • 在网关/防火墙侧限制来源 IP(强制)
  • 校验 api_key 是否与平台分配给你的密钥一致

通知参数(JSON)

参数名类型说明
order_nostring平台订单号
trade_nostring商户侧订单号
amountstring金额(单位元)
merchant_nostring商户号
statusint订单状态
api_keystring商户密钥(用于校验)

示例通知

json
{
  "order_no": "SY20250630171835855368",
  "trade_no": "external_order_1234567222922",
  "amount": "100.00",
  "merchant_no": "1751266106011309940263252",
  "status": 1,
  "api_key": "******"
}

幂等处理

  • 幂等键建议使用 order_no(或 trade_no
  • 建议将「是否处理成功」写入持久化存储,重复通知直接返回 HTTP 200

响应规范

  • 成功:返回 HTTP 200(响应体可为空或返回 JSON)
  • 失败:返回非 200 或超时会被视为失败,平台将触发重试

重试机制

  • 触发条件:HTTP 非 200、网络超时、连接失败
  • 重试策略:指数退避重试(可能跨分钟/小时级间隔),最长可持续到平台重试窗口结束
  • 重试期间通知可能乱序/重复,商户必须按幂等方式处理