0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

秒验 REST API 手机号码置换接口

MobTech科技派 来源:MobTech科技派 作者:MobTech科技派 2023-08-03 15:07 次阅读

功能说明

  • 提交客户端获取到的token、opToken等数据,验证后返回手机号码

调用地址

  • POST https://identify-verify.dutils.com/auth/auth/sdkClientFreeLogin

请求头

  • Content-Type :application/json
  • appkey:xxxxxxxxxx

入参说明

字段类型说明必传
appkeyStringapp标识Y
tokenString客户端的tokenY
opTokenString客户端返回的运营商tokenY
operatorString客户端返回的运营商,CMCC:中国移动通信, CUCC:中国联通通讯, CTCC:中国电信Y
signString签名(MD5(所有参数使用key的正序,通过a=b&b=c+appSecret组成))Y
timestamplong当前时间戳(毫秒)Y
md5StringAPK的md5签名,例:e4caa1a08ba0570b5c1290b1a0bc9252N

加密示例

  • 参数
"appkey" - > "2f2d7j9wf8a40"
"opToken" - > "f630dwff2f8f209c60a6449cf971ad50b3e83f4620a1536252457229836325"
"operator" - > "CUCC"
"token" - > "0:AAAAhAAAAIAIFOEDCVObiS1Pdyogg4JQw5Su4ce9rl/QVDaqKlcGDCzBssmrB3dYL3HcnNG9Gj7IzhiB/cRJF221cELTGHRiFGAjpGpjipkw/EbnoFuxjp3TPAhvprf/vqWm9dmUQCJ7P/+twKy5o5Y9XBBpD+W/jVPX/WbIQofYg3YGwAAAPDTY7g1X3rL326Dnlsifj/UDjoZ0Ftdh8qWG+ofn0P41bbO6q88id06vkU2x2eUEOb1RggqYt+BLHyG3PoLIC0AMGoUcTVyCcGYq15j+ZS23qiA2SLRYgwvvhD3N+HKTSWEPmYQDUKls5fckyQGW6x6yGB71NDUqwntBdQxwmT6W5NG379KyvPwRkZSN4cyJ29HugMMTx/0F9nF6YVgEogEHOms515lQ7f3TJqTidsVdIehQcDb2FdXnCJUjnOJTK4RWRHp9IvTxwXgmsT7WzkwWuSe/12sEx8Zdk2U66//nqgJ5c1FDbuHsqGlKA8fYyo="
"timestamp" - > 1655190952281
"appSecret" - > "9abee316611wd9ff607feb9f2c496338"
  • 排序结果
appkey=2f2d7j9wf8a40&opToken=f630dwff2f8f209c60a6449cf971ad50b3e83f4620a1536252457229836325&operator=CUCC×tamp=1655190952281&token=0:AAAAhAAAAIAIFOEDCVObiS1Pdyogg4JQw5Su4ce9rl/QVDaqKlcGDCzBssmrB3dYL3HcnNG9Gj7IzhiB/cRJF221cELTGHRiFGAjpGpjipkw/EbnoFuxjp3TPAhvprf/vqWm9dmUQCJ7P/+twKy5o5Y9XBBpD+W/jVPX/WbIQofYg3YGwAAAPDTY7g1X3rL326Dnlsifj/UDjoZ0Ftdh8qWG+ofn0P41bbO6q88id06vkU2x2eUEOb1RggqYt+BLHyG3PoLIC0AMGoUcTVyCcGYq15j+ZS23qiA2SLRYgwvvhD3N+HKTSWEPmYQDUKls5fckyQGW6x6yGB71NDUqwntBdQxwmT6W5NG379KyvPwRkZSN4cyJ29HugMMTx/0F9nF6YVgEogEHOms515lQ7f3TJqTidsVdIehQcDb2FdXnCJUjnOJTK4RWRHp9IvTxwXgmsT7WzkwWuSe/12sEx8Zdk2U66//nqgJ5c1FDbuHsqGlKA8fYyo=
  • 拼接appSecret
