佳诺虚充业务API接口文档

代理开放接口文档


签名算法与错误定义

<p>[TOC]</p> <h5>签名算法</h5> <h6>规则</h6> <ul> <li>按照 asc 排序键值对参数名排序(需要区分大小写),  如果选填参数同时值为空时不能参与签名计算,</li> <li>将 api key 放到要签名的键值对最后。 例如: 假设apiKey = a367b552cfe347cc88e (BizTypeECARDServiceQueryProductTime1706169267UserIdtesta367b552cfe347cc88e)</li> <li>用32位MD5 加密处理后的参数串,采用 UTF-8编码后的 MD5,生成的MD5小写</li> </ul> <h6>JAVA示例代码</h6> <pre><code>public static String generateSign(Map&amp;lt;String, String&amp;gt; params,String apiKey) { // 先对map的键进行排序 String result = params.entrySet().stream() .sorted(Map.Entry.comparingByKey()) .map(entry -&amp;gt; entry.getKey() + entry.getValue()) .collect(Collectors.joining()); // 添加API Key result += apiKey; // 计算MD5值 return md5(result); } public static String md5(String s) { try { MessageDigest md = MessageDigest.getInstance(&amp;quot;MD5&amp;quot;); byte[] array = md.digest(s.getBytes()); StringBuilder sb = new StringBuilder(); for (byte item : array) { sb.append(Integer.toHexString((item &amp;amp; 0xFF) | 0x100), 1, 3); } return sb.toString().toLowerCase(); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } }</code></pre> <h5>错误码</h5> <table> <thead> <tr> <th style="text-align: left;">code</th> <th style="text-align: left;">msg</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">0</td> <td style="text-align: left;">成功</td> </tr> <tr> <td style="text-align: left;">101</td> <td style="text-align: left;">参数错误 或者 缺少必须的业务参数</td> </tr> <tr> <td style="text-align: left;">102</td> <td style="text-align: left;">签名错误</td> </tr> <tr> <td style="text-align: left;">103</td> <td style="text-align: left;">用户状态不正常   【联系商务确定 ID、密钥是否正确,  产品、接口是否都已经配置】</td> </tr> <tr> <td style="text-align: left;">104</td> <td style="text-align: left;">余额不足</td> </tr> <tr> <td style="text-align: left;">105</td> <td style="text-align: left;">产品不存在或者状态不正常</td> </tr> <tr> <td style="text-align: left;">106</td> <td style="text-align: left;">目标充值账号不合法或者状态不正常</td> </tr> <tr> <td style="text-align: left;">107</td> <td style="text-align: left;">时间戳相差过大</td> </tr> <tr> <td style="text-align: left;">108</td> <td style="text-align: left;">订单号已经存在</td> </tr> <tr> <td style="text-align: left;">109</td> <td style="text-align: left;">协议版本错误 或者 不能识别的或者未开放的接口服务</td> </tr> <tr> <td style="text-align: left;">110</td> <td style="text-align: left;">产品提交数量不符合规范值【特定产品会要求】</td> </tr> <tr> <td style="text-align: left;">111</td> <td style="text-align: left;">IP 未在白名单中</td> </tr> <tr> <td style="text-align: left;">112</td> <td style="text-align: left;">订单号重复 更换订单号重提</td> </tr> <tr> <td style="text-align: left;">999</td> <td style="text-align: left;">未知错误(不直接作为失败,  是否成功请联系平台确认)</td> </tr> </tbody> </table>

页面列表

ITEM_HTML