支付宝小程序提供两种对接方式:插件化对接与sdk对接,请根据下方的对比选择合适的对接方式接入
插件化与sdk接入区别
- 插件化代码不直接提供sdk代码,对接更为便捷
- 插件发布新版本后,插件订购者可在小程序内使用指定版本插件,享受更高效的插件服务。
- 小程序可以调用插件,插件不能再调用其他插件
- 插件化不支持较早版本的 APPID 为 8 位数字的小程序
1. 插件化方式
- 登陆登录开放平台控制台(
<https://open.alipay.com/develop/manage>
),进入 开发 中的插件服务 - 点击订购其他插件
- 搜索 设备指纹插件 ,选择插件,点击订购,确认获取该插件
- 选择授权并绑定小程序
小程序代码集成
- 小程序app.json里声明插件
{
"plugins": {
"tdfp-plugin": {
"version": "*", //支付宝目前只支持设置 * ,自动选择版本,后台可以配置使用哪个版本
"provider": "2021003160688029"
}
}
}
Note: 三方框架可对应添加 如uni-app,可在manifest.json文件的mp-alipay模块中添加上述声明
2.配置
在app.js中partnerCode和appKey为必要参数,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#/
- 获取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.js中partnerCode和appKey为必要参数,appName和channel为可选参数
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 | 设备信息查询标识) |
fpVersion | SDK版本号 |
deviceRiskScore | 当前设备风险分 |
sealedResult | 加密的设备信息,二进制 Base64 编码字符串,仅在客户端密封结果开启时返回,解密结果与设备信息查询获取的信息一致 |
状态信息定义
sdk返回的状态码对应的信息说明
code | message | 备注 |
---|---|---|
0 | Success | 成功 |
1001 | SDK err | sdk发生异常 |
1002 | Network error | 网络错误 |
1003 | API err | 后端接口返回错误 |
1004 | Traffic limit | 网关限流 |
1100 | Unknown error | 未知错误 |