文档中心 > 阿里聚安全

风控-android API

风险采集,获取数据风控wtoken

import com.alibaba.wireless.security.open.SecurityGuardManager;
import com.alibaba.wireless.security.open.securitybody.ISecurityBodyComponent;
import com.alibaba.wireless.security.open.securitybody.SecurityBodyDefine;

String getSecurityBodyDataEx(
						String timeStamp, 
						String appKey, 
						String autcode, 
						HashMap<String, String> extendParam, 
						int flag, 
						int env
) throws SecException;

在需要使用数据风控的场景,如注册、登陆、活动页面,可以在用户点击“注册”、“登陆”等业务按钮时、业务逻辑处理前获得该token,服务端通过该token查询风险结果。

入参

timeStamp null

appKey null

authCode 0335

extendParam null

flag SecurityBodyDefine.OPEN_SECURITYBODY_FLAG_FORMAT_GENERAL;

env SecurityBodyDefine.OPEN_SECURITYBODY_ENV_ONLINE;

返回

调用成功不为空的wtoken,需要将此token传递到自己的server端,再由自己的server端将此 token透传到聚安全server端,获得最后的风控校验结果

注意

发生获取不到wtoken,多半因为0335图片设置有问题。一个图片和应用绑定。如果变更包名,需要到聚安全网站生成新的图片;如果一个app存在不同版本在使用不同包名,需要重新获得图片;在使用msauthdemo时,请将demo的包名上传apk的包名。如果同一个app使用不同的keystore签名,不同keystore签名apk也需要申请不同的图片

异常错误诊断

接口不抛异常。当调用出错的时候,会在命令行中打印相应的错误日志,错误日志以SG ERROR开头:

错误码 含义
SEC_ERROR_SECURITYBODY_INVALID_THREAD 1401 参数不正确,请检查输入的参数
SEC_ERROR_SECURITYBODY_INVALID_THREAD 1402 接口调用线程错误。请在非UI线程内调用此接口(因为本接口有耗时操作)。
SEC_ERROR_SECURITYBODY_NET_ERROR 1403 网络超时或网络断开
SEC_ERROR_SECURITYBODY_SERVER_ERROR 1404 聚安全服务端器错误,请确认应用是否有权限访问此接口
SEC_ERROR_SECURITYBODY_APPKEY_ERROR 1405 加密文件yw_1222_0335.jpg格式或其内数据有问题。常见原因为用错图片(iOS与Android图片不通用)或者图片内没有存放对应的Top Appkey
SEC_ERROR_SECURITYBODY_SIGNATURE_ERROR 1406 加密文件yw_1222_0335.jpg格式或其内数据有问题。常见原因为用错图片(iOS与Android图片不通用)或者图片内没有存放对应的Top Appkey
SEC_ERROR_SECURITYBODY_ENCRYPTION_ERROR 1407 数据加密错误
SEC_ERROR_SECURITYBODY_TOP_ERROR 1408 TOP协议错误,请检查手机时间设置是否正常,加密图片yw_1222_0335.jpg使用是否正确
SEC_ERROR_SECURITYBODY_CONCURRENT 1409 接口被并发调用错误;本接口不支持多线程同时调用
SEC_ERROR_SECURITYBODY_UNSUPPORTED 1498 接口在这个版本的SDK中不支持
SEC_ERROR_SECURITYBODY_UNKNOWN_\ERR 1499 未知错误,请重试

验证类型

import com.alibaba.verificationsdk.ui.VerifyType;

public enum VerifyType {
    SMS(1),
    CALL(2),
    NOCAPTCHA(3),
    MAIL(4),
    SHAKING(5),
    TILTBALL(6),
    LIVENESS(7);
    private int value;
    private VerifyType(int value) {
        this.value = value;
    }
    public int getValue() {
        return value;
    }
}
类型 作用
NOCAPTCHA 滑动验证
SMS 短信验证码
CALL 电话接听验证码

依赖风险识别的验证UI

import com.alibaba.verificationsdk.ui.IActivityCallback;
import com.alibaba.verificationsdk.ui.VerifyActivity;
import com.alibaba.verificationsdk.ui.VerifyType;
		
		/**
		 *  唤起验证UI
		 *
		 *  @param ctx         传入调用Activity的上下文
		 *  @param parameters  传入参数
		 *  @param verifyType  目前支持,语音,滑动验证,短信
		 *  @param authcode  	传0335
		 *  @param appkey    	传空
		 *  @param IActivityCallback  验证界面回调接口,
		 * 					    由应用自己实现
		 */
		public static void startVerifyUI(Context ctx, //
										 Map<String,String> parameters,
								         VerifyType verifyType, 
								         String authcode,String appkey,
								         IActivityCallback callback)

parameters 参数设置

key value
VerifyActivity.APP_DATA 应用服务器返回给应用的app数据

image

为后端通过JAQ服务返回的风险识别的结果。 具体参考 数据风控-服务器接入指南-风险识别

verifyType 目前支持,语音,滑动验证,短信

authcode 设置为**0335**

appkey 设置为**null**

纯风险验证UI

