API 接口签名算法
第一步: 取得APP_KEY
APP_KEY
为每个客户应用APP_ID
对应的密钥,该密钥私有需内置到APP中
测试阶段可以使用如下信息
-
APP_ID
:aCzYY7atTK
APP_KEY
:GNZHisOx6aTkn7IL
第二步:取得当前请求参数
需要将body
参数(GET
请求时取query
参数)储存到一个集合,并对该集合中非空参数值的参数值
按照参数名ASCII码从小到大排序(字典序)使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA
,如果值是数组时,使用/a
代替该数组值。最后再将stringA
字符串进行urlencode
编码
第三步:取得当前时间戳
把当前时间戳记录为timestamp
,各语言获取当前时间戳方法参考 时间戳
第四步:生成随机字符串
随机字符串主要用来防止重复请求
可以随便取随机字符串,建议长度为4-32位之间。记录该值为 nonce_str
第五步:拼接签名字符串
将以上4步得到的字符串进行如下格式拼接,需要注意的是每种类型的字符串之间,使用竖线分割
APP_KEY
|stringA
|timestamp
|nonce
第六步:签名
将第五步取得的字符串进行MD5编码,并对其结果转为大写即可得到
sign
的参数值
签名信息的传递
-
完成签名后,需要将以上
第三步
、第四步
、第六步
取得的参数值传递到header请求头中参数 类型 是否必须 含义 说明 E-APP-TIMESTAMP string 是 参与加密的时间戳 时间戳以秒未单位,第三步得到的值 E-APP-NONCE string 是 参与加密的随机字符串 第四步得到的值 E-APP-SIGN string 是 签名字符串 第五步得到的值
-
每个签名生成后,有效期120秒,且在120秒签名不可重复,重发服务器将判定为非法的请求