Android SDK 接入指南

1.产品功能说明

本SDK为App实现机主身份验证功能,包含运营商短信验证以及其他方式。 它减少app开发者的在客户身份验证过程中的难度与费用,减少用户操作流程, 提升app用户的使用体验,为APP开发提供极大的便利。

2. SDK 包含内容

  1. 复制sai_sdk_1.2.6.jar(或aar文件)到工程libs/目录下;
  2.SAI_demo,一个完整的Android 项目,演示了认证的基本用法,可供参考;
  3.Android SDK集成指南;
  4.AndroidManifest.xml样例文件。

SDK 集成步骤

1. 创建开发者账号

访问秒验认证官网: 秒验认证官网


注册登录后并完成实名认证

2. 在官网上创建应用

按照官网要求填入项目信息,获得对应的AppId和AppSecret等;

3. 导入SDK开发包到你的应用程序项目

在Android studio中建立你的工程。

将 *.jar 拷贝到工程的libs目录下,如没有该目录,可新建。

将sdk所需要的资源文件(anim, drawable, drawable-xxhdpi, layout, values文件)从demo工程res-umc目录下的文件添加到项目工程中。

将 jniLibs 拷贝到工程的main目录下。

build.gradle配置如下:

android {
  ....
// 配置res-umc 资源目录
    sourceSets {
        main { res.srcDirs = ['src/main/res', 'src/main/res-umc']
             jni.srcDirs = []
               jniLibs.srcDirs = ['src/main/jniLibs']
         }
    }
 }

   dependencies {
    implementation files('libs/sai_sdk_1.2.6.2.jar')
  }

4. 编译版本配置

minSdkVersion:17

5. 配置AndroidManifest.xml

为保证SDK 认证功能够提供更加可靠的验证功能,需要一些权限来获取手机的设备信息。在SDK压缩包里的AndroidManifest.xml样例文件中,列出了验证中使用到的权限。为了提高验证的可靠性,请开发者在项目的AndroidManifest.xml中添加样例文件中列出的权限。

            <uses-permission android:name="android.permission.INTERNET"/>
            <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
            <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
            <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
            <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>

在application中配置activity.

             <!--  移动授权页面 -->
            <activity
                    android:name="com.cmic.sso.sdk.activity.LoginAuthActivity"
                    android:configChanges="orientation|keyboardHidden|screenSize"
                    android:screenOrientation="portrait"
                    android:launchMode="singleTop">
            </activity>
            <!--  联通、电信授权页面 -->
            <activity
                    android:name="com.aspirecn.loginmobileauth.AspLoginActivity"
                    android:configChanges="orientation|keyboardHidden|screenSize"
                    android:screenOrientation="portrait">
            </activity>
                            

6. 混肴配置

             -keepattributes Signature
             # SAI SDK基本功能
             -dontwarn org.ox.**
             -keep class org.ox.** { *; }
             -dontwarn com.aspirecn.**
             -keep class com.aspirecn.**{*;}
             # 运营商SDK 移动 电信 联通
             -dontwarn com.cmic.**
             -keep class com.cmic.** { *; }
             -dontwarn com.unicom.**
             -keep class com.unicom.** { *; }
             -dontwarn cn.com.chinatelecom.**
             -keep class cn.com.chinatelecom.** { *; }

7. 参数格式

请求参数 OxRequestParam

变量名 类型 描述
actionType String 操作类型
strData string JSON格式请求参数
binData byte[] Byte[] 文件数据流
extra Object 自定义参数,不参与请求。

响应结果 OxRequestResult

变量名 类型 描述
actionType String 操作类型
strData string 响应结果信息JSON格式
param OxRequestParam 请求时的数据

API 接口列表

SDK提供的API 接口,都集中在org.ox.face.OxClientEntry 类中。

1. 初始化

只有SDK初始化成功才能调用SDK 请求验证接口方法。SDK初始化,调用OxClientEntry中提供的init方法完成。

结果回调至pNotifier的 void onActionResult(OxRequestResult result);方法。

原型方法

        /**
         *  SDK初始化 请勿多次调用
         * @param context     上下文
         * @param param       OxRequestParam 类型数据
         * @param pINotifier  回调对象
         */
        public static void init(Context context, OxRequestParam param, OxNotifier pNotifier);

