签名机制

步骤说明

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&timestamp=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参数不参与签名。