appkey=2f2d7j9wf8a40&opToken=f630dwff2f8f209c60a6449cf971ad50b3e83f4620a1536252457229836325&operator=CUCC×tamp=1655190952281&token=0:AAAAhAAAAIAIFOEDCVObiS1Pdyogg4JQw5Su4ce9rl/QVDaqKlcGDCzBssmrB3dYL3HcnNG9Gj7IzhiB/cRJF221cELTGHRiFGAjpGpjipkw/EbnoFuxjp3TPAhvprf/vqWm9dmUQCJ7P/+twKy5o5Y9XBBpD+W/jVPX/WbIQofYg3YGwAAAPDTY7g1X3rL326Dnlsifj/UDjoZ0Ftdh8qWG+ofn0P41bbO6q88id06vkU2x2eUEOb1RggqYt+BLHyG3PoLIC0AMGoUcTVyCcGYq15j+ZS23qiA2SLRYgwvvhD3N+HKTSWEPmYQDUKls5fckyQGW6x6yGB71NDUqwntBdQxwmT6W5NG379KyvPwRkZSN4cyJ29HugMMTx/0F9nF6YVgEogEHOms515lQ7f3TJqTidsVdIehQcDb2FdXnCJUjnOJTK4RWRHp9IvTxwXgmsT7WzkwWuSe/12sEx8Zdk2U66//nqgJ5c1FDbuHsqGlKA8fYyo=9abee316611wd9ff607feb9f2c496338
  • 计算MD5结果
sign - > 3f1991b27b1c86a32e661eabdd3d1f5a

请求示例

curl --location --request POST 'http://identify.verify.mob.com/auth/auth/sdkClientFreeLogin' 
--header 'Content-Type: application/json' 
--data-raw '{"token":"0:AAAAhAAAAIAIJn3PvTUUJ94umGqPmZCFtprF5Pg7uCxb+Opp+JtZrHIX3yxVOGEHJQLHuRLU1hlTbYyxCMfW53fuck6OL1X+01qdf+NpTVj1ApmQzapKWFB3DEPNNdyad8HwxZY/ZGWcch0Njy+Pb0TgqMwAytBWKu5vlvN9LRoWw/6F3K4BGgAAAPDHlbG1uFKewi7J1g3d6tAor/kIHG0A8csscrESYVfmVYzB6RBfQWfwDpZIYLrXOuSFdWP3bqKbEyIiqvSeY3ktxSus2lUdD6MzwYo1aXJ6oALEW/A07Qx5/3S6ClSmtGrHuzDnC6JCsmHEQWR7S2wNLSojS95Zd91AC2gpqV5tmKEaVGDc827JVEHXFX6Zr5d0pNmBHLS0b67BrNfG4v0qSgcf/OL3a1xOQVieqUDbrAPiNF7Q2wifCbj0FQyIt5+LPpOkqKDbYff21WinJMTOuOMoJcqOhrI1gUEmnHE/ZU8ZZXN52Kffd+Pk7aR7MMU=","opToken":"a53c2dc92083cb1375218a0f1dd35e0050bb26e40ba0a1536204920384995379", "appkey": "2f2d7a68f8a40", "operator": "CUCC",  "sign": "576ec00ac6ad80a2d0a92872d748e82b", "timestamp": 1655094782181}'

响应示例

请求成功

{
    "error": null,
    "res": "ZfukzNuB5oKbxBKxK9MoYFzr1IDZ0Z/i+xLYyq/JCAmi24DPYHdGeUqxE6OjQuP3VY1c76CyfoU=",
    "seqid": "456484936150429696",
    "status": 200
}

请求失败

{
    "status": 4119342,
    "res": null,
    "error": "签名错误",
    "seqid": "null"
}
  • 响应参数
keydescription
error返回码描述
res加密后的JSON串,含有返回的手机号,需进行DES解密
seqid流水号,请求出错时可能为空
status返回码

数据解密

返回体中的res数据需要使用appSecet解密

解密方式

DES/CBC/PKCS5Padding

偏移量 00000000

使用base64转码

字段说明

{   
    "isValid":1, 
    "phone": "13888888888""valid":"true"
}
字段类型必传说明
isValidintegerY验证状态,1:成功, 2:失败
phonestringY返回手机号
validbooleanY验证状态 true 成功 false:失败