初始化调用方法实例

OxClientEntry.init(mContext, param, oxNotifier);

param 参数说明(格式JSON)

参数名称 参数类型 必填 描述
actionType String 响应类型:init_sdk
strData app_id string 官网注册获取的appId
app_secret string 官网注册获取的appSecret
options String 可选参数,JSON 格式
extra Object 自定义参数,不参与请求。

响应信息

参数名称 参数类型 非空 描述
actionType String 响应类型:init_sdk
strData code string 响应码 :“00000”成功
msg String 响应信息
param OxRequestParam 请求时的对象

strData格式

{"code":"00000","msg":"init success"}

2. 请求入口

SDK集成的功能:发送短信验证、短信校验、一键登验证功能,都可以调用OxClientEntry中的requestAction接口完成操作;

        /*** 服务操作的请求入口方法**/
        public static boolean requestAction(OxRequestParam param);
OxClientEntry中其它方法
        /**
          * 设置调试模式。
          * @param isDebug 是否为debug模式
          */
          public static void setDebugMode(boolean isDebug);

          /** * @param isCatchCrash 是否捕获异常*/
         public static void setCatchCrashMode(boolean isCatchCrash);

         /**
           * 需要权限:READ_PHONE_STATE, ACCESS_NETWORK_STATE
           * operatorType 获取网络运营商 1.移动流量 2.联通流量网络 3.电信流量网络
           *  networkType 网络状态:0未知;1流量 2 wifi;3 数据流量+wifi
           * return JSON
           */
         public static String getNetworkType();

         /**
          *  设置移动一键登录授权页面UI 风格配置
          * @param config Config
          */
        public static void setLoginThemeConfig(OxLoginThemeConfig config) ;

        /**获取移动登录UI配置信息*/
        public static OxLoginThemeConfig getLoginThemeConfig();

        /**
         *  移动自定义view添加到title 父视图组
         * @param name viewSetting name
         * @param viewSetting viewSetting
         */
        public static void addCustomViewSettingToTitle(String name, OxLoginCustomViewSetting viewSetting);

        /**
         * 移动自定义view添加到body 父视图组
         * @param name viewSetting name
         * @param viewSetting viewSetting
         */
        public static void addCustomViewSettingToBody(String name, OxLoginCustomViewSetting viewSetting);

        /**
         * @return 移动 title 父视图组中的 OxLoginCustomViewSetting
         */
        public static HashMap<String, OxLoginCustomViewSetting> getTitleCustomViewSettingMap();

        /**
         * @return 移动 body 父视图组中的 OxLoginCustomViewSetting
         */
        public static HashMap<String, OxLoginCustomViewSetting> getBodyCustomViewSettingMap();

        /**
         * 关闭授权页
         */
        public static void finishAuthActivity();
      
         /**  注销SDK的方法 */
         public static void deinit();

注意:有关一键验证授权页设置方法请参考demoSDK中《一键验证能力使用文档》。

3. 回调出口

新建一个类并实现OxNotifier接口。示例如下:(注:接口中的方法运行在子线程中).

        package org.ox.face;

        import org.ox.base.OxRequestResult;

        public interface OxNotifier {
           void onActionResult(OxRequestResult result);
        } 

接口调用指南

1. 短信验证

短信验证由客户端发起,收到短信验证码后校验短信验证码是否正确。

请求发送短信验证调用此方法,会向传入的手机号对应的手机发送一条短信(调用此接口会消耗验证次数或余额,优先消耗验证次数),短信验证码一分钟内只能发送一次,一分钟内多次调用会导致失败。

1.1. 请求短信验证码

请求参数

参数名称 参数类型 必填 描述
actionType String 请求类型:verify_by_sms_start
strData tel string 手机号
extra Object 自定义参数,不参与请求。

响应信息

参数名称 参数类型 非空 描述
actionType String 响应类型:verify_by_sms_start
strData tel string 手机号
code string 响应码 :“00000”成功
msg string 响应信息
verify_order_id string 平台订单id
param OxRequestParam 请求对象数据

1.2. 校验短信验证码

请求参数

参数名称 参数类型 必填 描述
actionType String 请求类型:verify_by_sms_check
strData tel string 手机号
sms_code string 短信验证码
extra Object 自定义参数,不参与请求。

