用户工具

智能验证接口_android

智能验证接口


1 文档说明

1.1 功能描述

智能验证SDK为开发者提供一个完全透明、方便、高效的验证服务,智能验证平台聚合了稳定的短信、语音验证码服务,开发者无需再开发自己的短信通道、语音网关,而且基于公共云的强大服务,使得验证能逐步避免下发短信、语音手机号的方式验证,从而更快速,更准确快速验证,解决APP验证的验证难题、提升产品体验。

1.2 阅读对象

本文档主要阅读对象为开发人员,包括客户端和服务端。

1.3 业务术语

术语 解释
下发 智能验证平台使用自有的聚合SMS、语音能力发送短信或者
发起呼叫告知用户验证码
异步通知 在智能验证平台正确验证过手机号后,在完成返回给
APP通知的同时,执行异步线程通知开发者服务器验证结果
签名 本文档中涉及的签名都是以MD5的32位小写格式,签名字符
串(开发者主账号+应用ID+手机号+应用配置的密钥)

2 开发前准备

2.1 注册UCPaaS用户账号

登录www.ucpaas.com官网,注册(已经有账号的跳过)

UCPaas运营人员审核后,可执行下一步创建应用

2.2 创建应用

登录后管理中心,“应用管理”→“应用列表”一栏中,点击“创建应用”,可进入填写应用资料页面。

配置项目:

指定智能验证配置项:

2.3 创建智能验证短信模板

每个应用下可创建一个(只能有一个)智能验证短信的模板

注意: 模板里只能有两个参数,例如:
您注册的xx应用验证码为{1},请于{2}分钟内正确输入验证码
参数{1}会根据生成规则自动生成、参数{2}是开发者自定义的时间值

2.4 开发环境准备

2.4.1 复制SDK文件到工程

将sdk文件复制到工程libs目录下。

2.4.2 导入SDK到工程

在您的工程所在的工作空间下,导入sdk到工程,右键点击工程选择properties,如图:

选择Add JARs,在工程libs目录下找到SDK,点击OK按钮

2.4.3 配置AndroidManifest.xml

将demo工程中AndroidManifest.xml的相关配置,复制到您的工程目录AndroidManifest.xml文件中(含权限配置)。

3 功能演示

3.1 下发验证码场景

当用户手机未通过智能验证时,需要下发短信/语音验证码的方式验证手机号的有效性。

流程说明:
1) 请求1的流程是发生在开发者自己的客户端和服务器,主要检测手机是否已经注册,如果未注册,则返回签名作为请求2中调用智能验证SDK的参数;

2) 请求2 执行下发验证码的操作,具体接口参数详见“接口调用“中的”请求验证“接口说明;

3) 请求3为提交验证码验证结果,检查用户的手机有效性;

4) 异步通知结果详见“5 服务器异步通知说明”;

3.2 智能验证通过场景

流程说明:
1) 请求1的流程是发生在开发者自己的客户端和服务器,主要检测手机是否已经注册,如果未注册,则返回签名作为请求2中调用智能验证SDK的参数;

2) 请求2 执行下发验证码的操作,具体接口参数详见“接口调用“中的”请求验证“接口说明;

3) 请求3为提交验证码验证结果,检查用户的手机有效性;

4) 4)异步通知结果详见“5 服务器异步通知说明”;

4 接口调用

4.1 请求验证

4.1.1 功能描述

提交验证请求,根据用户手机号在智能验证的云端服务返回验证结果,可以分短信 或者语音下发验证码,也可能

4.1.2 接口说明
public static void getVerificationCode(Context mContext,String sign,String sid,String appid,
String appName,int seconds,int business,String phone,
VerificationCodeListener verificationCodeListener)

请求参数说明:

名称 说明
mContext 当前程序上下文
sign 签名
sid 开发者主账号
appid 应用ID
appName 应用描述
seconds 替换模板中的“有效时间”参数,单位秒
如模板:你注册的验证码{1},请在{2}秒内输入。
此处参数会自动替换{2}参数
business 验证业务类型,当前智能验证业务参数值为1
phone 用户手机号
verificationCodeListener 回调监听器
4.1.3 调用示例
/**
 * 
 * 获得验证码  (demo 源码)
 * @author: xiongjijian
 * 
 */
 
