号码状态检测

2024.04.18 10:26:19

    对接运营商权威数据源,根据手机号判断手机号的在网状态,支持实时和离线。

    接口说明

    • 只支持移动,电信,联通下发的手机卡,广电号暂不支持
    • 超时时间建议设置为5S。

    鉴权说明

    易盾信息认证服务使用签名方法对接口进行鉴权,所有接口每一次请求都需要包含签名信息(signature参数),以验证用户身份,防止信息被恶意篡改。目前支持MD5,SHA1,SHA256,SM3几种加密算法,详细信息,请参见接口鉴权

    请求

    请求地址

    名称
    HTTP URL https://verify.dun.163.com/v1/idlephone/check
    HTTP Method POST

    请求头

    名称 类型 必填 描述
    Content-Type String 固定值:"application/x-www-form-urlencoded"

    请求参数

    请求参数由请求公共参数和请求业务参数两部分组成,通用参数见请求通用字段

    参数名称 类 型 必填 最大长度 描述
    phoneList String 50 检测手机号,仅支持国内11位号码。若为空号检测实时版,则仅支持传递1个手机号。若为空号检测离线版,每次最多检测50个手机号,多个手机号码用英文半角逗号隔开。
    encryptType String 4 手机号序列加密方式。
    若为空号检测实时版,支持明文和AES两种方式。 0:不加密,2:AES方式,加密密钥为易盾方分配的secretKey。若为空号检测离线版,支持明文和MD5两种方式。0:不加密,1:MD5(32位小写)。选择加密方式时,请将单个手机号加密后再用逗号隔开。

    请求体示例

    phoneList=136xxxxxxxxx&encryptType=0&version=v1&businessId=xxx&timestamp=1638180222235&nonce=xxx&secretId=xxx&signature=xxx
    

    响应

    响应结果

    响应字段如下,响应通用字段已省略,详细见响应公共字段

    参数名称 类型 必须返回 描述
    status Number 检测结果,1 成功,2 失败。
    requestId String 本次请求数据标识,可以根据该标识查询数据最新结果。
    isPayed Number 本次请求是否收费标识,1代表收费,0代表不收费。
    chargeCount Number 计费条数。
    phoneInfo Object 查询的手机号信息。
     ∟ mobile String 手机号,仅支持国内号码,11位
     ∟ area String 手机号所属区域。样例:省-市。 若手机号是Md5方式加密,将不返回该信息。
     ∟ numberType String 手机号运营商类型。样例:中国移动 GSM。若手机号是Md5加密,将不返回该信息。
     ∟ status String 检测结果,枚举值:
    若为空号检测实时版:0:正常使用 1:停机 2:在网但不可用 3:不在网/销号/未启用/异常 4:预销户 5:虚拟号或者号码错误 6:查无记录(号码已收回或者号码从未放出)7:数据源异常,请重试 8:号码频繁使用(24小时内15次)
    若为空号检测离线版:0:空号 1:实号 2:停机 3:库无 4:沉默号 5:风险号。

    响应体示例

    {
        "code":200,
        "msg":"ok",
        "result":{
            "requestId":"6c2e08568573402eb57d2eadb85fd8eb",
            "status":1,
            "isPayed":1,
            "chargeCount":1,
            "phoneInfo":[
                {
                    "mobile":"136xxxxxxxxx",
                    "area":"浙江-杭州",
                    "numberType":"中国移动 GSM",
                    "status":"1"
                }
            ]
        }
    }
    

    响应返回码

    响应返回码见:响应返回码

    AES加密代码

    import javax.crypto.Cipher;
    import javax.crypto.spec.SecretKeySpec;
    import org.apache.commons.codec.binary.Base64;
    import org.apache.commons.codec.digest.DigestUtils;
    
    public class SecurityAESTool {
        /**
         * AES加密
         *
         * @param str
         *            明文
         * @param key
         *            秘钥
         * @return
         */
        public static String encrypt(String str, String key) {
            byte[] crypted = null;
            try {
                SecretKeySpec skey = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
                Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
                cipher.init(Cipher.ENCRYPT_MODE, skey);
                String enStr = str;
                crypted = cipher.doFinal(enStr.getBytes("UTF-8"));
            } catch (Exception e) {
                System.out.println(e.toString());
            }
            String body = Base64.encodeBase64String(crypted);
            return body;
        }
    
        /**
         * AES解密
         *
         * @param input
         * @param key
         * @return
         */
        public static String decrypt(String input, String key) {
            byte[] output = null;
            String body = null;
            if (input == null || key == null) {
                return null;
            }
            try {
                SecretKeySpec skey = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
                Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
                cipher.init(Cipher.DECRYPT_MODE, skey);
                byte[] b = Base64.decodeBase64(input);
                // 解密
                output = cipher.doFinal(b);
                body = new String(output, "UTF-8");
            } catch (Exception e) {
                System.out.println(e.toString());
            }
            return body;
        }
    
        public static void main(String[] args) {
            String key = "12345678123456781234567812345678"; // 易盾分配的密钥
            String data = "12312341234"; // 手机号
            String encodeKey = DigestUtils.md5Hex(key).toLowerCase().substring(0, 16);
            String enStr = SecurityAESTool.encrypt(data, encodeKey);
            System.out.println(enStr);
        }
    }
    
    在线咨询 电话咨询:95163223 免费试用