动信通虚充业务

虚拟充值业务


签名算法与错误提示

<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>code</th> <th>msg</th> </tr> </thead> <tbody> <tr> <td>0</td> <td>成功</td> </tr> <tr> <td>101</td> <td>参数错误 或者 缺少必须的业务参数</td> </tr> <tr> <td>102</td> <td>签名错误</td> </tr> <tr> <td>103</td> <td>用户状态不正常 【联系商务确定 ID、密钥是否正确, 产品、接口是否都已经配置】</td> </tr> <tr> <td>104</td> <td>余额不足</td> </tr> <tr> <td>105</td> <td>产品不存在或者状态不正常</td> </tr> <tr> <td>106</td> <td>目标充值账号不合法或者状态不正常</td> </tr> <tr> <td>107</td> <td>时间戳相差过大</td> </tr> <tr> <td>108</td> <td>订单号已经存在</td> </tr> <tr> <td>999</td> <td>未知错误(不直接作为失败, 是否成功请联系平台确认)</td> </tr> </tbody> </table>

页面列表

ITEM_HTML