响应信息

参数名称 参数类型 非空 描述
actionType String 响应类型:verify_by_sms_check
strData code string 响应码 :“00000”成功
msg string 响应信息
verify_token string 二次验证token
param OxRequestParam 请求对象数据

2. 一键登录

一键登录可快速获取当前手机号。更多移动互联网认证能力操作方法,请参考《一键验证能力使用文档》。

请求参数

参数名称 参数类型 必填 描述
actionType String 请求类型:verify_by_onekey
strData string -- 请求参数,格式JSON
extra Object 自定义参数,不参与请求。

响应信息

参数名称 参数类型 非空 描述
actionType String 响应类型:verify_by_onekey
strData code string 响应码 :“00000”成功
verify_token string 二次校验token
msg string 响应信息
tel string 本机手机号,成功时才能获取到
param OxRequestParam 请求对象数据

产品功能说明

本SDK为App实现机主身份验证功能,包含运营商短信验证以及其他方式。 它减少app开发者的在客户身份验证过程中的难度与费用,减少用户操作流程, 提升app用户的使用体验,为APP开发提供极大的便利。

接入流程

1. 申请APPID

(1)注册并登录客户平台。

(2)进入“应用管理-创建应用”,完成产品创建,您将获得一串32位的AppID、AppSecret、MasterSecret。
如果您已经完成产品创建,请在如下位置获取应用唯一标识码:“应用管理-应用列表-详情”,用于集成到SDK中。
注:为了保证您的数据安全,请勿泄露您的应用唯一标识码。

2. 导入SDK

(1)导入 SDK 的 framework 文件。

请将 OXSaiSDK.framework ,以及下图相关依赖库拷贝到应用工程的相应的目录下

项目配置

(1)添加NSAppTransportSecurity类型Dictionary。
在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES
注:适配iOS 9以上系统的Http传输协议

(2)在Xcode中找到 TARGETS-->Build Setting-->Linking-->Other Linker Flags 在这选项中需要添加 -ObjC


(3)配置下图系统依赖库


接入方法说明

1. 初始化SDK

方法用途:

用于应用启动后,初始化SDK

使用方法:

+ (void) initWithParams: delegate:方法进行初始化

方法接口:

+ (void)initWithParams:(NSDictionary *)params delegate:(id< OXActionDelegate >)delegate;

参数说明:

字段 参数 必填 类型 说明
params appId app_id string 平台申请的appid
appSecret app_secret string 平台申请的app_secret
扩展参数 options json 扩展参数
代理 delegate id 代理

示例代码

         NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
            params[@"app_secret"] = 52BB77D02D******A0E141B82EED9;
            params[@"app_id"] = 17BC76520B598**33261898424ED21E5;
            params[@"options"] = @"{\"KEY\":\"VALUE\"}";
        [OXClientEntry initWithParams: params delegate:self];
                        

回调参数:

成功

字段 参数 类型 说明
返回码 code NString 返回码
请求类型 action_type NString 接口请求类型

失败

字段 参数 类型 说明
返回码 code NString 返回码
请求类型 action_type NString 接口请求类型

回调方法

        - (void)oxActionInitSdkResponse:(NSDictionary *)response{
            if ([response[@"code"] isEqualToString:@"00000"]) {
                 [[OXHUD sharedHUD]showMessage:@"初始化成功"];
            }else{
                [[OXHUD sharedHUD]showMessage:[NSString stringWithFormat:@"初始化失败 code:%@",response[@"code"]]];
         }}

                        

2. 一键登录

方法用途:

无需填写手机号等其它操作,用户就可以一键登录

使用方法:

初始化成功后调用requestAction方法

方法接口:

+(void)requestAction:(OXActionType)type params:(NSDictionary *)params;

参数说明:

字段 参数 必填 类型 说明
验证类型 type OXActionType 验证类型枚举
(OXActionTypeVerifyByOnekey)
请求参数 params NSDictionary {"current_vc":UIViewController,"timeout":"5"}

示例代码

        [OXClientEntry verifyFactor:OXActionTypeVerifyByOnekey params:nil];     
                        

回调参数:

成功