示例代码

Java

import java.security.Key;
import java.security.spec.AlgorithmParameterSpec;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;

public class DES {

    public static final String ALGORITHM = "DES";
    public static final String PADDING = "DES/CBC/PKCS5Padding";
    private static final byte[] DEFAULT_INITIALIZATION_VECTOR = ("00000000".getBytes());

    private String padding = PADDING;
    private AlgorithmParameterSpec paramSpec;

    public DES(String padding, byte[] initializationVectorBytes) {
        this.padding = padding;
        this.paramSpec = new IvParameterSpec(initializationVectorBytes);
    }

    public byte[] decodeBytes(byte[] data, byte[] key) throws Exception {
        Key secretKey = getKey(key);
        Cipher cipher = Cipher.getInstance(padding);
        cipher.init(Cipher.DECRYPT_MODE, secretKey, paramSpec);
        return cipher.doFinal(data);

    }

    private static Key getKey(byte[] key) throws Exception {
        DESKeySpec dks = new DESKeySpec(key);
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
        SecretKey secretKey = keyFactory.generateSecret(dks);
        return secretKey;
    }

    public static byte[] decode(byte[] data, byte[] key) throws Exception {
        return decode(data, key, DEFAULT_INITIALIZATION_VECTOR);
    }

    public static byte[] decode(byte[] data, byte[] key, byte[] ivBytes) throws Exception {
        DES des = new DES(PADDING, ivBytes);
        return des.decodeBytes(data, key);
    }

}
import java.util.Base64;

public abstract class Base64Utils {

    public Base64Utils() {
    }

    public static byte[] decode(byte[] src) {
        return src.length == 0 ? src : Base64.getDecoder().decode(src);
    }

}

返回码

错误码说明
5119104解密失败
5119105服务错误
4119301数据校验失败
4119302数据不存在
5119302数据不存在
4119303数据已经存在
5119303数据已经存在
4119310token未找到
5119310token未找到
4119311token非法
4119330App没有初始化
4119331AppSecret错误
5119341余额不足
5119501未知的运营商类型
5119511AppKey每分钟验证次数超过限制
5119513未审核的包名每天验证数量超过限制
4119521包名没有配置
5119531AppKey在黑名单中
5119546[免密登录][APP每分钟]超限
5119507免密登录失败
5119509免密获取TOKEN失败
4119342签名错误
4119343timestamp错误
5119601未设置价格

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8595

    浏览量

    151141
  • API
    API
    +关注

    关注

    2

    文章

    1500

    浏览量

    62005
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1036

    浏览量

    45930
