
Sign 签名生成方法
支付中将对数据里面的内容进行鉴权,确定携带的信息是真实、有效、合理的。因此,这里将定义生成sign 字符串的方法。
对所有传入参数按照字段名的ASCII 码从小到大排序(字典序) 后,使用 URL 键值对的格式(即 key1=value1&key2=value2…)拼接成字符串 string1,值为空的字段不参与签名。
b.在 string1 最后拼接上 key=Key(商户支付密钥) 得到待签名字符串,并对待签名字符串进行 md5 运算,再将得到的签名字符串所有字符转换为大写,得到 sign 值。
测试商户号:000201608231035295
测试支付秘钥:62ece2fce3d9d86637eca079aa002e3c
假设传入组装的的xml内容为:
<xml>
<body>Test</body>
<funname>prepay</funname>
<merid>000201608231035295</merid>
<orderid>cs1485407071222</orderid>
<paymethod>wx</paymethod>
<sign>DD5D21F7B96CBB0D7F6C053AC351B081</sign>
<subject>testorder</subject>
<totalfee>0.01</totalfee>
</xml>
(1)经过 a 过程 URL 键值对字典序排序后的字符串 string1 为:
body=Test&funname=prepay&merid=000201608231035295&orderid=cs1485407071222&paymethod=wx&subject=testorder&totalfee=0.01;
(2)经过 b 过程后得到 sign 为:
sign=md5(string1&key=62ece2fce3d9d86637eca079aa002e3c).toUpperCase()
=md5(body=Test&funname=prepay&merid=000201608231035295&orderid=cs1485407071222&paymethod=wx&subject=testorder&totalfee=0.01&key=62ece2fce3d9d86637eca079aa002e3c) .toUpperCase()
=”dd5d21f7b96cbb0d7f6c053ac351b081”.toUpperCase()
=DD5D21F7B96CBB0D7F6C053AC351B081
Powered by BetterDocs