本文档用于指导代理商如何对每一次 API 请求进行签名,并通过 EVJ 平台的鉴权校验。
| Header | 必填 | 说明 |
|---|---|---|
| X-Access-Key | 是 | 代理商的 API AccessKey |
| X-Timestamp | 是 | 当前 Unix 时间戳(秒) |
| X-Nonce | 是 | 唯一随机字符串(防重放) |
| X-Signature | 是 | HMAC-SHA256 签名值 |
StringToSign = timestamp + "|" + nonce + "|" + request_body1736501200|a93bd912abc8fe12|{"cardholder_name":"John"}timestamp 必须是 当前服务器时间(Asia/Shanghai) ± 5 分钟以内nonce 必须是 每次请求唯一(平台会检测是否重复)request_body 必须是 原始 JSON 字符串(不可格式化、不可加空格)signature = HMAC_SHA256(StringToSign, SecretKey)9d51a43e2c0d1a34f98bd1e2fcd213c76232dc3be...X-Access-Key: ak_XXXXXXXXXX
X-Timestamp: 1736501200
X-Nonce: a93bd912abc8fe12
X-Signature: 9d51a43e2c0d1a34...
Content-Type: application/json| 校验项 | 说明 |
|---|---|
| AccessKey 是否有效 | 校验是否存在且未禁用 |
| 时间戳是否超时 | 超过 ±300 秒拒绝请求 |
| nonce 是否重复 | 防止重放攻击 |
| 签名是否正确 | 比较 HMAC 结果 |
| Body 是否一致 | 必须使用原始 body |
| 错误原因 | 描述 |
|---|---|
| Body 经过格式化导致签名不一致 | 必须使用原始 JSON |
| 时间戳偏差太大 | 超过 5 分钟将拒绝 |
| nonce 重复使用 | 平台拒绝并记录安全日志 |
| 使用错误的 secret | 会导致签名验证失败 |
| 风控拒绝 | 同一IP短时间超过10次验签失败会封禁1小时 |