Skip to content

回调验签

平台只对交易 SUCCESS 发送回调,签名规则与商户请求一致(HMAC-SHA256 + Base64)。

回调 Headers

Header必填说明
X-Merchant-Id商户主键 ID
X-TimestampUnix 时间戳(毫秒)
X-Nonce32 位随机字符串
X-SignHMAC-SHA256 签名(Base64)

HTTP Header 名称不区分大小写。

签名算法

签名串固定顺序(| 分隔):

timestamp|nonce|rawBody

签名计算:

signature = Base64(HMAC_SHA256(SignData, merchant_secret))

rawBody 为实际接收的原始 JSON 字符串,不可二次格式化或重排字段。

回调示例

json
{
  "payNo": "P202312230001",
  "tradeNo": "T202312230001",
  "merchantOrderNo": "ORDER_001",
  "amount": 10000,
  "currency": "USD",
  "tradeStatus": "SUCCESS",
  "finishTime": 1734921000000,
  "notifyTime": 1734921005000
}

验签步骤

  1. 读取 Headers 中的 X-TimestampX-NonceX-Sign
  2. 使用原始请求体拼接签名串并计算签名。
  3. 比对计算结果与 X-Sign 是否一致。

处理建议

  • 必须先验签再处理业务逻辑。
  • 回调可能重复发送,需做幂等处理。
  • 处理完成后尽快返回 200 OK,避免平台重试。