Sign算法说明

假如有如下请求参数键值对如下:
appkey : test2-xx
page_no : 0
end_time : 2016-08-01 13:00:00
start_time : 2016-08-01 12:00:00
page_size : 40
sid : test2
timestamp : 1470042310
第一步 对数所有请求参数按照键名进行正序排序,排序结果如下:

注意:一定要保持键值对的对应关系

appkey : test2-xx
end_time : 2016-08-01 13:00:00
page_no : 0
page_size : 40
sid : test2
start_time : 2016-08-01 12:00:00
timestamp : 1470042310
第二步 循环对每个键值进行处理:
1.处理 appkey

1.1 appkey 采用utf8编码格式的字符长度并保留两位,不够的位数补0,计算结果为:06 

1.2 将1.1计算的长度 06 和 appkey 用 - 作为分隔符进行拼接,拼接结果为 06-appkey

1.3 test2-xx 采用utf8编码格式的字符长度如未超过四位,保留四位,不够的位数补0,计算结果为:0008,如果超过四位,保留实际长度,例如:99999。

1.4 将1.3计算的长度 0008 和 test2-xx 用 - 作为分隔符进行拼接,拼接结果为 0008-test2-xx

1.5 将1.2 和 1.4 的拼接结果用 : 进行拼接 ,拼接结果为 06-appkey:0008-test2-xx

1.6 将1.5的结果最后拼接上分号 ; 拼接结果为 06-appkey:0008-test2-xx;

2.处理 end_time 同1处理

3.处理 page_no 同1处理

4.处理 page_size 同1处理

5.处理 sid 同1处理

6.处理 start_time 同1处理

7.处理 timestamp 注意前五步和1处理方法相同,因为 timestamp 是最后一个请求参数,所以不需要 1.6步骤

最后的处理结果为:
06-appkey:0008-test2-xx;08-end_time:0019-2016-08-01 13:00:00;07-page_no:0001-0;09-page_size:0002-40;03-sid:0005-test2;10-start_time:0019-2016-08-01 12:00:00;09-timestamp:0010-1470042310

注意:示例中的参数为查询类接口请求参数,创建类接口中的参数包含json串,比如:创建原始订单:trade_list = [] 这里是订单的json数据,json串当作正常的字符串进行处理

第三步 计算sign:

1.获取appsecret 假如当前实例中的 appsecret 为 12345

2.将appsecret拼接在第二步的结果后面,注意没有任何拼接符,结果如下:
06-appkey:0008-test2-xx;08-end_time:0019-2016-08-01 13:00:00;07-page_no:0001-0;09-page_size:0002-40;03-sid:0005-test2;10-start_time:0019-2016-08-01 12:00:00;09-timestamp:0010-147004231012345

3.将上述字符串进行md5加密后即可得到sign,要求MD5方法返回的是32位小写的MD5值,计算结果如下:
ad4e6fe037ea6e3ba4768317be9d1309

4.将计算的sign作为一个请求参数放到参数列表中
    sid : test2
    appkey : test2-xx
    timestamp : 1470042310
    start_time : 2016-08-01 12:00:00
    end_time : 2016-08-01 13:00:00
    page_no : 0
    page_size : 40
    sign : ad4e6fe037ea6e3ba4768317be9d1309
Print Friendly, PDF & Email