请求签名
使用商户密钥计算 HMAC-SHA256,签名随请求头发送。
请求头
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
X-App-Id | string | 是 | 商户 APPID,10 位数字,首位非 0 |
X-Timestamp | string | 是 | Unix 秒级时间戳,10 位数字;允许前后 300 秒偏差 |
X-Nonce | string | 是 | 32 位小写十六进制随机串;每次请求重新生成 |
X-Signature | string | 是 | HMAC-SHA256 签名,64 位小写十六进制 |
签名串
按以下顺序拼接,每行以 LF(\n)结束,包括最后一行:
text
HTTP方法 + "\n" +
请求路径 + "\n" +
APPID + "\n" +
时间戳 + "\n" +
随机串 + "\n" +
原始请求体 + "\n"- HTTP 方法使用大写
GET或POST。 - 路径包含原始查询字符串,例如
/v1/payment-orders?third_order_no=ORDER202610220001,不包含域名。 - GET 请求体为空,签名串以两个 LF 结束。POST 使用实际发送的原始 JSON 字节,签名后不重新格式化。
计算签名
将密钥字符直接作为 UTF-8 字节,不能先做十六进制解码。输出 64 位小写十六进制字符串:
text
signature = hex_lower(HMAC_SHA256(secret_utf8, canonical_utf8))将结果放入 X-Signature。密钥不随请求发送。完整可运行代码见开发资源。