本文将为你介绍H5本机号码校验SDK相关内容。

一、引入JSSDK

开发者需要在H5页面中集成号码认证服务的JSSDK,并在服务端完成API对接。

  1. 静态资源引入。
    下载打包好的js文件引入项目目录。
    <script type="text/javascript" charset="utf-8" src="xxx/numberAuth-web-sdk-1.0.3.js"></script>
  2. npm引入。
    npm资源地址:https://www.npmjs.com/package/aliyun_numberauthsdk_web
    npm i aliyun_numberauthsdk_web
    为保证服务正常使用,需在页面的html文件中的head标签里面添加代码。
     <meta name="referrer" content="origin">

二、SDK接口说明

1、初始化实例

// 初始化实例
var PhoneNumberServer = window.PhoneNumberServer; //引用静态资源包
import { PhoneNumberServer } from 'aliyun_numberauthsdk_web'; //引用npm包
var PhoneNumberServer = require('aliyun_numberauthsdk_web');

var phoneNumberServer = new PhoneNumberServer();

设置SDK是否开启日志(开启后会在控制台打印更多内容便于排查问题)。

this.phoneNumberServer.setLoggerEnable();

参数说明

isEnable 是否开启 true/false

2、获取号码认证sdk版本号

const sdkVersion = this.phoneNumberServer.getVersion();  // 返回sdk版本号 eg: '1.0.0' 

3、身份鉴权

// 调用之前先去用户服务端获取accessToken和jwtToken
phoneNumberServer.checkAuthAvailable({
    phoneNumber: '151********',
    accessToken: 'XXXXXXXXxx',
    jwtToken:'******',
    success:function(res){
      console.log(res);
    },
    
    error: function(res){
      
    }
    
});this.phoneNumberServer.checkAuthAvailable({
    phoneNumber: '151********',
    accessToken: 'XXXXXXXXxx',
    jwtToken:'******',
    success:function(res){
      console.log(res.jwtToken);
      console.log(res.accessToken); 
    },
    
    error: function(res){
      
    }
    
});
参数说明
参数名称 参数说明
phoneNumber 本机号码
AccessToken 号码认证业务鉴权token由阿里云对外暴露的getAuthToken 接口生成
JwtToken API鉴权token由阿里云对外暴露的getAuthToken 接口生成
timeout 可选参数,可不设置(默认为10s)
success 成功回调
error 失败回调

4、获取本机号码校验token

this.phoneNumberServer.getVerifyToken({
    success:function(res){
    console.log(res.
      
    },
    
    error: function(res){
      
    }
    
});
参数说明
success 成功回调
error 失败回调
返回值说明
code 成功6000(其他详见错误码)
spToken 运营商token
content 失败时运营商返回的内容

错误码说明

返回码 web
600000 成功的返回code
600004 方案号不存在
600009 无法判断运营商
600010 未知异常
600011 获取token失败
600013 运营商维护升级,该功能不可用
600014 运营商维护升级,该功能已达最大调用次数
600015 接口超时
600025 接入方身份信息校验失败
600008 环境错误(未在蜂窝网络下使用或未使用手机浏览器)
600028 入参错误(未传入手机号码,accessToken,jwtToken)

除阿里云SDK返回码外,运营商返回码见阿里云官网运营商SDK错误码

三、其他说明

  • 需要提示用户在断开WIFI的情况下使用,仅支持蜂窝网络下使用。
  • 身份鉴权成功后才可以调获取token的接口。

四、常见问题

1、为什么使用联通4G网络,依然获取不到本机号码校验token?

目前联通不支持一下几种情况:
  • 联通目前不支持5G(移动电信可以)。
  • 不支持物联网卡。
  • 联通不支持接入点为wap的网络取号。
  • UC和QQ浏览器开启免流模式可能会导致取号不成功。

运营商错误码说明

1、移动

错误码 描述
500 取号失败,可能原因有以下几种:
  • 传入的referrer和创建方案号的url不一致。
  • 当前连网的可能不是移动的蜂窝网络。
0 请求异常。
999999 系统错误。
130032 参数解析错误。
130018 签名验证失败。
130030 参数无效。
110028 AppId不存在。

2、联通

错误码列表

错误码 描述
100001 应用鉴权错误或获取token失败。
100002 未进行初始化操作。
100003 请求超时。
100009 未知错误。
200001 初始化失败。

错误详细码表

错误详细码(RespCode) 描述
102 客户端类型错误。
104 clientId错误。
106 请求时间超时。
107 鉴权信息错误。
108 应用签名错误。
110 Referer未报备。
111 网络环境错误 (非移动网络环境,例如WIFI)。
113 客户端无权限。
1002 网关错误。
1003 预取号错误。
1004 AccessCode错误。
1011 数据解析错误。
1012 网络环境错误 (1012是公网ip错误)。
1013 网络环境错误(私网ip错误)。

3、电信

错误码 描述
30002 无法识别用户网络,返回两个重定向异网取号地址。
30901 Code换Tokenfail(CODE 已经使用或者 Code 超过 10 分钟未使用)。
-64 没有权限(天翼账号平台未授权应用访问权限)。
-20005 签名非法。
-10001 取号失败。
-10002 参数错误。
-10003 解密失败。
-10004 无效的IP。
-10005 异网授权回调参数异常。
-10006 授权失败,且属于电信网络。
-10007 重定向到异网取号。
-10008 超过预设取号阀值。
-10009 时间戳过期。
-20005 签名非法。
-20006 应用不存在。
-20007 公钥数据不存在。
-20100 内部解析错误。
-20102 加密参数解析失败。
-30001 时间戳非法。
51002 参数为空。
51114 无法获取手机号数据。