反欺诈

反欺诈

前言

进行反欺诈接入前请先完成SDK的接入与初始化

功能说明

反欺诈主要用于识别设备风险等级
提供两种接入方式,请业务方根据自身特点进行选择。

  • 客户端主动触发模式
    客户端在注册、登录时分别调用注册保护、登录保护接口。此种方式适合防范电商刷单、秒杀活动的防范。

  • 服务端校验模式
    客户端只需完成初始化操作,获取gyuid(设备标识),服务端根据业务需要,定期根据gyuid获取设备风险等级。适用于新闻资讯类APP

整体流程

  • 注册保护、登录保护整体流程

接口列表

方法 功能说明
checkRegister 注册保护接口,在注册时调用(客户端主动触发模式)
checkLogin 登录保护接口,在登录时调用(客户端主动触发模式)

接口说明

1、注册保护接口

接口描述


/**
 注册保护接口

 @param checkModel 校验模型
 @param callback 通用接口回调
 */
+ (void)checkRegister:(GyCheckModel *)checkModel withCallback:(GyVerifyCallback)callback;

输入参数

开发者通过类 GyCheckModel 根据以下参数构造 GyCheckModel 对象,通过调用API + (void)checkRegister:(GyCheckModel *)checkModel withCallback:(GyVerifyCallback)callback;,注册风险等级在 GyVerifyCallback 回调中。

参数名称 是否必填 类型 描述
account 必选 String 用户唯一标识,如果是手机号or邮箱,请提供 MD5 值
email 可选 String 用户的邮箱
pn 可选(建议填写) String 用户的手机号MD5值
pwd 可选 String 用户的密码
nickName 可选 String 昵称
registerTime 可选 String 注册时间戳,单位秒
runEnv 可选 String 用户客户端运行环境,取值:
2: WEB,3: WAP,4: IOS_PHONE,5: ANDROID_PHONE,
6: WINDOWS_PHONE,7: IOS_TABLET,8: ANDROID_TABLET,
9: WINDOWS_TABLET,10: WINDOWS_DESKTOP,11: MAC_DESKTOP,
12: LINUX_DESKTOP
moveCount 可选 String 用户操作过程中的move类事件的次数,包括:mouseMove、touchMove等等
clickCount 可选 String 用户操作过程中鼠标点击次数,包括:click、mousedown、touchStart等事件
keyCount 可选 String 用户操作过程中键盘的摁键次数
operatingTime 可选 String 注册操作耗时,单位秒
ip 可选 String 注册来源的外网IP
appVer 可选 String APP版本
mac 可选 String 设备mac地址
idfa 可选 String 设备的idfa
referrer 可选 String 用户http请求的Referrer头
userAgent 可选 String 用户http请求的UserAgent
xForwardFor 可选 String 用户http请求的X-Forwarded-For头信息,或其他记录代理信息的http头信息
result 可选 String 注册结果 0:失败1:成功
reason 可选 String 失败原因 0:其他 1:参数错误 2:帐号冲突 3:验证错误

验证接口回调参数说明

回调参数 参数说明
GyVerifyCallback 接口返回信息

回调data中包含信息说明:

参数名称 类型 描述
level String 分为0-4五个等级。 0为安全用户。1和2为怀疑用户。3和4为风险用户
riskType Array 1:账号风险 2:行为风险 3:环境风险

请求示例

    GyCheckModel *model = [[GyCheckModel alloc]init];
    model.account = @"69B64959969AF7DB11C5ED182495FB2E";
    model.email = @"69B64959969AF7DB11C5ED182495FB2E";
    model.pn = @"6E3652F544C1352516CF1997039F0660";
    model.pwd = @"E10ADC3949BA59ABBE56E057F20F883E";
    model.nickName = @"nickName";
    model.registerTime = @"1521440310";
    model.runEnv = @"4";
    model.moveCount = @"1";
    model.clickCount = @"3";
    model.keyCount = @"10";
    model.operatingTime = @"60";
    model.ip = @"192.168.1.3";
    model.appVer = @"1.1.0";
    model.mac = @"";
    model.idfa = @"1E2DFA89-496A-47FD-9941-DF1FC4E6484A";
    model.referrer = @"http://www.getui.com";
    model.xForwardFor = @"http://www.getui.com";
    model.result = @"1";
    model.reason = @"0";
    [[CommonToastHUD sharedInstance] showActivityView:@"正在发送请求"];
    [GeYanSdk checkRegister:model withCallback:^(NSDictionary *verifyDictionary) {
        [[CommonToastHUD sharedInstance] hideActivityView];
        NSInteger resultCode = [verifyDictionary[@"result"]integerValue];
        if (resultCode == 20000) {
            [[CommonToastHUD sharedInstance]showTips:verifyDictionary[@"msg"]];
        }else{
            [[CommonToastHUD sharedInstance]showTips:[NSString stringWithFormat:@"Fail with code : %ld,msg : %@",resultCode,verifyDictionary[@"msg"]]];
        }    }];

结果回调示例

