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

    • 只使用data值进行签名
    • 签名特别注意以下重要规则
      1.参数名从小到大排序(字典序);
      2.如果参数的值为NULL则不参与签名;
      3.参数名区分大小写;
      4.平台接口可能增加字段,验证签名时必须支持增加的扩展字段

    签名举例

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

    • 第二步
      在String A 最后拼接上appSecret(即 key1=value1&key2=value2&…&key=appSecret ),得到stringSignTemp字符串

      假设appid与appSecret参数为:
      appId = dj871a47291a773df8
      appSecret = cf1b666f8a95449cb9591fd38d78f0e8

      假设传送data参数如下:

      {
      "parkNo":"rjbucqmn",
      "passWayNo":2,
      "deviceNo":"07104d6a0a0f5061"
      }

      1:对参数按照key=value的格式,并按照参数名字典序排序如下(在拼接之前需对每个value进行转码,转为UTF-8)

      string A = deviceNo=07104d6a0a0f5061&parkNo=rjbucqmn&passWayNo=2

      2:再拼接上key=appSecret

      string stringSignTemp = deviceNo=07104d6a0a0f5061&parkNo=rjbucqmn&passWayNo=2&key=cf1b666f8a95449cb9591fd38d78f0e8
    • 第三步
      对stringSignTemp进行标准MD5 32位运算,得到sign值

      sign=MD5(stringSignTamp)=”d328458e9af2ac8e859db6d7799cbd0d” //注:MD5签名方式
  • 得到最终发送数据

    {
      "data":
          {
              "parkNo":"rjbucqmn",
              "passWayNo":2,
              "deviceNo":"07104d6a0a0f5061"
          },
    "appId":"dj871a47291a773df8",
    "sign":"d328458e9af2ac8e859db6d7799cbd0d",
    "version":"v1.0",
    "timestamp":1751613712050,
    "actionName":"passWayOrder"
    }
作者:郭祥西  创建时间:2024-10-26 09:25
最后编辑:邹文韬  更新时间:2025-07-04 15:32