签名机制
步骤说明
1. 第一步:构建签名字符串
对所有参数进行排序,设所有发送或者接收到的数据为集合M,将集合M内全部参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串sorted_string。
举例: 假设需要传递的参数如下:
appid: 99GUgRcFoWPoOH1fM2o0a0Z2
mall_no: JF_002
uid: guest
timestamp: 1650448542
nonce_str: 3jkdh978K87sjd
此时,sorted_string即为:
sorted_string = "appid=99GUgRcFoWPoOH1fM2o0a0Z2&mall_no=JF_002&uid=guest×tamp=1650448542&nonce_str=3jkdh978K87sjd";
2. 第二步:拼接appsecret
把第一步中的排序字符串拼接上密钥后加密
举例 假设appsecret为:
oUBelo1nuJ22aiDwIYdKHHze
即最后待加密的字符串即
open_string = sorted_string + "&app_secret=oUBelo1nuJ22aiDwIYdKHHze"
3. 第三步:生成加密字符串
使用MD5加密上述明文字符串,并把该密文为value,sign作为key添加到传递的参数中
举例
encrypt_sign = MD5(open_string)
即最终传递的参数列表如下
appid: 99GUgRcFoWPoOH1fM2o0a0Z2
mall_no: JF_002
uid: guest
timestamp: 1650448542
nonce_str: 3jkdh978K87sjd
sign: encrypt_sign // encrypt_sign请用上述结果替代
注意事项
- 参数名ASCII码从小到大排序(字典序);
- 参数名区分大小写;
- 传送的sign参数不参与签名。