秒验 手机号码置换接口

您所在的位置:网站首页 sim卡上的数字可以查到对应的手机号码嘛 秒验 手机号码置换接口

秒验 手机号码置换接口

2023-03-30 04:46| 来源: 网络整理| 查看: 265

秒验 手机号码置换接口 原创

MobService 2023-03-29 10:37:27 ©著作权

文章标签 java ci 2d 文章分类 iOS 移动开发

©著作权归作者所有:来自51CTO博客作者MobService的原创作品,请联系作者获取转载授权,否则将追究法律责任 功能说明提交客户端获取到的token、opToken等数据,验证后返回手机号码调用地址POST http://identify.verify.mob.com/auth/auth/sdkClientFreeLogin请求头Content-Type :application/json入参说明

字段

类型

说明

必传

appkey

String

app标识

Y

token

String

客户端的token

Y

opToken

String

客户端返回的运营商token

Y

operator

String

客户端返回的运营商,CMCC:中国移动通信, CUCC:中国联通通讯, CTCC:中国电信

Y

sign

String

签名(MD5(所有参数使用key的正序,通过a=b&b=c+appSecret组成))

Y

timestamp

long

当前时间戳(毫秒)

Y

md5

String

APK的md5签名,例:e4caa1a08ba0570b5c1290b1a0bc9252

N

加密示例参数"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=计算结果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" }响应参数

key

description

error

返回码描述

res

加密后的JSON串,含有返回的手机号,需进行DES解密

seqid

流水号,请求出错时可能为空

status

返回码

数据解密

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

解密方式

DES/CBC/PKCS5Padding

偏移量 00000000

使用base64转码

解密后示例{ "isValid":1, "phone": "13888888888", "valid":"true" }字段说明

字段

类型

必传

说明

isValid

integer

Y

验证状态,1:成功, 2:失败

phone

string

Y

返回手机号

valid

boolean

Y

验证状态 true 成功 false:失败

Java

import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec; import java.security.Key; import java.security.spec.AlgorithmParameterSpec; 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 byte[] initializationVectorBytes = DEFAULT_INITIALIZATION_VECTOR; private AlgorithmParameterSpec paramSpec; public static void main(String res,String appSecret) throws Exception { byte[] decode = DES.decode(Base64Utils.decode(res.getBytes()), appSecret.getBytes()); String result = new String(decode); } public DES(){ this.paramSpec = new IvParameterSpec(initializationVectorBytes); } public DES(String padding) { this.padding = padding; this.paramSpec = new IvParameterSpec(initializationVectorBytes); } public DES(String padding, byte[] initializationVectorBytes) { this.padding = padding; this.initializationVectorBytes = initializationVectorBytes; this.paramSpec = new IvParameterSpec(initializationVectorBytes); } public DES(byte[] initializationVectorBytes) { this.initializationVectorBytes = initializationVectorBytes; this.paramSpec = new IvParameterSpec(initializationVectorBytes); } public byte[] encodeBytes(byte[] data,byte[] key) throws Exception { Key secretKey = getKey(key); Cipher cipher = Cipher.getInstance(padding); cipher.init(Cipher.ENCRYPT_MODE, secretKey, paramSpec); byte[] bytes = cipher.doFinal(data); return bytes; } 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); } public String getPadding() { return padding; } public byte[] getInitializationVectorBytes() { return initializationVectorBytes; } 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[] encode(byte[] data, byte[] key) throws Exception { return encode(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); } public static byte[] encode(byte[] data, byte[] key, byte[] ivBytes) throws Exception { DES des = new DES(PADDING,ivBytes); return des.encodeBytes(data,key); } }返回码

错误码

说明

5119104

解密失败

5119105

服务错误

4119301

数据校验失败

4119302

数据不存在

5119302

数据不存在

4119303

数据已经存在

5119303

数据已经存在

4119310

token未找到

5119310

token未找到

4119311

token非法

4119330

App没有初始化

4119331

AppSecret错误

5119341

余额不足

5119501

未知的运营商类型

5119511

AppKey每分钟验证次数超过限制

5119513

未审核的包名每天验证数量超过限制

4119521

包名没有配置

5119531

AppKey在黑名单中

5119546

[免密登录][APP每分钟]超限

5119507

免密登录失败

5119509

免密获取TOKEN失败

4119342

签名错误

4119343

timestamp错误

5119601

未设置价格

打赏 收藏 评论 分享 举报

上一篇:MobTech|什么是SDK

下一篇:MobTech MobPush|智能标签推送



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3