聚美智数


运营商空号检测

<h3>接口描述</h3> <ul> <li>验证手机号是否是: 空号;实号;停机;库无;沉默号;风险号</li> </ul> <h3>请求地址</h3> <p><code>https://api.jumdata.com/mobile/empty-check</code></p> <h3>请求方式</h3> <ul> <li>GET/POST</li> </ul> <h3>请求格式</h3> <ul> <li>x-www-form-urlencoded</li> </ul> <h3>请求参数</h3> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>必须</th> <th><div style="width:450px">说明</div></th> </tr> </thead> <tbody> <tr> <td>appId</td> <td>string</td> <td>是</td> <td>服务商分配的唯一标识</td> </tr> <tr> <td>timestamp</td> <td>long</td> <td>是</td> <td>当前时间的毫秒数</td> </tr> <tr> <td>sign</td> <td>string</td> <td>是</td> <td>签名,见签名算法说明</td> </tr> <tr> <td>mobile</td> <td>string</td> <td>是</td> <td>手机号或手机号32位小写MD5</td> </tr> <tr> <td>encryption</td> <td>string</td> <td>否</td> <td>AES128或AES256,大小写不限。可对手机号进行AES128或AES256对称加密后再传输,详见<a href='#encryption'>参数加密说明</a></td> </tr> </tbody> </table> <h3>签名算法</h3> <pre><code>sign = sha256(appId + appSecret + timestamp)</code></pre> <p>用服务商分配的 <strong>appId</strong>、服务商分配的 <strong>appSecret</strong>,当前时间毫秒数 <strong>timestamp</strong>,按上述顺序拼接成字符串,再进行 <strong>sha256</strong> 哈希得到。如下:</p> <pre><code class="language-java">String appId = "xyzxy2121zxyz"; String timestamp = "1555378976238"; String appSecret = "efcefcef1121cefcefc1212121"; String str = appId + appSecret + timestamp; String sign = sha256(str);</code></pre> <div id="encryption"></div> <h3>参数加密说明</h3> <ul> <li>采用加密传输时,需要统一接入商家和服务商双方的<strong>密钥</strong>、<strong>加密模式</strong>、 <strong>填充方式</strong> </li> <li>加密密钥采用服务商分配的 <strong>appSecret</strong> </li> <li>如果是采用AES256加密,则还需要统一加密时<strong>初始向量IV</strong>,采用<strong>appSecret</strong>的前16位</li> </ul> <h4>AES128</h4> <ul> <li>加密模式:ECB</li> <li>填充方式:PKCS5Padding</li> </ul> <pre><code class="language-java">SecretKeySpec skey = new SecretKeySpec(appSecret.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); // "算法/加密/填充" cipher.init(Cipher.ENCRYPT_MODE, skey); //初始化加密器 return cipher.doFinal(content.getBytes("UTF-8")); // 加密</code></pre> <h4>AES256</h4> <ul> <li>加密模式:CBC</li> <li>填充方式:PKCS7Padding</li> <li>初始向量IV:appSecret的前16位</li> </ul> <pre><code class="language-java">SecretKeySpec skey = new SecretKeySpec(appSecret.getBytes(), "AES"); String ivString = appSecret.substring(0, 16); //向量必须16位 IvParameterSpec iv = new IvParameterSpec(ivString.getBytes()); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");// "算法/加密/填充" cipher.init(Cipher.ENCRYPT_MODE, skey, iv); //初始化加密器 return cipher.doFinal(content.getBytes("UTF-8")); // 加密</code></pre> <p>完整的AES256加密工具可参考:<a href="https://file.jumdata.com/support/AESUtilV2.java" title="AESUtilV2.java">AESUtilV2.java</a></p> <h3>正确返回</h3> <pre><code>{ "code": 200, "charge": true, "taskNo": "69564903663951243279", "data": { "status": "1", // 0:空号;1:实号;2:停机;3:库无;4:沉默号;5:风险号 "statusMsg": "实号", // status对应的描述 "area": "江苏南通", // 地区,如果手机号传md5的,不返回该参数 "isp": "电信",// 运营商,如果手机号传md5的,不返回该参数 } }</code></pre> <h3>错误返回</h3> <pre><code>{ "msg": "手机号格式不正确", "code": 400 }</code></pre> <h3>返回字段说明</h3> <table> <thead> <tr> <th>字段名</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>code</td> <td>返回码,详见返回码说明</td> </tr> <tr> <td>charge</td> <td>计费标志</td> </tr> <tr> <td>msg</td> <td>code对应的描述</td> </tr> <tr> <td>taskNo</td> <td>本次请求号</td> </tr> <tr> <td>data</td> <td>返回具体结果,object类型,详见成功返回样例</td> </tr> </tbody> </table> <h4>code返回码说明</h4> <table> <thead> <tr> <th>code</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>200</td> <td>成功 (计费)</td> </tr> <tr> <td>400</td> <td>参数错误</td> </tr> <tr> <td>404</td> <td>接口地址不正确</td> </tr> <tr> <td>500</td> <td>系统维护,请稍候再试</td> </tr> <tr> <td>501</td> <td>官方数据源维护,请稍候再试</td> </tr> <tr> <td>601</td> <td>接口未开通</td> </tr> <tr> <td>602</td> <td>账号停用</td> </tr> <tr> <td>603</td> <td>余额不足请充值</td> </tr> <tr> <td>604</td> <td>接口停用</td> </tr> <tr> <td>606</td> <td>调用超限,请稍候再试</td> </tr> <tr> <td>607</td> <td>ip不在白名单</td> </tr> <tr> <td>609</td> <td>请求过于频繁,请稍候再试</td> </tr> <tr> <td>610</td> <td>请求超时</td> </tr> <tr> <td>999</td> <td>其他,以实际返回为准</td> </tr> </tbody> </table>

页面列表

ITEM_HTML