签名规则

通兑吧与开发者之间进行接口交互请求,都会包含签名参数,链接中签名参数的生成,都是通过MD5生成的签名参数,以确保请求安全。

API签名算法

第一步

将请求的 GET 参数按照参数名 ASCII 码从小到大排序 ( 字典序 ) ,使用 URL 键值对的格式 ( 即

key1=value1&key2=value2… ) 拼接成字符串 stringA

特别注意以下重要规则:

1.参数名ASCII码从小到大排序 ( 字典序 )

2.如果文档上无特殊说明,请求的GET参数都参与签名

3.如果参数的值为空也要参与签名

4.参数名区分大小写

5.传送的 sign 参数不参与签名,将生成的签名与该 sign 值作校验

6.必须要有 appKey, timestamp, nonceStr 这几个参数

7.appKey 的值在后台获取

8.timestamp 的值会与服务器的时间作比较,timestamp 对应的时间如果超过服务器的时间

10 分钟,则接口请求会因为超时而失败

9.nonceStr 参数主要是为了保证签名不可预测以及每次算出来的签名只能用一次,我们推荐生成随机数算法如下:调用随机数函数生成,将得到的值转换为字符串。要确保1个小时内使用的 nonceStr 不重复,nonceStr 长度最大不超过32位

第二步

在 stringA 最后拼接上 appSecret 得到 stringB , 并对 stringB 进行 MD5 运算, 就得到 sign 参数的值

示例

为了方便开发者对签名方法进行测试验证,下面举例说明签名规则和签名方法。

1.假设请求的链接为: https://points-mall.henshihui.com/user/login/auto-login

2.请求的参数为:unionId = 10000

加上 appKey,timestamp,nonceStr 这些必要参数,则参与签名的参数如下:

 unionId = 10000;
 appKey = "5d8083dd7e37d";
 timestamp = 1568727896;
 nonceStr = "c6I0gQU1nhH6GTStBwwZr9cWarzprV4F"

对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:

stringA=
"appKey=5d8083dd7e37d&nonceStr=c6I0gQU1nhH6GTStBwwZr9cWarzprV4F&timestamp=
1568727896&unionId=10000"

拼接appSecret 再md5得到sign:

sign= 
md5(appKey=5d8083dd7e37d&nonceStr=c6I0gQU1nhH6GTStBwwZr9cWarzprV4F&timestamp=
1568727896&unionId=10000&appSecret=4264d5a67af50b5e6a1a62f25ba175ef)

sign= c25d929843a50096fd5c62ef343ebb68

results matching ""

    No results matching ""