阿芷自动发货

阿芷自动发货


签名计算规则

<h5>简要描述:</h5> <ul> <li>参数按照字段名的ascii码从小到大排序后,使用QueryString的格式(即key1=value1&amp;key2=value2…)拼接成字符串后,空值不传递,不参与签名组串。再到后面追加上(&amp;商户key值),用md5进行加密成32位小写字符串。&lt;font color=&#039;red&#039;&gt;注意:(sign、appid、分页请求参数默认不参与加密)需要参与加密的参数在接口请求参数中有写明&lt;/font&gt;</li> </ul> <h5>例子:</h5> <p>商户id为:&lt;font color=&#039;red&#039;&gt;10000&lt;/font&gt; 商户key值为:&lt;font color=&#039;red&#039;&gt;Az6c01f185-440e-44a8-9d41-ceOpen&lt;/font&gt;</p> <h5>假设请求参数为:</h5> <pre><code class="language-json">{ &amp;quot;appId&amp;quot;: &amp;quot;10088581615&amp;quot;, &amp;quot;sign&amp;quot;: &amp;quot;82a4da7502872e7a128b510d10cad6ab&amp;quot;, &amp;quot;status&amp;quot;: &amp;quot;1&amp;quot;, &amp;quot;timeBegin&amp;quot;: &amp;quot;2025-03-17 11:36:05&amp;quot;, &amp;quot;timeEnd&amp;quot;: &amp;quot;2025-03-29 11:36:05&amp;quot; }</code></pre> <h5>验签步骤:</h5> <ol> <li><strong>拼接字符串如下</strong></li> </ol> <pre><code class="language-javascript">status=1&amp;amp;timeBegin=2025-03-17 11:36:05&amp;amp;timeEnd=2025-03-29 11:36:05</code></pre> <ol> <li><strong>尾部追加上 商户key 的MD5源串如下(注意这是签名的拼接明文不是提交数据):</strong></li> </ol> <pre><code class="language-javascript">status=1&amp;amp;timeBegin=2025-03-17 11:36:05&amp;amp;timeEnd=2025-03-29 11:36:05&amp;amp;Az6c01f185-440e-44a8-9d41-ceOpen</code></pre> <ol> <li>MD5加密后转成32位小写的签名值如下:</li> </ol> <pre><code class="language-javascript">921bfe2dcd4ecca574d8b8c76412ede5</code></pre> <h5>JAVA代码示例:</h5> <pre><code class="language-java">public static String generateSignature(Map&amp;lt;String, String&amp;gt; params, String merchantKey) { // 1. 参数排序 TreeMap&amp;lt;String, String&amp;gt; sortedParams = new TreeMap&amp;lt;&amp;gt;(params); // 2. 拼接QueryString,忽略空值 StringBuilder queryString = new StringBuilder(); for (Map.Entry&amp;lt;String, String&amp;gt; entry : sortedParams.entrySet()) { if (entry.getValue() != null &amp;amp;&amp;amp; !entry.getValue().isEmpty()) { if (queryString.length() &amp;gt; 0) { queryString.append(&amp;quot;&amp;amp;&amp;quot;); } queryString.append(entry.getKey()).append(&amp;quot;=&amp;quot;).append(entry.getValue()); } } // 3. 追加商户key queryString.append(&amp;quot;&amp;amp;&amp;quot;).append(merchantKey); // 4. MD5加密 return md5Hash(queryString.toString()); } private static String md5Hash(String input) { try { MessageDigest md = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;); byte[] messageDigest = md.digest(input.getBytes()); StringBuilder hexString = new StringBuilder(); for (byte b : messageDigest) { String hex = Integer.toHexString(0xff &amp;amp; b); if (hex.length() == 1) { hexString.append(&amp;#039;0&amp;#039;); } hexString.append(hex); } return hexString.toString(); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } }</code></pre>

页面列表

ITEM_HTML