• 使用HTTP消息体sign签名,签名规则如下:

    • 第一步
      设所有发送或者接收到的请求数据为集合M,将集合M内非空参数值的参数按照参数名从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。

      • 特别注意以下重要规则:
        1.参数名从小到大排序(字典序);
        2.如果参数的值为NULL则不参与签名;
        3.参数名区分大小写;
        4.验证调用返回或平台主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验;
        5.平台接口可能增加字段,验证签名时必须支持增加的扩展字段;
        6.data的值不进行排序。
    • 第二步
      在stringA最后拼接上appSecretKey得到stringSignTemp字符串。

      签名举例
      签名秘钥为appSecretKey
      假设传送的参数如下:
      “appid”:”yme51ef06b32ac6cf1”,
      “data”:”{“account”:”135357884555”,”timestamp”:”1725873171”,”type”:0}”

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

        stringA=”appid=ymb8e0022f9ec6ea9f&data={“account”:”13535765899”,”timestamp”:”1726745067”,”type”:”0”}&”;

      • 2:拼接密钥:

        stringSignTamp=stringA+”e1f07aa0cb374b4e831228899972fcb1” //注:拼接参数 “密钥”即:
        stringSignTamp=”appid=ymb8e0022f9ec6ea9f&data={“account”:”13535765899”,”timestamp”:”1726745067”,”type”:”0”}&e1f07aa0cb374b4e831228899972fcb1”;

        注意:在签名时字符串不可以有空格

    • 第三步:对stringSignTemp进行标准MD5 32位运算,再将得到的字符串所有字符转换为大写,得到sign值:

      最终得到签名
      sign=MD5(stringSignTamp).toUpperCase()=”681BC4D9A64DC3C3DE7BC5DF59D59AE1” //注:MD5签名方式

      最后,得到最终发送的Json数据:

      {
      "appid": "ymb8e0022f9ec6ea9f",
      "sign": "681BC4D9A64DC3C3DE7BC5DF59D59AE1",
      "data": {
          "account": "13535765899",
          "timestamp": "1726745067",
          "type": "0"
      }
      }
作者:郭祥西  创建时间:2024-09-09 15:14
最后编辑:郭祥西  更新时间:2024-11-07 15:18