简要描述:
1.1. 1、筛选并排序
获取所有请求参数以及app_secret_key参数,不包括字节类型参数,如文件、字节流,避免app_key、sign字段,剔除值为空的参数,并按照第一个字符的键值ASCII码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值ASCII码递增排序,以此类推。GET请求将使用请求参数作为签名值, POST将使用请求体中的参数作为签名值
1.2. 2、拼接(所有拼接内容均以UTF-8编码为准)
将排序后的参数与其对应值,组合成“参数=参数值”的格式,并且把这些参数用&字符连接起来,此时生成的字符串为待签名字符串。 例如下面最终的请求示例,参数值都是示例,开发者参考格式即可:
REQUEST URL: https://xxx.com/open/api/v1/test
REQUEST METHOD: POST
request body:
{
"b_key": 123,
"c_key": 456,
"app_key": 2014072300007148,
"timestamp": 1543220162,
"sign": "4CAEE33D4D9E9EFD822139FD3B842C2C"
}
则待签名字符串为,(假设商户的app_secret_key为 6Xm4nIWUQoerl7qEAbSUb1kqPvtql13qWhHEiQwdx2s=): app_secret_key=6Xm4nIWUQoerl7qEAbSUb1kqPvtql13qWhHEiQwdx2s=&b_key=123&c_key=456×tamp=1543220162
1.3. 3、MD5签名
将代签名字符串使用标准的MD5加密函数计算,生成32位大写字符串,作为sign签名参数。
1.4. 4、发送请求
把生成的签名赋值给sign参数,拼接到请求参数中。