API Reference
English

支付宝小程序


支付宝小程序提供两种对接方式:插件化对接与sdk对接,请根据下方的对比选择合适的对接方式接入

插件化与sdk接入区别

  • 插件化代码不直接提供sdk代码,对接更为便捷
  • 插件发布新版本后,插件订购者可在小程序内使用指定版本插件,享受更高效的插件服务。
  • 小程序可以调用插件,插件不能再调用其他插件
  • 插件化不支持较早版本的 APPID 为 8 位数字的小程序

1. 插件化方式

  • 登陆登录开放平台控制台(<https://open.alipay.com/develop/manage>),进入 开发 中的插件服务
  • 点击订购其他插件
  • 搜索 设备指纹插件 ,选择插件,点击订购,确认获取该插件
  • 选择授权并绑定小程序

小程序代码集成

  1. 小程序app.json里声明插件
{
  "plugins": {
    "tdfp-plugin": {
      "version": "*", //支付宝目前只支持设置 * ,自动选择版本,后台可以配置使用哪个版本
      "provider": "2021003160688029"
    }
  }
}

Note: 三方框架可对应添加 如uni-app,可在manifest.json文件的mp-alipay模块中添加上述声明

2.配置

app.jspartnerCodeappKey为必要参数,channel为可选参数

App({
  ......
  globalData: {
    ......
    _fmOpt: {
      appKey:"", // 请填入你的appKey
      partnerCode: "", // 请填入您的partner code
      channel: "", // 请填入您的channel
    }
  },
  ......
})

说明:appKey获取方式:https://cn-doc.trustdecision.com/update/reference/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E8%8E%B7%E5%8F%96-appkey#/

  1. 获取blackbox

在每一个需要获取设备信息的页面都需要创建一个实例。比如:在 pages/index/index.js 中,先在文件顶部引用 SDK 文件,然后调用getDeviceInfo方法

const plugin = requirePlugin('tdfp-plugin')
const app = getApp()
...
... 
var that = this
var fmagent = new plugin.FMAgent(app.globalData._fmOpt)
fmagent.getDeviceInfo({
  page: that,
  mode:'plugin',
  unionid:'', // 请传入userid
}).then(function(result){
  if(result.apiStatus.code === 0) {
    var anonymousId = result.anonymousId;
    var blackBox = result.blackBox; 
    var fpVersion = result.fpVersion;
    var deviceRiskScore = result.deviceRiskScore;
    var sealedResult = result.sealedResult;
    var message = result.apiStatus.message;  
  } else {
    var code = result.apiStatus.code;
    var message = result.apiStatus.message;
  }
})

2. 标准版 SDK

1. 添加同盾域名

小程序对各种请求接口都做了域名限制,所以需要在小程序网站后台页面中添加同盾域名才可以保证小程序能正常给同盾设备指纹服务器发送信息

设置-开发设置-服务器域名白名单 中添加:

环境域名
生产环境(必须)<https://fp.tongdun.net>

1.同盾支付宝小程序设备指纹 SDK 仅支持客户端基础库版本1.20.0 以上的支付宝客户端,在小程序后台可以设置最低基础库版本,当低于该版本的用户打开时会提示用户升级支付宝

2.插入 canvas 节点

假设我们想在 index 页面中采集设备信息,那么就需要在 pages/index/index.axml 文件末尾添加以下代码:

<view>
  <canvas id='tdcanvas' style={{ visibility: 'hidden', position: 'fixed', zIndex: -999, left: '9999px' }}></canvas>
</view>

3. 必要的配置

app.jspartnerCodeappKey为必要参数,appNamechannel为可选参数

App({
	......
	globalData: {
		......
		_fmOpt: {
			partnerCode: "", // 请填入您的 partner code
			appKey: "", // 请填入您的 appKey
      channel: "", // 请填入您的channel
		}
	}
})

说明:appKey获取方式:https://cn-doc.trustdecision.com/update/reference/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E8%8E%B7%E5%8F%96-appkey#/

4. 获取blackbox

在每一次获取设备信息的时候都需要创建一个实例。比如:在 pages/index/index.js 中,先在文件顶部引用 SDK 文件,然后调用getDeviceInfo方法

import FMAgent from '../../fmsdk/fm-xxx-es.min.js'
...
...
var that = this
var fmagent = new FMAgent(app.globalData._fmOpt)
fmagent.getDeviceInfo({
  page: that,
  unionid:'', // 请传入userid
}).then(function(result){
  if(result.apiStatus.code === 0) {
    var anonymousId = result.anonymousId;
    var blackBox = result.blackBox; 
    var fpVersion = result.fpVersion;
    var deviceRiskScore = result.deviceRiskScore;
    var sealedResult = result.sealedResult;
    var message = result.apiStatus.message;  
  } else {
    var code = result.apiStatus.code;
    var message = result.apiStatus.message;
  }
})

说明

响应结果

字段描述
anonymousId设备匿名ID,设备标识
blackBox设备信息查询标识)
fpVersionSDK版本号
deviceRiskScore当前设备风险分
sealedResult加密的设备信息,二进制 Base64 编码字符串,仅在客户端密封结果开启时返回,解密结果与设备信息查询获取的信息一致

状态信息定义

sdk返回的状态码对应的信息说明

codemessage备注
0Success成功
1001SDK errsdk发生异常
1002Network error网络错误
1003API err后端接口返回错误
1004Traffic limit网关限流
1100Unknown error未知错误