import com.alibaba.verificationsdk.ui.IActivityCallback;
import com.alibaba.verificationsdk.ui.VerifyActivity;
import com.alibaba.verificationsdk.ui.VerifyType;
		
		
		import com.alibaba.verificationsdk.ui.VerifyActivity;
		/**
		 *  唤起验证UI
		 *
		 *  @param ctx         传入调用Activity的上下文
		 *  @param verifyType  目前滑动验证
		 *  @param authcode  	传0335
		 *  @param appkey    	传空
		 *  @param IActivityCallback  验证界面回调接口,
		 * 					    由应用自己实现
		 */
		public static void startSimpleVerifyUI(Context ctx, //
								         VerifyType verifyType, 
								         IActivityCallback callback)

纯风险验证UI和依赖风险识别的验证UI区别

纯风险验证UI是纯验证接口,功能为纯粹的验证,用户可以使用聚安全的风控识别能力也可以使用原有系统能力。目前支持的验证类型为滑动.从能力上讲,纯风险验证UI是做为人机识别验证模式

依赖风险识别的验证UI会将前面JAQ风险识别带入到验证中,识别的结果以parametersverifyType形式传入。由于用户服务器可以将带验证人的电话号码传给JAQ服务器,所以在滑动以外还可以支持语音``短信。从能力上看依赖风险识别的验证UI在人机识别验证模式以外,还可以实现对于人身份核实(比如,改密,注册场景)

验证界面取消回调

在用户取消验证情况下调用

public interface IActivityCallback {
    onNotifyBackPressed()
    }

风险验证结果回调

验证过程中终止或者验证结束时触发

import com.alibaba.verificationsdk.ui.VerifyActivity;
/**
 *  风险验证结果回调
 *
 *  @param retInt          验证返回状态码
 *  @param detail          返回详细信息,包含错误信息,二次验证用sessionid
 */
public interface IActivityCallback {
    void onResult(int retInt, Map<String, String> code);
}

retInt验证返回状态码

返回值 含义
VERIFY_SUCC 验证成功
VERIFY_FAILED 验证失败

detail返回值详情

键值 类型 含义
errorMsg 失败时查详细的错误/失败信息
sessionID String 验证成功/失败返回sessionID做二次验证,如果异常会返回null
errorCode 失败类型

关于detailsessionid详细定义

具体参考 数据风控-服务器接入指南-风险验证

关于detailerrorCode详细定义

含义
ERROR_FROM_SERVER 表示服务端出错
ERROR_FROM_CLIENT 表示网络等问题,返回数据出错
ERROR_FROM_BUSSINESS 表示具体业务

关闭验证UI的接口

VerifyActivity.finishVerifyUI();

风险采集与验证调用示例

Step 1: 风险采集

获得风险采集信息

int flag = SecurityBodyDefine.OPEN_SECURITYBODY_FLAG_FORMAT_GENERAL;
                int env = SecurityBodyDefine.OPEN_SECURITYBODY_ENV_ONLINE;
                HashMap<String, String> extendParam = null;
                ISecurityBodyComponent sbComponent;
                sbComponent = SecurityGuardManager
                            .getInstance(LoginActivity.this.getApplicationContext()).getSecurityBodyComp();
 
 
 wtoken = sbComponent.getSecurityBodyDataEx(null,
                            null,
                            "0335",
                            extendParam,
                            flag,
                            env);

wtoken在风险识别使用 参考 数据风控-服务器接入指南-风险识别

Step 2: 风险验证

Map<String,String> params = new HashMap<>();

params.put(VerifyActivity.APP_DATA,app_data);
image

Map<String,String> params = new HashMap<>();
params.put(VerifyActivity.APP_DATA,app_data);
VerifyActivity.startVerifyUI(LoginActivity.this, params, VerifyActivity.VerifyType.SMS, 
"0335",null,
new VerifyActivity.IActivityCallback() {
    @Override
    public void onNotifyBackPressed() {

    }

    @Override
    public void onResult(int retInt, Map<String, String> code) {
        switch ( retInt ) {
            case VerifyActivity.VERIFY_SUCC:
                Log.e(LOG_TAG,code.get("sessionID"));
                break;
            case VerifyActivity.VERIFY_FAILED:
                Log.e(LOG_TAG,code.get("errorCode"));
                Log.e(LOG_TAG,code.get("errorMsg"));
                break;       
            default:
                break;
        }
    }
});

纯验证调用示例

Step 1: 风险验证

VerifyActivity. startSimpleVerifyUI(LoginActivity.this,
VerifyActivity.VerifyType. NOCAPTCHA,   "0335",null,new VerifyActivity.IActivityCallback() {
    @Override
    public void onNotifyBackPressed() {

    }

    @Override
    public void onResult(int retInt, Map<String, String> code) {
        switch ( retInt ) {
            case VerifyActivity.VERIFY_SUCC:
                Log.e(LOG_TAG,code.get("sessionID"));
                break;
            case VerifyActivity.VERIFY_FAILED:
                Log.e(LOG_TAG,code.get("errorCode"));
                Log.e(LOG_TAG,code.get("errorMsg"));
                break;       
            default:
                break;
        }
    }
});

Demo代码

多语言定制

  1. verificationsdklib.aar改为zip,使用zip解压缩

  2. 加入values-xx特定语言文件夹

  3. 添加完成后再次压缩为zip

FAQ

关于此文档暂时还没有FAQ
返回
顶部