适用于SDK版本从 2.3.0 开始以及后续版本号不带-pro 的版本 ## 接入步骤 ### 引入/安装js SDK #### Web 建议直接通过 script 引入, 将放在初始化代码之前 Code (html): #### uni-app(H5) Code (js): import createNEGuardian from './YiDunProtector-Web.js' ### 初始化SDK 执行SDK初始化。 Code (js): const neg = createNEGuardian({ productId: '', timeout: 6000 }, function (code, msg) { }) 其中: productId 是应用标识,对应易盾控制台中的产品编号,YD开头 timeout 数据上报超时时间,单位 ms,默认 6000 callback 异步流程回调。 code | msg | 说明 200 | Success | 流程内token获取成功 109 | Init Repeat | 重复初始化 199 | ProductId invalid | 产品ID错误 注:不可用的productId会导致服务端鉴权接口失败,请确保productId是正常可用的。 ### 私有化初始化SDK 执行SDK初始化。 Code (js): const neg = createNEGuardian({ productId: '', apiServer:'https://xxxxx.xxxx.xxxx', timeout: 6000 }, function (code, msg) { }) 其中: productId 是应用标识,对应易盾控制台中的产品编号,YD开头 apiServer 私有化服务器地址,私有化的客户需要通过该接口设置服务器地址,其他客户可以忽略 timeout 数据上报超时时间,单位 ms,默认 6000 callback 异步流程回调。 code | msg | 说明 200 | Success | 流程内token获取成功 109 | Init Repeat | 重复初始化 199 | ProductId invalid | 产品ID错误 注:不可用的productId会导致服务端鉴权接口失败,请确保productId是正常可用的。 ### 同步获取 Token Code (js): const {code, token} = neg.getToken() code | token说明 200 | 正常模式,数据正常上报到设备指纹服务端,token 长度固定 201 | 离线模式,数据上报过程中出现异常,比如网络抖动/超时等,token 长度不固定 202 | 当前获取过程异常,此时 token 为空字符串 缓存 token 在缓存时长内二次加密后立即返回;无缓存或缓存已过期时返回降级 token,效果与短 token 一致,正常送检即可。并同时触发后台异步刷新。 注意:此时 token 可能因为初始化回调未完成而导致错误码202,为保证 token 完整获取,请保证同步获取的时候初始化回调是完成状态。 ### 异步获取 Token Code (js): neg.getTokenAsync().then(result => { if (result.code === 200) { // 正常情况 alert('get token:', result.token) } if (result.code === 201) { // 离线模式 alert('get token:', result.token) } }) 每次实时采集数据并上报,完成后返回最新 token,属于耗时操作。 getTokenAsync 返回有两种模式: - 正常模式,数据正常上报到设备指纹服务端,token 长度固定 - 离线模式,数据上报过程中出现异常,比如网络抖动/超时等,token 长度不固定,效果与短 token 一致,正常送检即可 ### 校验结果 前端获取到 token 后,将 token 上传到业务服务器。 业务服务器根据 token 向智能风控服务器发起校验,查询结果 更多接入细节见智能风控服务端接入文档。 ### 协议保护 通过数据签名与数据加密/数据解密,防止通信数据被分析,被篡改,被攻击,保护应用/游戏的通信安全。 对应的irisk_bg.wasm文件,请联系易盾获取详细说明文档。 #### 协议模块集成 获取协议文件irisk_bg.wasm与智能风控文件YiDunProtector-Web.js。 ##### 协议集成代码 node环境下,执行以下内容。 Code (js): const fs = require('fs'); // irisk_bg.wasm文件的绝对路径 const wasm_path = 'irisk_bg.wasm'; // 智能风控文件的绝对路径 const web_sdk_path = 'YiDunProtector-Web.js'; const contents = fs.readFileSync(wasm_path, null); const base64Encoded = Buffer.from((contents)).toString('base64'); const web_sdk_param = fs.readFileSync(web_sdk_path, null); fs.writeFileSync(web_sdk_path, web_sdk_param.toString().replace('\'AGFzbQEAAAABfhFgAABgAX8AYAF\'', '\'' + base64Encoded + '\'')); console.log("替换成功") #### 数据签名 验证数据来源和完整性。 Code (js): neg.htpSign('','','') .then(result => { console.log(result) }) 其中: alg 签名算法。具体值请联系易盾获取详细说明文档。格式为number version 算法版本。具体值请联系易盾获取详细说明文档。格式为number data 签名的数据。格式为string #### 数据加密 保护数据内容的机密性。 Code (js): neg.safeCommToServer('','','') .then(result => { if (result.code === 200) { // 正常情况 alert('enc:', result.data) } else { // 异常情况 alert('当前浏览器版本较低') } }) 其中: alg 签名算法。具体值请联系易盾获取详细说明文档。格式为number version 算法版本。具体值请联系易盾获取详细说明文档。格式为number data 加密的数据。格式为string #### 数据解密 保护数据内容的机密性。 Code (js): neg.safeCommFromServer('','') .then(result => { if (result.code === 200) { // 正常情况 alert('dec:', result.data) } else { // 异常情况 alert('当前浏览器版本较低') } }) 其中: alg 签名算法。具体值请联系易盾获取详细说明文档。格式为number data 解密的数据。格式为string