API文档示例

API文档示例


签名算法

<div class="article-body kancloud-markdown-body"><h2><a id="_0"></a>第一步</h2><br><p>设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&amp;key2=value2…)拼接成字符串stringA。</p><br><p>特别注意以下重要规则:</p><br><ol><li>参数名ASCII码从小到大排序(字典序);</li><li>如果参数的值为空不参与签名;</li><li>参数名区分大小写;</li><li>验证调用返回或本站主动通知签名时,传送的sign参数和sign_type不参与签名,将生成的签名与该sign值作校验。</li><li>本接口可能增加字段,验证签名时必须支持增加的扩展字段</li></ol><br><h2><a id="_12"></a>第二步</h2><br><p>在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,得到sign值signValue。</p><br><h2><a id="PHP_16"></a>PHP签名实例</h2><br><pre class="prettyprint linenums prettyprinted" style="padding-left: 5px; background-color: rgb(252, 252, 252); border: 1px solid rgb(225, 225, 232);"><ol class="linenums" style="padding-left: 5px;"><li class="L0" style="background-color: rgb(252, 252, 252);"><code class="ಠhighlight-container" style="color: rgb(221, 17, 68);"><span class="token comment"><span class="pun">/</span><strong><br><span class="pln"> </span><em><span class="pln"> </span><span class="lit">@Note</span><span class="pln"> </span><span class="pun">生成签名</span></em></strong></span></code></li><li class="L1" style="background-color: rgb(252, 252, 252);"><code class="ಠhighlight-container" style="color: rgb(221, 17, 68);"><span class="token comment"><strong><em><span class="pln"> </span></em><span class="pln"> </span><span class="lit">@param</span><span class="pln"> $data </span><span class="pun">参与签名的参数</span><br><span class="pln"> </span><em><span class="pln"> </span><span class="lit">@return</span><span class="pln"> </span><span class="kwd">string</span></em></strong></span></code></li><li class="L2" style="background-color: rgb(252, 252, 252);"><code class="ಠhighlight-container" style="color: rgb(221, 17, 68);"><span class="token comment"><strong><em><span class="pln"> </span></em><span class="pun">/</span></strong></span><strong><br><span class="kwd">public</span><span class="pln"> </span><span class="token keyword"><span class="kwd">function</span></span><span class="pln"> </span><span class="token function"><span class="pln">getSign</span></span><span class="token punctuation"><span class="pun">(</span></span><span class="pln">$data</span><span class="token punctuation"><span class="pun">)</span></span><br><span class="token punctuation"><span class="pun">{</span></span><br><span class="pln"> $data </span><span class="token operator"><span class="pun">=</span></span><span class="pln"> </span><span class="token function"><span class="pln">array_filter</span></span><span class="token punctuation"><span class="pun">(</span></span><span class="pln">$data</span><span class="token punctuation"><span class="pun">)</span></span><span class="token punctuation"><span class="pun">;</span></span><br><span class="pln"> </span><span class="token keyword"><span class="kwd">if</span></span><span class="pln"> </span><span class="token punctuation"><span class="pun">(</span></span><span class="token function"><span class="pln">get_magic_quotes_gpc</span></span><span class="token punctuation"><span class="pun">(</span></span><span class="token punctuation"><span class="pun">)</span></span><span class="token punctuation"><span class="pun">)</span></span><span class="pln"> </span><span class="token punctuation"><span class="pun">{</span></span><br><span class="pln"> $data </span><span class="token operator"><span class="pun">=</span></span><span class="pln"> </span><span class="token function"><span class="pln">stripslashes</span></span><span class="token punctuation"><span class="pun">(</span></span><span class="pln">$data</span><span class="token punctuation"><span class="pun">)</span></span><span class="token punctuation"><span class="pun">;</span></span><br><span class="pln"> </span><span class="token punctuation"><span class="pun">}</span></span><br><span class="pln"> </span><span class="token function"><span class="pln">ksort</span></span><span class="token punctuation"><span class="pun">(</span></span><span class="pln">$data</span><span class="token punctuation"><span class="pun">)</span></span><span class="token punctuation"><span class="pun">;</span></span><br><span class="pln"> $str1 </span><span class="token operator"><span class="pun">=</span></span><span class="pln"> </span><span class="token string"><span class="pun">‘’</span></span><span class="token punctuation"><span class="pun">;</span></span><br><span class="pln"> </span><span class="kwd">foreach</span><span class="pln"> </span><span class="token punctuation"><span class="pun">(</span></span><span class="pln">$data </span><span class="kwd">as</span><span class="pln"> $k </span><span class="token operator"><span class="pun">=</span></span><span class="token operator"><span class="pun">&amp;</span></span><span class="pln"> $v</span><span class="token punctuation"><span class="pun">)</span></span><span class="pln"> </span><span class="token punctuation"><span class="pun">{</span></span><br><span class="pln"> $str1 </span><span class="token punctuation"><span class="pun">.</span></span><span class="token operator"><span class="pun">=</span></span><span class="pln"> </span><span class="token string"><span class="pun">‘&amp;’</span></span><span class="pln"> </span><span class="token punctuation"><span class="pun">.</span></span><span class="pln"> $k </span><span class="token punctuation"><span class="pun">.</span></span><span class="pln"> </span><span class="token string"><span class="pun">“=”</span></span><span class="pln"> </span><span class="token punctuation"><span class="pun">.</span></span><span class="pln"> $v</span><span class="token punctuation"><span class="pun">;</span></span><br><span class="pln"> </span><span class="token punctuation"><span class="pun">}</span></span><br><span class="pln"> $str </span><span class="token operator"><span class="pun">=</span></span><span class="pln"> $str1 </span><span class="token punctuation"><span class="pun">.</span></span><span class="pln"> $this</span><span class="token operator"><span class="pun">-</span></span><span class="token operator"><span class="pun">&amp;</span></span><span class="pln">key</span><span class="token punctuation"><span class="pun">;</span></span><br><span class="pln"> $str </span><span class="token operator"><span class="pun">=</span></span><span class="pln"> </span><span class="token function"><span class="pln">trim</span></span><span class="token punctuation"><span class="pun">(</span></span><span class="pln">$str</span><span class="token punctuation"><span class="pun">,</span></span><span class="pln"> </span><span class="token string"><span class="pun">‘&amp;’</span></span><span class="token punctuation"><span class="pun">)</span></span><span class="token punctuation"><span class="pun">;</span></span><br><span class="pln"> $sign </span><span class="token operator"><span class="pun">=</span></span><span class="pln"> </span><span class="token function"><span class="pln">md5</span></span><span class="token punctuation"><span class="pun">(</span></span><span class="pln">$str</span><span class="token punctuation"><span class="pun">)</span></span><span class="token punctuation"><span class="pun">;</span></span><br><span class="pln"> </span><span class="token keyword"><span class="kwd">return</span></span><span class="pln"> $sign</span><span class="token punctuation"><span class="pun">;</span></span><br><span class="token punctuation"><span class="pun">}</span></span><br><br></strong></code></li></ol></pre><strong><br><h2><a id="PHP_43"></a>PHP验证签名实例</h2><br></strong><pre class="prettyprint linenums prettyprinted" style="padding-left: 5px; background-color: rgb(252, 252, 252); border: 1px solid rgb(225, 225, 232);"><ol class="linenums" style="padding-left: 5px;"><li class="L0" style="background-color: rgb(252, 252, 252);"><strong><code class="ಠhighlight-container" style="color: rgb(221, 17, 68);"><span class="token comment"><span class="pun">/</span></span></code></strong><code class="ಠhighlight-container" style="color: rgb(221, 17, 68);"><br><span class="pln"> </span><em><span class="pln"> </span><span class="lit">@Note</span><span class="pln"> </span><span class="pun">验证签名</span></em></code></li><li class="L1" style="background-color: rgb(252, 252, 252);"><code class="ಠhighlight-container" style="color: rgb(221, 17, 68);"><em><span class="pln"> </span></em><span class="pln"> </span><span class="lit">@param</span><span class="pln"> $data </span><span class="pun">待验证参数</span><br><span class="pln"> </span><em><span class="pln"> </span><span class="lit">@return</span><span class="pln"> </span><span class="kwd">bool</span></em></code></li><li class="L2" style="background-color: rgb(252, 252, 252);"><code class="ಠhighlight-container" style="color: rgb(221, 17, 68);"><em><span class="pln"> </span></em><span class="pun">/</span><br><span class="kwd">public</span><span class="pln"> </span><span class="token keyword"><span class="kwd">function</span></span><span class="pln"> </span><span class="token function"><span class="pln">verify</span></span><span class="token punctuation"><span class="pun">(</span></span><span class="pln">$data</span><span class="token punctuation"><span class="pun">)</span></span><br><span class="token punctuation"><span class="pun">{</span></span><br><span class="pln"> </span><span class="token keyword"><span class="kwd">if</span></span><span class="pln"> </span><span class="token punctuation"><span class="pun">(</span></span><span class="token operator"><span class="pun">!</span></span><span class="token function"><span class="pln">isset</span></span><span class="token punctuation"><span class="pun">(</span></span><span class="pln">$data</span><span class="token punctuation"><span class="pun">[</span></span><span class="token string"><span class="pun">‘</span><span class="pln">sign</span><span class="pun">’</span></span><span class="token punctuation"><span class="pun">]</span></span><span class="token punctuation"><span class="pun">)</span></span><span class="pln"> </span><span class="token operator"><span class="pun">||</span></span><span class="pln"> </span><span class="token operator"><span class="pun">!</span></span><span class="pln">$data</span><span class="token punctuation"><span class="pun">[</span></span><span class="token string"><span class="pun">‘</span><span class="pln">sign</span><span class="pun">’</span></span><span class="token punctuation"><span class="pun">]</span></span><span class="token punctuation"><span class="pun">)</span></span><span class="pln"> </span><span class="token punctuation"><span class="pun">{</span></span><br><span class="pln"> </span><span class="token keyword"><span class="kwd">return</span></span><span class="pln"> </span><span class="token boolean"><span class="kwd">false</span></span><span class="token punctuation"><span class="pun">;</span></span><br><span class="pln"> </span><span class="token punctuation"><span class="pun">}</span></span><br><span class="pln"> $sign </span><span class="token operator"><span class="pun">=</span></span><span class="pln"> $data</span><span class="token punctuation"><span class="pun">[</span></span><span class="token string"><span class="pun">‘</span><span class="pln">sign</span><span class="pun">’</span></span><span class="token punctuation"><span class="pun">]</span></span><span class="token punctuation"><span class="pun">;</span></span><br><span class="pln"> </span><span class="token function"><span class="pln">unset</span></span><span class="token punctuation"><span class="pun">(</span></span><span class="pln">$data</span><span class="token punctuation"><span class="pun">[</span></span><span class="token string"><span class="pun">‘</span><span class="pln">sign</span><span class="pun">’</span></span><span class="token punctuation"><span class="pun">]</span></span><span class="token punctuation"><span class="pun">)</span></span><span class="token punctuation"><span class="pun">;</span></span><br><span class="pln"> </span><span class="token function"><span class="pln">unset</span></span><span class="token punctuation"><span class="pun">(</span></span><span class="pln">$data</span><span class="token punctuation"><span class="pun">[</span></span><span class="token string"><span class="pun">‘</span><span class="pln">sign_type</span><span class="pun">’</span></span><span class="token punctuation"><span class="pun">]</span></span><span class="token punctuation"><span class="pun">)</span></span><span class="token punctuation"><span class="pun">;</span></span><br><span class="pln"> $sign2 </span><span class="token operator"><span class="pun">=</span></span><span class="pln"> $this</span><span class="token operator"><span class="pun">-</span></span><span class="token operator"><span class="pun">&amp;</span></span><span class="token function"><span class="pln">getSign</span></span><span class="token punctuation"><span class="pun">(</span></span><span class="pln">$data</span><span class="token punctuation"><span class="pun">)</span></span><span class="token punctuation"><span class="pun">;</span></span><br><span class="pln"> </span><span class="token keyword"><span class="kwd">if</span></span><span class="pln"> </span><span class="token punctuation"><span class="pun">(</span></span><span class="pln">$sign </span><span class="token operator"><span class="pun">!=</span></span><span class="pln"> $sign2</span><span class="token punctuation"><span class="pun">)</span></span><span class="pln"> </span><span class="token punctuation"><span class="pun">{</span></span><br><span class="pln"> </span><span class="token keyword"><span class="kwd">return</span></span><span class="pln"> </span><span class="token boolean"><span class="kwd">false</span></span><span class="token punctuation"><span class="pun">;</span></span><br><span class="pln"> </span><span class="token punctuation"><span class="pun">}</span></span><br><span class="pln"> </span><span class="token keyword"><span class="kwd">return</span></span><span class="pln"> </span><span class="token boolean"><span class="kwd">true</span></span><span class="token punctuation"><span class="pun">;</span></span><br><span class="token punctuation"><span class="pun">}</span></span><br></code></li></ol></pre><br></div>

页面列表

ITEM_HTML