{
    data =    {
        data =    {
            // 风险等级
            level = 2;
            // 风险类型
            riskType =    (
                3,
                2
            );
            // 服务端查询反欺诈结果凭证
            token = "GY-AF-20180614-r6Dwt1do4t7UAX2nIccZV";
        };
        msg = "\U6210\U529f";
        result = 20000;
    };
    errno = 0;
}

2、登录保护接口

接口描述

/**
 登录保护接口

 @param checkModel 校验模型
 @param callback 通用接口回调
 */
+ (void)checkLogin:(GyCheckModel *)checkModel withCallback:(GyVerifyCallback)callback;

输入参数

开发者通过类 GyCheckModel 根据以下参数构造 GyCheckModel 对象,通过调用API + (void)checkLogin:(GyCheckModel *)checkModel withCallback:(GyVerifyCallback)callback;,注册风险等级在 GyVerifyCallback 回调中。

参数名称 是否
必填
类型 描述
account 必选 String 用户唯一标识,如果是手机号or邮箱,请提供 MD5 值
email 可选 String 用户的邮箱
pn 可选 String 用户的手机号MD5值
pwd 可选 String 用户的密码
nickName 可选 String 昵称
registerTime 可选 String 注册时间戳,单位秒
loginTime 可选 String 登录时间戳,单位秒
runEnv 可选 String 用户客户端运行环境,取值:
2: WEB,3: WAP,4: IOS_PHONE,5: ANDROID_PHONE,
6: WINDOWS_PHONE,7: IOS_TABLET,8: ANDROID_TABLET,
9: WINDOWS_TABLET,10: WINDOWS_DESKTOP,11: MAC_DESKTOP,
12: LINUX_DESKTOP
moveCount 可选 String 用户操作过程中的move类事件的次数,包括:mouseMove、touchMove等等
clickCount 可选 String 用户操作过程中鼠标点击次数,包括:click、mousedown、touchStart等事件
keyCount 可选 String 用户操作过程中键盘的摁键次数
operatingTime 可选 String 注册操作耗时,单位秒
ip 可选 String 注册来源的外网IP
appVer 可选 String APP版本
mac 可选 String 设备mac地址
idfa 可选 String 设备的idfa
referrer 可选 String 用户http请求的Referrer头
userAgent 可选 String 用户http请求的UserAgent
xForwardFor 可选 String 用户http请求的X-Forwarded-For头信息,或其他记录代理信息的http头信息
result 可选 String 注册结果 0:失败1:成功
reason 可选 String 失败原因 0:其他 1:参数错误 2:帐号冲突 3:验证错误
loginType 可选 String 登录方式 0:账号密码登录 1:扫码登录 2:短信验证码登录

验证接口回调参数说明

回调参数 参数说明
GyVerifyCallback 接口返回信息

回调data中包含信息说明:

参数名称 类型 描述
level String 分为0-4五个等级。 0为安全用户。1和2为怀疑用户。3和4为风险用户
riskType Array 1:账号风险 2:行为风险 3:环境风险

请求示例

    GyCheckModel *model = [[GyCheckModel alloc]init];
    model.account = @"69B64959969AF7DB11C5ED182495FB2E";
    model.email = @"69B64959969AF7DB11C5ED182495FB2E";
    model.pn = @"6E3652F544C1352516CF1997039F0660";
    model.pwd = @"E10ADC3949BA59ABBE56E057F20F883E";
    model.nickName = @"nickName";
    model.registerTime = @"1521440310";
    model.loginTime = @"1521440310";
    model.runEnv = @"4";
    model.moveCount = @"1";
    model.clickCount = @"3";
    model.keyCount = @"10";
    model.operatingTime = @"60";
    model.ip = @"192.168.1.3";
    model.appVer = @"1.1.0";
    model.mac = @"";
    model.idfa = @"1E2DFA89-496A-47FD-9941-DF1FC4E6484A";
    model.referrer = @"http://www.getui.com";
    model.xForwardFor = @"http://www.getui.com";
    model.result = @"1";
    model.reason = @"0";
    model.loginType = @"1";
    [[CommonToastHUD sharedInstance] showActivityView:@"正在发送请求"];
     [GeYanSdk checkLogin:model withCallback:^(NSDictionary *verifyDictionary) {
        NSInteger resultCode = [verifyDictionary[@"result"]integerValue];
        [[CommonToastHUD sharedInstance] hideActivityView];
        if (resultCode == 20000) {
            [[CommonToastHUD sharedInstance]showTips:verifyDictionary[@"msg"]];
        }else{
            [[CommonToastHUD sharedInstance]showTips:[NSString stringWithFormat:@"Fail with code : %ld,msg : %@",resultCode,verifyDictionary[@"msg"]]];
        }
    }];

结果回调示例

{
    data =    {
        data =    {
            // 风险等级
            level = 2;
            // 风险类型
            riskType =    (
                3,
                2
            );
            // 服务端查询反欺诈结果凭证
            token = "GY-AF-20180614-r6Dwt1do4t7UAX2nIccZV";
        };
        msg = "\U6210\U529f";
        result = 20000;
    };
    errno = 0;
}

状态码

请参考状态码汇总说明

文档中心搜索