尊敬的用户您好!即日起本官网将启用新域名"shanyan.253.com",原域名(flash.253.com)将自动跳转至新域名,原域名后期将停用。请您及时更新浏览器收藏夹或直接使用新域名访问本官网。万分感谢您的配合!

闪验、创蓝闪验

一.准备工作


概述

本文是H5本机号校验 v1.0.1版本的接入文档,用于指导WEB应用开发人员接入,并详细描述接入流程和使用方法,默认读者已经具有一定的编程知识基础。



快速体验DEMO

请用手机浏览器上访问链接:http://test.login.253.com/demo/demo.html




创建应用

开发者使用账号登录shanyan.253.com,进入控制台页面创建应用。填写应用基本信息、登录页面地址和域名地址后提交,等待闪验运营人员审核通过后,开发者可以在应用详情中获取到应用的APPIDAPPKEYAPPID是闪验的应用标识。APPKEY是闪验的应用秘钥,用作于调用闪验接口时的签名算法秘钥。




二.集成SDK

  • 在页面中引入闪验WEB-SDKJS文件:

<script src="./shanyan.min.js"></script>

  • 在页面中实例化SDK对象:

var login = new OneKeyLoginManager();


1.调用预签名

  • 调用SDK方法获取预签名:

var preSign = login.getPreSign();

  • preSign传到客户后台服务中,生签名成sign

客户后台准备三个参数:

参与签名字段

类型

说明

appId

string

闪验应用appId

appKey

string

闪验应用appKey

preSign

string

闪验SDK返回的pres

timestamp

string

服务器当期时间戳(到毫秒)


注:客户后台将参数字段名和字段值一起拼接为字符串使用Hmac-SHA256算法以appKey   秘钥加密生成签名sign的值。算法伪代码:

sign=Hmac-SHA256(“appId12345678preSignxxxxxxxxxxxxxxxxxxxxtimestamp13511112312312”,appKey)


  • 客户后台返回appIdsigntimestamp三个参数到WEB端。

 

2.调用初始化

  • Web端调用WEB-SDK init方法。

login.init({

    appId: yourAppId,

    timestamp: yourTimestamp,

sign: yourSign,

// timeout: 5,

    // mobile: 18xxxxxxxxx,

    callback: yourCallback

);

appIdtimestampsign三个都是客户后台返回的参数,非空,字符串类型

timeout为超时参数,单位(),本方法设置调用运营商接口的超时,可以为空(默认5s) 数字类型

mobile为用户在页面输入的手机号码,如果前端页面没有输入项,可以为空用来辅助判断运营商 字符串类型

callback为回调函数,回调函数中会返回运营商token值,非空函数类型

callback示例:

function cb(info){

if (1000 === info.code) {

// 初始化成功,获取token

var token=info.extra.token;

}else{

// 初始化失败逻辑,根据业务需求自行实现

}

}

  • 获取token后将token和手机号码传入到客户后台,用于调用本机号校验接口,校验此token与手机号码是否匹配。如匹配则表示此号码是当前手机流量卡的手机号码,否则不是当前手机流量卡卡号。

ps:闪验支持手机号隐式校验,所以手机号码可以为用户在前端页面的输入值,也可以为客户后台保存的手机号码。


3.调用本机号校验接口

3.1.协议说明

名称

说明

协议

HTTPS  POST

编码格式

UTF8

返回类型

application/json

URL

https://api.253.com/open/flashsdk/mobile-validate-web

 

3.2.请求参数

注:请求参数Body以application/x-www-form-urlencoded方式提交。

参数名

说明

appId

当前APP对应的appid,非空

token

运营商token, SDK返回,非空

mobile

需校验的手机号码,非空

sign

签名,非空 ,签名算法 hmacSHA256(所有传入参数按字段名排序后拼接的字符串,应用appKey) 后再16进制字符串转换 ,例:hmacSHA256(“appIdxxxxxxmobile11111111111outIdxxxxtokenxxxxxxxxxxxxxxxxx”,”xxxxxxx”)后的值:767123065B9CF379C86789650D10BDBE5D5C45830B79FC02F7DB83C131AD4AA1

outId

客户方流水号,可为空。

3.3.响应内容

注:响应body数据为JSON格式。

字段名

类型

说明

code

String

响应code码。200000:成功,其他失败。见附录响应code码

message

String

响应code码解释

chargeStatus

String

是否收费,枚举值:1 :收费 0:不收费

data

Object

 

data >isVerify

String

手机号是否校验通过。值: 1此号码是本机号码 ,  0此号码不是本机号码。

data >tradeNo

String

交易流水号

 

3.4.返回示例

{
    "code":"200000",
    "chargeStatus":1,
    "message":"
成功",
    "data":{
        "tradeNo":"18112115031414011",
        "isVerify":"1"
    }
}

三.本机号校验接口响应code码

状态码

描述

200000

请求成功

400001

参数校验异常

403000

用户校验失败

415000

请求数据转换异常

500000

系统异常

500002

数据处理异常

500003

业务操作失败

500004

远程调用失败

500005

账户余额异常

500006

请求外部系统失败

504000

系统超时

400101

在下游系统中的商户信息不存在

403101

账户被下游系统禁用

403102

账户在下游系统中没有被激活

510101

在下游系统中的用户产品可用数量不足

400102

商户IP地址在下游系统中不合法

400200

黑名单列表

400201

手机号码不能为空

400901

账户信息不存在

400902

应用类型信息不存在

500901

邮箱未设置

500902

账户信息已存在

500903

账户相关能力已激活

 

 

四.常见问题

1.本机号校验接口错误:appId不能为空

{"message":"请求非法,appId不能为空","code":"403000"}

问题排查方案:

检查是否传入appId字段。请求数据格式是否正确,本接口不支持发送JSON格式数据。

问题解决方案:

首先,请核对字段名称无误,使用正确的字段名。

其次,请确保请求使用POST方法,参数放到RequestBody中以application/x-www-form-urlencodedmultipart/form-data提交。

 

2.本机号校验接口错误:请求非法,签名验证不通过

{"message":"请求非法,签名验证不通过","code":"403000"}

问题排查方案:

请确保签名生成方式无误。

问题解决方案:

1、首先确保使用了正确的应用对应的appKey

2、其次请确保签名方式正确,签名字段的值由客户服务端生成,签名算法hmacSHA256(所有传入参数按字段名排序后拼接的字符串,应用appKey)后再进行16进制字符串转换的值。