签名算法
<h5>示例说明</h5>
<p>请求报文Body如下:</p>
<p><code> amount=1&amp;notifyUrl=https://ww.example.com&amp;orderNo=174923083846799680&amp;redirectUrl=https://www.example.com&amp;signature=041654d185537db1fbd4652bba6fce2702fa6ce776a306479feac0c3fabe6f6&amp;uid=BP000005 </code></p>
<h5>生成待签名串</h5>
<ul>
<li>
<p>收集非空域
<code> amount=1&amp;notifyUrl=https://www.example.com&amp;outNo=1749230838467399680&amp;redirectUrl=https://www.example.com&amp;uid=BP000005 </code></p>
</li>
<li>排序并拼接:按照 ASCII 码排序这些键值对,并用 & 拼接,得到的待签名串,并将APP中获取的私钥,拼接在末尾:
<code> amount=1&amp;notifyUrl=https://www.example.com&amp;orderNo=1749230838467399680&amp;redirectUrl=https://www.example.com&amp;uid=BP0000050011d9af6b894306b75688bd59f9e18c23ddce9dc7c048f498a8898761c8adef </code></li>
</ul>
<h5>计算签名</h5>
<p>使用SHA256算法:对上一步骤得到的待签名串使用 SHA256 算法进行签名,得到的结果即为最终的签名值(signature 域的值)。</p>
<h5>签名验证过程</h5>
<ul>
<li>
<p>步骤 1:生成待签名串
收集字段:从通用响应体中收集除 signature 以外的所有字段。 排序:将这些字段按照它们的键(Key)的 ASCII 码值进行排序。排序规则是比较每个键的字符,直到可以区分顺序。 拼接:使用 Key=Value 格式拼接这些字段,每个键值对之间用 & 符号连接。并将APP中获取的私钥,拼接在末尾,得到最终待签名串。</p>
</li>
<li>
<p>步骤 2:计算摘要
使用SHA-256算法:对步骤1得到的待签名串使用 SHA-256 算法计算摘要。</p>
</li>
<li>步骤 3:验证签名
判断计算出的摘要是否与数据返回的 signature 值相同,相同,则说明数据正确</li>
</ul>