gt3-harmonyOS-sdk
概述与资源
行为验证 HarmonyOS SDK 提供给集成 HarmonyOS 原生客户端开发的开发者使用。
环境需求
条目 | 资源 |
---|---|
开发目标 | 5.0以上 |
开发环境 | DevEco Studio 5.0 |
编译版本 | api12 |
sdk三方依赖 | 无 |
相关资源
条目 | 资源地址 |
---|---|
产品结构流程 | 通讯流程, 交互流程 |
错误码列表 | Error Code 列表 |
Demo 工程下载 | 联系管理人员获取 |
安装
获取SDK
邮件获取
手动导入SDK
将获取的.har
文件拖拽到工程中的libs文件夹下。
在拖入
.har
到libs文件夹后, 还要检查.har
是否被添加到Library,要在项目的
```typescript
"dependencies": {
"sensebotSdk": "file:./libs/sensebot.har"
}在module.json5文件中添加权限
"requestPermissions": [
{
"name": "ohos.permission.INTERNET",
"usedScene": {
"abilities": [
...
],
...
}
}
],混淆规则:
SDK 的 har 包已做混淆处理,两次混淆会导致不可预期的错误,默认情况下 har 包内包含当前 SDK 的混淆配置
名词解释
- api1 & api2: 见数据通信流程图
- Bind模式: 以需要触发按钮为参考,将极验逻辑绑定在此按钮上
配置接口
开发者集成客户端sdk前, 必须先在您的服务器上搭建相应的 服务端SDK ,配置 api1及api2 。这里以服务端 api1及api2
配置成功,客户端开发步骤为例,如下以Bind模式,非自定义api1及2为例:
定义服务端配置好API1&API2
/**
* api1,需替换成自己的服务器URL
*/
private captchaURL: string = "http://www.geetest.com/demo/gt/register-slide";
/**
* api2,需替换成自己的服务器URL
*/
private validateURL: string = "http://www.geetest.com/demo/gt/validate-slide";配置初始化接口
let gt3GeetestUtils = new GT3GeetestUtils(this.getUIContext());
配置GT3ConfigBean
// 配置bean文件,也可在oncreate初始化
gt3ConfigBean = new GT3ConfigBean();
// 设置验证模式,1:bind
gt3ConfigBean.setPattern(1);
// 设置点击灰色区域是否消失,默认不消息
gt3ConfigBean.setCanceledOnTouchOutside(false);
// 设置debug模式,开代理可调试
gt3ConfigBean.setReleaseLog(false);
// 设置语言,如果为null则使用系统默认语言
gt3ConfigBean.setLang(null);
// 设置webview加载超时
gt3ConfigBean.setTimeout(9000);
// 设置webview请求超时
gt3ConfigBean.setWebviewTimeout(6000);
// 设置回调监听
gt3ConfigBean.setListener(this.gt3Listener);
gt3GeetestUtils.init(gt3ConfigBean);
//私有化配置
this.gt3ConfigBean.privatizationMode = true
let gtUrlConfig = new GTURLConfig()
gtUrlConfig.get = "get.php" //此处只需path,域名通过setUseCustomAPIServers配置
gtUrlConfig.ajax = "ajax.php" //此处只需path,域名通过setUseCustomAPIServers配置
gtUrlConfig.staticUrl = "static.geetest.com//app-index.html" //此处配置为中间页地址,无需加协议头,协议头通过setRequestProtocol配置
this.gt3ConfigBean.setGtUrlConfig = gtUrlConfig
this.gt3ConfigBean.setGt3ServiceNode(GT3ServiceNode.NODE_CUSTOM)
this.gt3ConfigBean.setUseCustomAPIServers(["api.geetest.com"]) //此处配置为get\ajax的请求域名,无需加协议头,协议头通过setRequestProtocol配置调用验证接口
// 开启验证
gt3GeetestUtils.getGeetest();回调监听接口实现
gt3Listener: GT3Listener = {
/**
* 验证码加载完成
* @param duration 加载时间和版本等信息,为json格式
*/
onDialogReady: (duration: string) => {
console.log("GT3BaseListener-->onDialogReady-->" + duration);
},
/**
* 图形验证结果回调
* @param code 1为正常 0为失败
*/
onReceiveCaptchaCode: (code: number) => {
console.log("GT3BaseListener-->onReceiveCaptchaCode-->" + code);
},
/**
* 验证结果
* @param result
*/
onDialogResult: async (result: string) => {
console.log("GT3BaseListener-->onDialogResult-->" + result);
// 开启自定义api2逻辑
let reqApi2 = new RequestAPI(this.riskTypeEnum)
let api2Result = await reqApi2.requestAPI2(result)
this.parseApi2Result(api2Result.toString())
},
/**
* 统计信息,参考接入文档
* @param result
*/
onStatistics: (result: string) => {
console.log("GT3BaseListener-->onStatistics-->" + result);
},
/**
* 验证码被关闭
* @param num 1 点击验证码的关闭按钮来关闭验证码, 2 点击屏幕关闭验证码, 3 点击返回键关闭验证码
*/
onClosed: (num: number) => {
console.log("GT3BaseListener-->onClosed-->" + num);
// this.gt3GeetestUtils.destroy();
// this.webviewController = new webview.WebviewController
},
/**
* 验证成功回调
* @param result
*/
onSuccess: (result: string) => {
console.log("GT3BaseListener-->onSuccess-->" + result);
},
/**
* 验证失败回调
* @param errorBean 版本号,错误码,错误描述等信息
*/
onFailed: (errorBean: GT3ErrorBean) => {
console.log("GT3BaseListener-->onFailed-->" + errorBean.toString());
},
/**
* 自定义api1回调
*/
onButtonClick: async () => {
let reqApi1 = new RequestAPI(this.riskTypeEnum)
let api1Result = await reqApi1.requestAPI1()
// TODO 设置返回api1数据,即使为 null 也要设置,SDK内部已处理
this.gt3ConfigBean.setApi1Json(JSON.parse(api1Result));
// 继续验证
this.gt3GeetestUtils.getGeetest();
}
}其他生命周期
aboutToDisappear() {
if (this.gt3GeetestUtils) {
this.gt3GeetestUtils.destroy();
}
}统计接口解释 onStatistics
{
"gt":"019924a82c70bb123aae90d483087f94", // 商家标识
"challenge":"340e47b635f855267c222549fa6cab11", // 流水号
"success":"true", // 是否宕机
"a1":"1", // api1接口成功, 0为失败,下同
"t":"1", // gettype接口成功
"g":"1", // get接口成功
"a":"1", // ajax
"r":"1", // 验证码显示成功
"re":"slide", // 验证类型,若有此字段,表示结果成功
"os":"harmonyOS",
"mo":"VKY-AL00",
"ver":"8.0.0",
"net":"WIFI",
"build":"1",
"release":"1.0",
"vendor":"com.example.gt3",
"time":"1531397269605",
"imei":"unknown",
"gt3":"4.4.6" // 极验SDK版本
}
以上为Bind模式,自定义API1和API2,其他模式请详见demo
常见问题
日志打印
SDK提供部分日志,TAG为Geetest。
Q & A
1. 验证码弹出后,验证完成后为什么弹框未消失?
答:需要在onDialogResult回调里面做二次验证结果处理,参考demo
2. 验证码弹出后,遇到横竖屏切换 ?
答:在module.json5
里面,添加需要弹出验证码的abilities
上配置"orientation": "auto_rotation"
3. 如何获取SDK的版本号?
答:gt3GeetestUtils.getVersion()
6. SDK语言适配如何处理 ?
答:gt3ConfigBean.setLang(null);为使用系统语言。 若不为null,如:”zh”–简体中文,”zh-HK”,”zh-TW”-繁体中文,”en”–英文,”id”
–印尼语,”ja”–日文。
常见错误码
ErrorCode | Description | 备注 |
---|---|---|
200 | 服务被forbidden | |
201 | SKD内部异常 | 请联系我们 |
202 | 解析json错误 | 请查看日志 |
204 | 验证码加载超时,默认15s | |
204_1 | webview加载错误 | 请查看日志 |
204_2 | SSLError,开启代理失败或者时间问题 | 若开启代理,请设置debug为true |
205 | api1错误 | 请查看日志 |
207 | get错误 | 请查看日志 |
208 | ajax错误 | 请查看日志 |
209 | api2错误 | 请查看日志 |
极验会继续努力,给予您更好的服务