jushi

权益充值


签名规范

<p><strong>签名计算方式:</strong></p> <ol> <li> <p><code>sign生成规则: sha1(time+data+apikey)</code></p> </li> <li><code>为了防止请求被伪造、篡改,每一次接口请求都需传入根据本次请求的</code></li> <li><code>13位时间戳(毫秒)+body参数(json格式)+apikey(密钥)</code></li> <li><code>计算获得的sign(签名)</code></li> </ol> <p><strong>签名示例(php):</strong></p> <ol> <li><code>public function sign($post = [], $key ='',$userid = '')</code></li> <li><code>{</code></li> <li><code>if ($post) {</code></li> <li><code>ksort($post); //排序post参数</code></li> <li><code>$post = json_encode($post , JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);</code></li> <li><code>} else {</code></li> <li><code>$post = &amp;quot;{}&amp;quot;;</code></li> <li><code>}</code></li> <li><code>$time = time() . rand(100, 999);</code></li> <li><code>$header[] = &amp;quot;Content-Type: application/json; charset=utf-8&amp;quot;;</code></li> <li><code>//用户密钥</code></li> <li><code>$header[] = &amp;quot;Sign: &amp;quot; . sha1($time . $post . $key);</code></li> <li><code>$header[] = &amp;quot;Timestamp: &amp;quot; . $time;</code></li> <li><code>//用户ID</code></li> <li><code>$header[] = &amp;quot;UserId: &amp;quot; . $userid;</code></li> <li><code>return [$post, $header];</code></li> <li><code>}</code></li> </ol> <p><strong>接口约定(每次请求需传入以下Header参数:):</strong></p> <table> <thead> <tr> <th>Header 参数</th> <th>类型</th> <th>是否必填</th> <th>描述</th> <th>示例值</th> </tr> </thead> <tbody> <tr> <td>Sign</td> <td>string</td> <td>是</td> <td>签名</td> <td>20d6ed7224f6ecedda74548aff9cb1a54e5c0033</td> </tr> <tr> <td>Timestamp</td> <td>string</td> <td>是</td> <td>13位时间戳(毫秒)</td> <td>1696645385740</td> </tr> <tr> <td>UserId</td> <td>string</td> <td>是</td> <td>您的用户编号(后台接口为管理员登录账号)</td> <td>10000</td> </tr> </tbody> </table> <p><strong>接口示例:</strong></p> <p>以订单查询接口为例,开发者的UserId是10000,apikey是 e3yw37fe2zhb4wb6p2zzmxerpr835pjy,请求的参数如下:</p> <p>&gt; Header参数</p> <ol> <li><code>Sign: 待下方计算</code></li> <li><code>Timestamp: 1696645385740</code></li> <li><code>UserId: 10000</code></li> </ol> <p>&gt; Body参数</p> <ol> <li><code>{</code></li> <li><code>&amp;quot;day&amp;quot;: 10,</code></li> <li><code>&amp;quot;external_orderno&amp;quot;: &amp;quot;&amp;quot;,</code></li> <li><code>&amp;quot;ordersn&amp;quot;: &amp;quot;D100759082558859640832&amp;quot;</code></li> <li><code>}</code></li> </ol> <p>第一步:将请求Body参数中多个键值对,参数按照参数名的字典升序排列(a-z)。</p> <p><code>{&amp;quot;day&amp;quot;:10,&amp;quot;external_orderno&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;ordersn&amp;quot;:&amp;quot;D100759082558859640832&amp;quot;}</code></p> <p>第二步:将 13位时间戳+第一步中排序后的字符串+apikey 拼接得到待签名字符串</p> <p><code>1696645385740{&amp;quot;day&amp;quot;:10,&amp;quot;external_orderno&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;ordersn&amp;quot;:&amp;quot;D100759082558859640832&amp;quot;}e3yw37fe2zhb4wb6p2zzmxerpr835pjy</code></p> <p>第三步:使用sha1算法加密待加密字符串即为sign</p> <p><code>20d6ed7224f6ecedda74548aff9cb1a54e5c0033</code></p> <p>第四步:将sign添加到Header参数中</p> <ol> <li><code>Sign: 20d6ed7224f6ecedda74548aff9cb1a54e5c0033</code></li> <li><code>Timestamp: 1696645385740</code></li> <li><code>UserId: 10000</code></li> </ol> <p>需要注意以下重要规则:</p> <p>◆ 请求参数中有中文时,中文需要经过url编码,但计算签名时不需要;<br /> ◆ 请求Body参数为空时data使用{}参与签名;<br /> ◆ 参数名区分大小写;</p>

页面列表

ITEM_HTML