回调签名算法
<p>用于自有积分回调的加密签名算法</p>
<p><strong>注意:</strong>
1、时间戳是毫秒单位;需要在15分钟内
2、requestBody按<strong>字典顺序</strong>排列。
3、如果参数中有对象,将对象的值转换成JSON字符串再进行签名</p>
<h3>签名生成的通用步骤如下:</h3>
<p>步骤1.按照以下方式构造验签名串。签名串由三部分组成,每部分直接拼接,不需要分隔符,或者认为分隔符为空字符串’’.</p>
<p>第一部分为请求参数中除<code>appid</code>、<code>loginkey</code>、<code>appsign</code>以及<code>timestamp</code>参数的其他参数,对这些参数按照请求时的顺序进行排序后,每个参数使用键值对的格式(key1=value1)以英文分号<code>;</code>作为结尾拼接成第一部分的内容。</p>
<p>第二部分为<code>appsecret</code>的值,<code>appsecret</code>的值直接作为第二部分的内容。</p>
<p>第三部分为<code>timestamp</code>参数的值,<code>timestamp</code>的值直接作为第三部分的内容。</p>
<p>将第一部分、第二部分和第三部分的内容拼接后构成验签名串。</p>
<p>步骤2. 对构造好的验签名串字进行md5签名。</p>
<h3>示例</h3>
<p>假设appid=1的产品对应的appsecret如下:</p>
<pre><code>secretabc</code></pre>
<p>回调的调用参数如下:</p>
<pre><code class="language-json">{
&quot;appid&quot;: 1,
&quot;timestamp&quot;: 1682323886173,
&quot;account_id&quot;: &quot;id1&quot;,
&quot;loginkey&quot;: &quot;login-key1&quot;,
&quot;device_id&quot;: &quot;device-id1&quot;,
&quot;appsign&quot;: &quot;a82d566f7b6682e7ebe859a91a301e23&quot;
}</code></pre>
<p>签名串第一部分如下:</p>
<pre><code>account_id=id1;device_id=device-id1</code></pre>
<p>第二部分为<code>appsecret</code>:</p>
<pre><code>secretabc</code></pre>
<p>第三部分为<code>timestamp</code>:</p>
<pre><code>1682323886173</code></pre>
<p>拼接后,签名串为:</p>
<pre><code>account_id=id1;device_id=device-id1;secretabc1682324085404</code></pre>
<p>对构造好的验签名串字进行md5签名,得到sign: <code>a82d566f7b6682e7ebe859a91a301e23</code></p>