进件-签名规则
<h3 style="color:rgb(239,107,107)">注:此验签规则,只适用部分接口验签,适用的接口具体如下</h3>
<h5 style="color:rgb(239,107,107)">进件接口(图片上传API、开户及进件申请API、进件查询API)</h5>
<h5>生成待签名字符串</h5>
<pre><code>1:需要参与签名的参数
在API请求参数列表中,除去sign、sign_type两个参数外,其他需要使用到的参数皆是要签名的参数。
2:生成待签名字符串
除sign、sign_type外,所有参数按照字段名的ascii码从小到大排序后使用QueryString的格式(即key1=value1&amp;key2=value2…)拼接而成,空值不传递,不参与签名组串。
签名时将字符转化成字节流时指定的字符集与_input_charset保持一致。
如果传递了_input_charset参数,这个参数也应该包含在待签名数据中。
签名原始串中,字段名和字段值都采用原始值,不进行URL Encode。
举例:
如请求参数如下:
service:trade_payment_merchant_freeze
version:1.0
partner_id:10000000000131212
core_merchant_no:CC_C8785258588
fund_pool_no:PN01000000000010876
input_charset:UTF8
out_trade_no_ext:A2016030811110063
payment_account_no:CA21000000017026
freeze_amount:0.01
待签名字符串:
core_merchant_no=CC_C8785258588&amp;freeze_amount=0.01&amp;fund_pool_no=PN01000000000010876&amp;input_charset=UTF8&amp;out_trade_no_ext=A2016030811110063&amp;partner_id=10012426000150917&amp;payment_account_no=CA21000000017026&amp;service=trade_payment_merchant_freeze&amp;version=1.0</code></pre>
<p><br/></p>
<h5>签名</h5>
<pre><code>1:在MD5签名时,需要安全校验码(Key)参与签名。
2:请求时签名
当拿到请求时的待签名字符串后,需要把安全校验码(Key)直接拼接到待签名字符串后面,形成新的字符串,利用MD5的签名函数对这个新的字符串进行签名运算,从而得到32位签名结果字符串(该字符串赋值于参数sign)。
3:返回时验证签名
当获得到通知返回时的待签名字符串后,同理,需要把安全校验码(Key)直接拼接到待签名字符串后面,形成新的字符串,利用MD5的签名函数对这个新的字符串进行签名运算,从而得到32位签名结果字符串。此时这个新的字符串需要与前置系统通知返回参数中的参数sign的值进行验证是否相等,来判断签名是否验证通过。
注意:签名时将字符串转化成字节流时指定的编码字符集应与参数input_charset一致。
MD5签名计算公式:
sign = Md5(代签名字符串+Key). toLowerCase
举例:
如待签名字符串: core_merchant_no=CC_C8785258588&amp;freeze_amount=0.01&amp;fund_pool_no=PN01000000000010876&amp;input_charset=UTF8&amp;out_trade_no_ext=A2016030811110063&amp;partner_id=10012426000150917&amp;payment_account_no=CA21000000017026&amp;service=trade_payment_merchant_freeze&amp;version=1.0
商户Key: 58F4C311C24BF180BE69D998152888A4
签名的结果为:
sign=md5(core_merchant_no=CC_C8785258588&amp;freeze_amount=0.01&amp;fund_pool_no=PN01000000000010876&amp;input_charset=UTF8&amp;out_trade_no_ext=A2016030811110063&amp;partner_id=10012426000150917&amp;payment_account_no=CA21000000017026&amp;service=trade_payment_merchant_freeze&amp;version=1.058F4C311C24BF180BE69D998152888A4).toLowerCase
= 29268a1ad5899a810451e1c43114b161</code></pre>