跳转到内容

鉴权(HMAC)

所有 API(POST /v1/paymentsGET /v1/payments/:paymentId)均需携带下列请求头。

签名原文(按顺序用换行 \n 拼接):

timestamp + "\n" + METHOD + "\n" + path + "\n" + sha256(rawBody)
  • timestamp:Unix 秒;与服务器时间差不得超过 5 分钟
  • path:URL 路径(含前导 /不含 query),例如 /v1/payments/v1/payments/p_01HXXX
  • rawBody:原始请求体字节;GET 无 body 时,对空字符串做 SHA-256,取 hex。
  • SignatureHMAC-SHA256(apiSecret, 上述原文).hex()
Content-Type: application/json
Authorization: Influx-HMAC-SHA256 ApiKey=<ApiKey>,Timestamp=<unix秒>,Signature=<hex>

Content-Type 在 POST 时必填;GET 可不传 body,建议仍带此头。

POST {baseUrl}/v1/payments
Content-Type: application/json
Authorization: Influx-HMAC-SHA256 ApiKey=ak_live_xxx,Timestamp=1714291200,Signature=a1b2c3...
{"orderNo":"ORDER-001","tokenSymbol":"USDT","amount":"10.50","expireSec":1800,"notifyUrl":"https://merchant.example.com/webhook"}
GET {baseUrl}/v1/payments/p_01HXXX
Authorization: Influx-HMAC-SHA256 ApiKey=ak_live_xxx,Timestamp=1714291200,Signature=d4e5f6...

无请求体;签名中的 body 哈希为空字符串的 SHA-256 hex。

{
"error": "UNAUTHORIZED",
"message": "Merchant HMAC authorization is required"
}

message 会说明具体原因(缺头、签名错误、时间窗超限等)。更多错误码见 错误码