签名算法说明:
签名生产的通用步骤如下:
第一步:设所有发送或者接收到的数据为集合 M,将集合 M 内非空的参数值的参数按照参数名 ASCII码从小到大排序(字典序),使用 URL 键值对的格式(即 key1=value1&key2=value2...)拼接成字符串stringA
特别注意一下重要规则:
1.参数名 ASCII 码从小到大排序(字典序);
2.如果参数的值为空不参与签名;
3.参数名区分大小写;
4.验证调用返回或主动通知签名时,传送的 sign 参数不参与签名,将生成的签名与该 sign 值校验。
第二步,在 stringA 进行 MD5 运算,得到 sign 值 signValue
举例:
假设传送的参数如下:
appid:wxd930ea5d5a258f4f
mch_id: 10000100
Device_info: 100
body:test
nonce_str: asddgxcvfgh
第一步:对参数按照 key=value 的格式,并按照参数名 ASCII 字典序排序如下:
stringA=”appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=asddgxcvfgh”
第二步:在拼接的字符串之后添加签名的 key
stringA=”appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=asddgxcvfgh&key=*********”
第三步:
sign=MD5(stringA)
最后请求传的参数为
appid:wxd930ea5d5a258f4f
mch_id: 10000100
Device_info: 100
body:test
nonce_str: asddgxcvfgh
sign:298139198882198392193912312312