签名生成规则
假设获得开发者密钥 developer_key
:744ed968e7e1a4aebafa6f4888fced68
来对请求参数进行签名。
1.参数筛选
获取所有请求参数(不包括字节类型参数,如文件、字节流),剔除参数名为 sign
、sign_type
、key
、developer_key
的参数同时还请剔除参数值为 ''
或 null
的参数。
注意: 请不要将 developer_key
参数直接加入到请求参数中。
假定需要请求的参数如下:
{
"developer_code": "U2QHNB2w=",
"shop_code": "U2TD844B2",
"order_type": "1",
"daily_number": "1",
"tel": "13311112222",
"send_cont": "从二号门进",
"building_code": "BTEGNAZl",
"timestamp": "15640471261",
"type": "128"
}
则根据规则经过参数筛选之后的参数为筛选剔除空值的参数
:
{
"developer_code": "U2QHNB2w=",
"shop_code": "U2TD844B2",
"order_type": "1",
"daily_number": "1",
"tel": "13311112222",
"send_cont": "从二号门进",
"building_code": "BTEGNAZl",
"timestamp": "15640471261",
"type": "128"
}
2.参数排序
按照参数名第一个字符的键值 ASCII 码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值 ASCII 码递增排序,以此类推。
经过参数排序之后参数为:
{
"building_code": "BTEGNAZl",
"daily_number ": "1",
"developer_code": "U2QHNB2w=",
"order_type": "1",
"send_cont": "从二号门进",
"shop_code": "U2TD844B2",
"tel": "13311112222",
"timestamp": "15640471261",
"type": "128"
}
3.参数拼接
将排序后的参数名与参数值,组合成“参数名=参数值”的格式,并把这些参数用 & 字符连接起来,此时生成的字符串为最初的待签名字符串。经过参数拼接之后的最初待签名字符串为:
building_code=BTEGNAZl&daily_number=1&developer_code=U2QHNB2w=&order_type=1&send_cont=从二号门进&shop_code=U2TD844B2&tel=13311112222×tamp=15640471261&type=128744ed968e7e1a4aebafa6f4888fced68
4.签名
使用 md5()方法对最终的待签名字符串进行签名,使用上面拼接好的参数拼接上 developer_key
:
md5("building_code=BTEGNAZl&daily_number=1&developer_code=U2QHNB2w=&order_type=1&send_cont=从二号门进&shop_code=U2TD844B2&tel=13311112222×tamp=15640471261&type=128744ed968e7e1a4aebafa6f4888fced68")
# 结果为:
2f1c4fbda84d518b6676e36b6bcaad4e
因此,请求参数的签名结果(即 sign
参数的值)为:2f1c4fbda84d518b6676e36b6bcaad4e
最后修改时间: 1 年前