签名
为保证安全,JUSTAP 所有接口均需要对请求进行签名。服务器收到请求后进行签名的验证。如果签名验证不通过,将会拒绝处理请求,并返回 401 Unauthorized。
签名算法: base64Encode(hamc-sha256(md5(请求 body + 请求时间戳 + 一次性随机字符串) + 一次性随机字符串))
准备
首先需要在 Justap 创建一个应用,商户需要生成一对 RSA 密钥对,并将公钥配置到 商户中心 -> 开发配置
。 RSA 可以使用支付宝提供的 密钥生成工具 来生成。 商户在使用时,可以按照下述步骤生成请求的签名。
算法描述
- 在请求发送前,取完整的请求 body
- 生成一个随机的32位字符串,得到 一次性随机字符串
- 获取当前时间的时间戳,得到 请求时间戳
- 在请求字符串后面拼接上 请求时间戳 和 一次性随机字符串,得到 待 Hash 字符串
- 对 待 Hash 字符串 计算 md5,得到 待签名字符串
- 待签名字符串 后面拼接上 一次性随机字符串,得到完整的 待签名字符串
- 使用商户 RSA 私钥,对 待签名字符串 计算签名,并对 结果 进行 base64 编码,即可得到 签名
设置HTTP头
Justap 要求请求通过 自定义头部 来传递签名。具体定义如下:
X-Justap-Signature: 签名
X-Justap-Request-Time: 请求时间戳
X-Justap-Nonce: 一次性随机字符串
X-Justap-Body-Hash: 待签名字符串
X-Justap-Api-Key: api key
具体的签名算法实现,可参考我们提供的各语言 SDK。