验证码依赖设备指纹检测设备环境,本文档描述了设备指纹插件和验证码插件的集成方式

# 小程序管理后台添加插件

  • 登录支付宝开放平台(https://open.alipay.com/develop/manage),选择需要集成插件的小程序
  • 进入小程序管理页面,点击左侧 开发-插件服务 菜单
  • 点击 订购其他插件 ,进入插件市场
  • 搜索 设备指纹插件 ,选择插件,点击订购。同样方式搜索 小盾智能验证,选择插件,然后完成订购

# 小程序代码集成

# 1. 小程序 app.json 里声明插件

{

   "plugins": {
      "tdfp-plugin": {
          "version": "*", 
          "provider": "2021003160688029"
      },
      "tdcaptcha-plugin": {
          "version": "*",
          "provider": "2021003157639024"
      }
  
  }
  
}

# 2. 获取设备指纹 blackbox

在需要设备指纹的页面,如 page/index/index.js中,引用插件:

const plugin = requirePlugin('tdfp-plugin')

onLoad 函数中获取设备指纹 blackbox,只需要获取一次。

// 示例
onLoad: function() {
    var that = this
    // partnerCode-合作方标识,由同盾分配, appName-应用标识,由同盾分配
    var fmagent = new plugin.FMAgent({partnerCode:"", appName:"", env:"PRODUCTION"}) // 这里需要传入一些必要配置
  
    fmagent.getInfo({
      page: that,
      mode:'plugin',
      // 请传入用户userid(可以加密或者不加密,若加密需保证加密后的userid与原始userid是一一对应关系)
      unionid: '', 
      success: function (res) {
        // 获取blackbox成功回调,res 为 blackbox 字符串
        // 可以setData保存到页面,传给验证码API使用
        that.setData({blackbox: res});
      }
    })
}

设备指纹 API 参数说明

参数 类型 是否 必填 描述 示例
mode String 当前对接模式 'plugin'
page Object 当前所在的page对象或component对象 that
unionid String 加密后的用户userid; 如果没有开通该功能 (opens new window),则无需传入该字段 加密算法可以随意选择,请确保加密前后一一对应,建议使用MD5或者SHA256; 没有值,请传空字符串 ef54040ea***58fe66157
timeout Number 获取blackbox超时时间,单位毫秒; 默认2500,包括采集和发送请求的总时长,范围:2500-16000 6000
getcliallowed Boolean 是否不采集剪切板; 采集剪切板可部分增强设备指纹恢复能力,部分手机系统会提示采集了剪切板; 默认false,不采集 true
success Function 获取成功回调 function(res){/res即blackbox/}

# 3. 引用 tdcaptcha 组件

在需要验证码页面的 .json 文件中引用 tdcaptcha 组件

{
  "usingComponents": {
    "tdcaptcha": "plugin://tdcaptcha-plugin/tdcaptcha"
  }
}

# 4. 添加 tdcaptcha 组件节点

在需要验证码页面的 .axml 文件中添加 tdcaptcha 组件节点

<tdcaptcha id="td-captcha" ref="handleRef" />

# 5. 触发验证

在需要验证码页面的 .js 文件中触发验证码

// 绑定插件实例
handleRef(ref) {
   this.td = ref;
},
// 示例
triggerCaptcha: function() {
    // 调用API,触发验证码弹出
    this.td.captcha.triggerCaptcha({
      partnerCode: 'XXX',  // 合作方
      appName: 'XXX',  // 应用
      env: 1, 
      blackbox: this.data.blackbox || "",  // 设备指纹blackbox,  
      onSuccess: this.onSuccess, 
      onFail: this.onFail
    });
},

onSuccess: function(validateToken) {
  // 验证通过
  // 将validateToken传递至服务端二次校验
},

onFail: function(msg) {
  // todo
},

# 验证码 API 参数说明

参数 类型 是否 必填 描述
partnerCode String 同盾合作方标识
appName String 同盾合作方应用标识
env Number 1:线上生产环境 0:测试环境
blackbox String 同盾设备指纹blackbox
maskClose Number 点击蒙层是否关闭验证码 0:否 1:是
onSuccess Function 验证成功的回调函数,回调函数会把validateToken传递过来
onFail Function 验证失败的回调函数; 验证失败会返回新的验证码,此时onFail回传msg为 'opFail',一般不需要另行处理
onClose Function 验证码弹窗关闭的回调函数,可根据需要自定义
mfaId String 如果您已对接MFA产品,请将MFA流程中接口获取的mfa_id赋值给验证码配置参数, 未对接可以忽略
: 2023/06/07 16:19:48