字段 参数 类型 说明
action_type 请求类型 action_type NString 返回码接口请求类型
request_params 请求参数 request_params NSDictionary 请求参数
result 返回码 code NString 返回码
返回详情 msg NString 返回详情
手机号 tel NString 手机号码

失败

字段 参数 类型 说明
action_type 请求类型 action_type NString 返回码接口请求类型
request_params 请求参数 request_params NSDictionary 请求参数
result 返回码 code NString 返回码

回调方法

        - (void)onActionResult:(NSDictionary *)result{
            if([result [@"action_type"] integerValue]==OXActionTypeVerifyByOnekey){
           }

                        

3. 短信验证

方法用途:

通过短信进行机主验证

使用方法:

初始化成功后调用requestAction方法

方法接口:

+(void)requestAction:(OXActionType)type params:(NSDictionary*)params;

参数说明:


字段 参数 必填 类型 说明
验证类型 type OXActionType 验证类型枚举
(OXActionTypeVerifyBySmsStart、OXActionTypeVerifyBySmsCheck)
请求参数 params NSDictionary 短信开启:{"tel":"手机号码"}
短信验证:{"tel":"手机号码","sms_code":"短信验证码"}

示例代码

        NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
        params[@"tel"] = @"15555555555";
        [OXClientEntry requestAction:OXActionTypeVerifyBySai params: params];               
                        

回调参数:

成功

字段 参数 类型 说明
action_type 请求类型 action_type NString 返回码接口请求类型
request_params 请求参数 request_params NSDictionary 请求参数
result 返回码 code NString 返回码
订单ID verify_order_id NString 订单ID(短信开启)
二次校验token verify_token NString 二次校验token(短信验证)
返回详情 msg NString 返回详情

失败

字段 参数 类型 说明
action_type 请求类型 action_type NString 返回码接口请求类型
request_params 请求参数 request_params NSDictionary 请求参数
result 返回码 code NString 返回码

回调方法

        - (void)onActionResult:(NSDictionary *)result{
               if([result[@"action_type"] integerValue]== OXActionTypeVerifyBySmsStart){
                
        }
               if([result[@"action_type"] integerValue]== OXActionTypeVerifyBySmsCheck){
                
        }
            ………………
           ………………
        }     
                        

iOS SDK 运行流程图

1. 短信校验码——验证流程图


2. 二次验证——验证流程图


错误码

返回码 返回描述
-1 未知错误
00000 成功
00001 参数错误
00002 无数据
00005 短信验证码超时
00009 请求失败
00031 验证失败
14021 手机号错误
14043 手机号被绑定
15101 手机号未绑定
15001 用户登录Token超时
15002 appToken无效错误
21108 模板错误
14033 使用次数不足
14109 账户余额不足
11026 包名错误
20115 签名错误
11001 appID错误
11112 appID与包名不匹配
11117 app服务未开通
11118 app应用未审核通过
11119 应用被禁用
20124 temp_code错误
21056 发送短信失败
10032 短信已发送
10069 短信发送太频繁
14103 开发者身份验证失败
14023 开发者验证失败
14024 开发者未授权
10110 网络请求异常
10112 JSON格式错误
45001 数据网络切换异常
45002 未检测到数据网络
45003 未检测到网络
45004 未安装SIM卡
45009 登录取消
45017 联通取号失败
45018 移动取号失败
45019 电信取号失败
45028 免密登录切换账号
45029 免密登录受限
55001 运营商内部错误
55002 请求签名错误
55003 包签名/Bundle ID错误
55004 网关IP错误
55005 appid不存在
55006 短信异常
55007 scrip失效
55008 token请求过于频繁
55009 预取号异常
55010 网络请求出错
55011 取号上限
55012 appid不在白名单
55013 数据解析异常
55014 数据异常
55015 授权页异常
55016 CA根证书校验失败
55017 本机号码校验异常
55018 服务器繁忙
55019 运营商请求超时
55020 异网取号失败
65001运营商接口降级
65002系统初始化卡商信息异常
65003运营商接口未知错误
65004系统内部错误
65005系统繁忙
65006请求非法
65007请求数据有误
65008请求提交重复
65009请求签名验证失败
65010请求字段验证失败
65011MQ 消息发送异常
65012APP 包名不一致
65013该企业没有对应的 IP 白名单列表
65014该企业没有为该 IP 配置白名单
65015手机号码验证失败
65016该应用不存在
65017该应用状态错误
65018该应用状态为能力配置中,无效丌可使用
65019该应用没有提供该能力产品类型
65020该应用没有对应可用预授权或预授权余额丌足
65021该应用没有对应可用供应商 APPID
65022该预授权、销售品类型、运营商没有对应可用销售品信息
65023该预授权没有对应可用预存款信息
65024该预授权 ID 错误
65025该预授权的运营商没有对应的供应商信息
65026运营商错误
65027联通平台请求错误
65028移动平台请求错误
65029电信平台请求错误
65030移劢平台请求短信校验失败
65031移劢平台请求短信验证码过期
65032一键登录模块没有初始化
65033一键登录模块初始化失败
65034无法识别卡运营商
65035当前手机网络超时
65036移动运营商 token 获取失败
65037联通运营商 token 获取失败
65038电信运营商 token 获取失败
65039没有配置移劢运营商能力
65040没有配置联通运营商能力
65041没有配置电信运营商能力
65042SDK 内置补偿短信通道已关闭
65043运营商 SDK 内部错误
65044一键免密登录未配置 controller
65045UIModel 未设置, 请重新设置 ASPThreeNetsUIModel

token 二次校验

1. 接口描述

SDK身份验证成功后,客户端会获取到一个verify_token,sai平台可以对验证成功后的令牌二次校验,以提升安全性。通过服务端到服务端的校验,用户可以在二次校验通过后,允许用户操作(如修改密码)。


(注:app_sign生成规则,api_master_secret + current_time组成的字符串进行 md5加密)。

2. 请求说明

请求示例

HTTP:POST

请求URL:http://my.wlwx.com/req/api/server/Server/recheckVerifyToken

参数名称 参数类型 描述
app_id string 应用ID
app_sign string 应用签名
current_time string 当前时间
verify_token string 验证结果token
request_id string 用户端的请求序列号
tel string 一键验证产品为必填,其他产品选填

示例:

        {
            "app_id" :"WOKCIUUMFWOSRKOICUDODSW",
            "app_sign" :"7530A4C8AD469A93B4EB2202F670B979",
            "current_time" :"1530155497246",
            "verify_token" :"WE32F9SD8DKX8FEWJC8K42LJL46",
            "request_id" :"XX123456",
            "tel" :"183XXXX4152"
        }

3. 返回说明

参数名称 参数类型 描述
code string 错误码
msg string 错误信息
request_id string 每个http请求的唯一标识

示例:

        {
            "code" :"0",
            "msg" :"" ,
            "request_id" :"XX123456"
        } 

4. 服务器时间校对接口

请求示例

HTTP:POST

请求URL:http://my.wlwx.com/req/api/server/Server/serverTimeStamp13Check

(注:请求参数有time_stamp13参数,则多返回一个时间差参数)

参数名称 参数类型 必须 描述
time_stamp13 string false 验证结果token

示例:

{"time_stamp13": "1530155497246"} 

返回参数:参数类型JSON

参数名称 参数类型 描述
code string 错误码
msg string 错误信息
system_time_stamp13 string 系统时间
time_diff string 与系统的时间比对

示例:

        {
            "code": "00000",
            "msg": "OK",
            "system_time_stamp13": 1530157458206,
            "time_diff": 1960960
        }

短信验证码

1. 接口描述

发送短信接口

接口Url: http://my.wlwx.com/req/api/server/Sms/smsSend

支持格式: JSON

HTTP:POST

2. 请求参数

样例:

    {
        "sign": "xxxxx",
        "app_id": "xxxxx",
        "sms_template": "模板名称",
        "sms_param": {"code": "457156"},
        "tel": "138XXXXXXXX",
        "time_stamp13": "1520489490817"
    }
                    

sign = MD5(APP服务秘钥 + time_stamp13)

参数 必须 类型范围 说明
sign true String 请求签名(32位)
time_stamp13 true String 13位时间戳
app_id true String 应用id
tel true String 手机号码
sms_template true String 模板名称
sms_param true JSON 模板参数

3. 返回参数

格式:JSON

样例:

    {
    "code":"00000",
    "msg":" OK" ,
    "order_id":"1234567890"
    }
                    

参数意义:

参数 类型范围 说明
code String "00000": 代表成功
msg String "OK": 代表成功
order_id String 订单号
*注意:如果接收到的错误码不是00000,都视为有错误。
*注意:如果HTTPS请求超时,不代表未接收订单,可以根据单号查询订单是否接收成功
请做好异常处理。

4. demo 下载

服务端API demo包含java、php演示代码,相关接入操作可参考demo中的代码演示。


java/php Demo下载 OxApiDemo.zip

错误码列表

  -1               未知错误
  00000            成功
  00001            参数错误
  00002            无数据
  00005            短信验证码超时
  00009            请求失败
  00031            验证失败
  14021            手机号错误
  14043            手机号被绑定
  15101            手机号未绑定
  15001            用户登录Token 超时
  15002            appToken 无效错误
  21108            模板错误
  14033            使用次数不足
  14109            账户余额不足
  11026            包名错误
  20115            签名错误
  11001            appID 错误
  11112            appID 与包名不匹配
  11117            app 服务未开通
  11118            app 应用未审核通过
  11119             应用被禁用
  20124            temp_code错误
  21056            发送短信失败
  10032            短信已发送
  10069            短信发送太频繁
  14103            开发者身份验证失败
  14023            开发者验证失败
  14024            开发者未授权
  10110            网络请求异常
  10112            JSON格式错误
  45001            数据网络切换异常
  45002            未检测到数据网络
  45003            未检测到网络
  45004            未安装SIM卡
  45005            没有权限 ACCESS_NETWORK_STATE
  45006            没有权限 READ_PHONE_STATE
  45009            登录取消
  45017            联通取号失败
  45018            移动取号失败
  45019            电信取号失败
  45021            取号请求时获取imsi失败
  45023            未知错误一般出现在线程捕获异常
  45025            授权请求时获取imsi失败
  45028            免密登录切换账号
  45029            免密登录受限
  55001            运营商错误
  55002            请求签名错误
  55003            包签名错误
  55004            网关IP错误
  55005            appid不存在
  55006            短信异常
  55007            scrip失效
  55008            token请求过于频繁
  55009            预取号异常
  55010            网络请求出错
  55011            取号上限
  55012            appid不在白名单
  55013            数据解析异常
  55014            数据异常
  55015            授权页异常
  55016            CA根证书校验失败
  55017            本机号码校验异常
  55018            服务器繁忙
  55019            运营商请求超时
  55020            异网取号失败
  65001            运营商接口降级
  65002            系统初始化卡商信息异常
  65003            运营商接口未知错误
  65004            系统内部错误
  65005            系统繁忙
  65006            请求非法
  65007            请求数据有误
  65008            请求提交重复
  65009            请求签名验证失败
  65010            请求字段验证失败
  65011            MQ 消息发送异常
  65012            APP 包名不一致
  65013            该企业没有对应的 IP 白名单列表
  65014            该企业没有为该 IP 配置白名单
  65015            手机号码验证失败
  65016            该应用不存在
  65017            该应用状态错误
  65018            该应用状态为能力配置中,无效丌可使用
  65019            该应用没有提供该能力产品类型
  65020            该应用没有对应可用预授权或预授权余额丌足
  65021            该应用没有对应可用供应商 APPID
  65022            该预授权、销售品类型、运营商没有对应可用销售品信息
  65023            该预授权没有对应可用预存款信息
  65024            该预授权 ID 错误
  65025            该预授权的运营商没有对应的供应商信息
  65026            运营商错误
  65027            联通平台请求错误
  65028            移动平台请求错误
  65029            电信平台请求错误
  65030            移劢平台请求短信校验失败
  65031            移劢平台请求短信验证码过期
  65032            一键登录模块没有初始化
  65033            一键登录模块初始化失败
  65034            无法识别卡运营商
  65035            当前手机网络超时
  65036            移动运营商 token 获取失败
  65037            联通运营商 token 获取失败
  65038            电信运营商 token 获取失败
  65039            没有配置移劢运营商能力
  65040            没有配置联通运营商能力
  65041            没有配置电信运营商能力
  65042            SDK 内置补偿短信通道已关闭
  65043            运营商 SDK 内部错误
  65044            一键免密登录未配置 controller
  65045            UIModel 未设置, 请重新设置 ASPThreeNetsUIModel