使用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
最后编辑:邹文韬 更新时间:2025-07-04 15:32