收藏 人收藏

    评论

    相关推荐

    我想做一个号码拦截器。面对面5米内接收到对方的手机号码。我也咨询很多人,不是技

    我想做一个号码拦截器。面对面5米内接收到对方的手机号码。我也咨询很多人,不是技术问题就是,怕这东西触犯法律。我只是正规用途,并不会触犯法律底线!望“能人”解决我的问题!样品只要符合以上条件,重金酬谢...谢谢!QQ896776242加我请注明电子*** 丁先生
    发表于 04-29 16:16

    基于51单片机的tc35开发,怎么提取收到短信的手机号码呢?

    基于51单片机的tc35开发,大家有什么方法可以提取收到短信的手机号吗,或者实直接回复短信的方法呢?或者怎么实现提取指针指向的变量和指针指向的变量的后面的变量呢?就是:在收到的缓存数组里用strstr函数找到+861,然后怎么提取+861后免得号码呢》?求解跪求,在线等解
    发表于 08-06 10:13

    【YZ】基于双核心架构识别手机号码的快递派送器

    本帖最后由 wangjiamin2014 于 2015-1-6 14:57 编辑 项目名称: 基于双核心架构识别手机号码的快递派送器团队名称:YZ团队成员:郑斌 纪兴宇作品演示作品介绍目前物流
    发表于 12-31 14:53

    为什么我修改不了账号邮箱和手机号码

    我想把这个账号的邮箱改了,同时解绑手机号,折腾了半天发现都被锁死了。
    发表于 08-02 20:17

    GSM模块与MINIstm32通信不能显示出我的手机号码

    GSM 模块与 MINIstm32通信液晶上不能显示出我的手机号码。。其他的 几项都可以显示出来。。希望大神帮忙答复下!!!
    发表于 04-16 00:13

    别让“手机小号”成违法行为帮凶

    所谓手机临时号,又被称为手机“小号”,就是在不更换手机卡、不改变原来手机号码的情况下,向通信运营商或网络服务商申请购买一个新的手机号码,和原
    发表于 12-08 09:37 4414次阅读

    这些人更值得信任? 5年以上不换手机号码的人

    如今智能手机跟我们的关系越加密切,可以说几乎是人手一部手机、甚至是多部手机。不过如果你的身边肯定有这样的人,那就是他们自己拥有两张手机号码卡,而其中也有一部分,是5年以上都不更换
    发表于 03-18 11:45 1290次阅读

    阿里云通信发布全新号码认证服务, 重新定义手机号码认证的方式

    走普通验证方式的"寻常路",采用用户无感知的验证方式,全程无需等待,验证结果知,将用户的验证流程精简为:输入手机号码 → 验证成功。(图1)号码认证服务注册流程:由于注册认证的步骤被大幅减少,由原来
    发表于 12-18 16:20 356次阅读

    中国移动即将开启eSIM一号双终端业务试验

    据官方的介绍,用户可在自己的手机号码(主号码)账户和套餐下,添加一个eSIM辅助智能设备,使手机终端与附属终端共用一个手机号码(主号码),主
    发表于 01-21 09:09 2664次阅读
    中国移动即将开启eSIM一号双终端业务试验

    中国团队成功将国内手机号码写入三款新iPhone的eSIM卡

    昨日,国内“超雪团队”宣布,其已经成功将国内手机号码写入iPhone XS的eSIM卡当中,实现双卡双待。今日,该团队宣布,已经成功将国内手机号码写入三款新iPhone的eSIM卡,在三大运营商尚未支持的情况下实现实体卡+eSIM卡双卡双待。
    的头像 发表于 01-21 17:14 1w次阅读

    工信部:取消移动电话号码归属地,将增加电信诈骗风险

    手机号码归属地能否取消?据人民网报道,近期工业和信息化部的权威解答称,取消手机号码归属地,将增大电信诈骗风险。目前暂未出台取消手机号码归属地相关政策。
    的头像 发表于 10-28 16:15 3748次阅读

    浅谈手机号码归属地更改的影响

    随着长途费、漫游费的取消,手机号归属地似乎失去了意义,而且存在诸多不便,尤其是变换工作地、生活地之后,那么能取消手机号的归属地设置吗?或者是否可以允许变更手机号归属地?最近就有多位网友向工信部反映了这一问题,工信部也给出了统一回
    发表于 03-17 10:24 2.5w次阅读

    网友曝手机号码过户竟被要求预存3.6万元话费

    日前网络报道称,四川宜宾的刘先生最近希望将手机号码过户到自己名下,被中国电信要求预存3.6万元话费才能办理。
    的头像 发表于 02-23 10:10 1957次阅读

    REST API是什么,如何使用REST端口

    API是Application Programming Interface(应用程序接口)的缩写,它是拿来描述一个类库的特征或是如何去运用它。按照目前比较主流的分法,可以分为REST API
    的头像 发表于 02-17 18:00 9320次阅读
    <b class='flag-5'>REST</b> <b class='flag-5'>API</b>是什么,如何使用<b class='flag-5'>REST</b>端口

    ChatGPT申请api key 需要国外手机号验证怎么办?

    key还是需要验证,就是ChatGPT把注册需要验证手机号的步骤移到了申请api申请需要验证。可以看出针对api是以后的重心发展方向。 那我想申请ChatGPT api key 没有
    的头像 发表于 11-22 11:39 1w次阅读
    ChatGPT申请<b class='flag-5'>api</b> key 需要国外<b class='flag-5'>手机号</b>验证怎么办?