private void getVerificationCode(String phone , String sign){
    VerificationCode.getVerificationCode(RegisterActivity.this, sign, "4c1990a5c1ad2674bc94bc39a6fd0699", "efb7e1de9da649fa83881afea2841cd7", "com.yzx.yunyanzhengdemo", 60, 1, phone, new VerificationCodeListener() {
        @Override
        public void onVerificationCode(int arg0, UcsReason arg1) {
            vfc=true;
            if(arg0==1){
                Message msg = new Message();
                msg.obj = "短信";
                msg.what = 4;
                mUiHandler.sendMessage(msg);
            }else{
                Message msg = new Message();
                msg.obj = "语音";
                msg.what = 4;
                mUiHandler.sendMessage(msg);
            }
            if(arg1.getReason() == 300250){
                if(arg0 == 0){
                    numpage++;
                    mUiHandler.sendEmptyMessage(2);
                }else {
                    vfc_result=true;
                    mUiHandler.sendEmptyMessage(1);
                }
            }else{
                numpage--;
            }
        }
    });
}

4.2 提交验证

4.2.1 功能描述

用户在收到短信或语音下发的验证码后,输入提交验证,APP调用SDK来完成验证码的校验

4.2.2 接口说明
public static void doVerificationCode(Context mContext,String phone,String verifycode, String sid, String appid, VerificationCodeListener verificationCodeListener)

参数说明:

名称 说明
mContext 当前程序上下文
phone 用户手机号
verifycode 验证码
sid 开发者主账号
appid 应用ID
verificationCodeListener 回调监听器
4.2.3 调用示例
/**
 * 对验证码验证 (demo 源码)
 * @author: xiongjijian
 * 
 */
 
private void StartVerificationCode() {
    if(vfc_result){
        //stopCallTimer();
        vfc_result=false;
        VerificationCode.doVerificationCode(RegisterActivity.this, phonenum, et_data_verification.getText().toString(), "4c1990a5c1ad2674bc94bc39a6fd0699", "efb7e1de9da649fa83881afea2841cd7", new VerificationCodeListener() {
            @Override
            public void onVerificationCode(int arg0, UcsReason arg1) {
                switch (arg1.getReason()) {
                    case 300250:
                        mRequestHandler.sendEmptyMessage(0);
                        mUiHandler.sendEmptyMessage(2);
                        break;
                    case 300251:
                        mRequestHandler.sendEmptyMessage(1);
                        break;
                    case 300252:
                        mRequestHandler.sendEmptyMessage(2);
                        break;
                    ….
                    default:
                        System.out.println("BBB");
                        mRequestHandler.sendEmptyMessage(99);
                        break;
                    }
                vfc_result=true;
            }
        });
    }
}

5 服务器异步通知参数说明

5.1 描述

当用户手机号在智能验证平台通过验证后,在返回SDK的HTTP结果时,执行异步线程通知开发者服务器的成功验证结果。开发者服务器在收到通知后,请注意做签名校验防止恶意请求。

5.2 列表

-表- 回调验证成功参数

参数 参数名称 类型 说明
appid 开发者id String 开发者在我方注册的应用id
phone 手机号 String 用户手机号
sign 签名 String 签名

5.3 样例

http://www.xxx.com/callback/?appid=00e1d21234567891024e1a123456cfa3&phone=13800038000&sign=9d801affd5eadd325b8217430ec809e6

签名字符串: (开发者主账号+应用ID+手机号+应用配置的密钥)

回调请求方式: POST

例如:
开发者主账号:0316894c88d389035113e4bf01c30e2f
应用ID:00e1d21234567891024e1a123456cfa3
手机号:13800038000
秘钥:private_key
MD5(0316894c88d389035113e4bf01c30e2f00e1d21234567891024e1a123456cfa313800038000private_key)
MD5后sign = 9d801affd5eadd325b8217430ec809e6 (注意是小写)

开发者服务器收到请求后返回: {“result”:”success”}

6 错误码

-表- 客户端错误码表

参数 参数名称
300250 验证成功
300251 开发者账号无效
300252 验证码错误
300253 验证码过期
300254 30S内重复请求
300255 签名错误
300256 手机号码无效
300257 验证码参数错误
300258 获取验证码失败

页面工具