指南

签名规范

签名口径是第三方对接最容易扯皮的地方,这里逐字节写死。

待签串(canonical)

  • METHOD 统一大写;PATH 是不带 query 的路径(如 /openapi/v1/detect)。
  • BODY 为空时按空串求 SHA256(结果固定为 e3b0c442...b855)。
  • 请求头:X-App-Key / X-Timestamp(毫秒)/ X-Nonce(随机串)/ X-Signature
  • 时间窗 ±5 分钟;nonce 在 10 分钟内不可重复,重复即按重放拒绝(40103)。
text
METHOD + "\n" + PATH + "\n" + TIMESTAMP + "\n" + NONCE + "\n" + SHA256_HEX(BODY)

signature = Base64( HMAC-SHA256( canonical, appSecret ) )

固定测试向量

下面这条向量在平台测试中逐字节固定,可直接用于你的 SDK 自测。

methodPOST
path/openapi/v1/detect
timestamp1800000000000
nonceabc123
body{"cameraId":7,"algorithms":["INTRUSION"]}
appSecretjqvision-openapi-test-secret
body sha256cedcce369d67c5501f346b17adc8b66d3ba419f0e75d973b969dfd06e1cae669
signaturenEE0SjT7OYuVjeeojowJ1NNhB427ObEGG1VErdlLyd4=

回调(Webhook)签名

回调会禁止跟随重定向、限制超时与响应体大小;投递失败会按指数退避重试(默认最多 5 次),控制台可查看投递日志与手动重放。

text
canonical = TIMESTAMP + "\n" + BODY
signature = Base64( HMAC-SHA256( canonical, 订阅 secret ) )
请求头:X-Jq-Timestamp / X-Jq-Signature