支持平台:App(Android / iOS / Harmony)、H5 / Web、微信小程序、支付宝小程序、字节小程序、百度小程序、京东小程序、小红书小程序。
所有端对外暴露统一 API,业务代码无需关心底层平台差异。
TrustDevice/ 目录#将 TrustDevice/ 整个目录复制到项目根目录:
your_project/
└── TrustDevice/ ← 整个目录拖入项目即可
├── index.js ← 统一入口,所有端只 import 这一个文件
├── components/
│ └── td-canvas.vue ← 隐藏 canvas 组件(字节/百度/京东端必须引入)
└── fmsdk/
├── fm-tt-xxx-es.saas.js ← 字节小程序 SDK(字节端必须)
├── fm-bd-xxx-es.min.js ← 百度小程序 SDK(百度端必须)
├── fm-jd-xxx-es.min.js ← 京东小程序 SDK(京东端必须)
└── fm-xhs-xxx-es.min.js ← 小红书小程序 SDK(小红书端必须)TrustDeviceUniPlugin 插件。TrustDecision-TrustDeviceUniPlugin 文件夹放入 your_project/nativeplugins 目录。manifest.json,进入「App 原生插件配置」。TrustDeviceUniPlugin。your_project/
└── nativeplugins/
└── TrustDecision-TrustDeviceUniPlugin/
├── android/ ← AAR 文件
├── ios/ ← xcframework 文件
└── package.json在 manifest.json 的 app-plus.distribute.android.permissions 中声明:
"<uses-permission android:name=\"android.permission.INTERNET\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
// 可选权限(不声明将放弃部分设备信息采集)
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
登录 微信公众平台:
设置 -> 第三方设置 -> 插件管理 -> 添加插件搜索 wxfp 完成添加。
登录 支付宝小程序后台,添加设备指纹插件。
插件 appId:
2021003160688029在字节小程序后台添加 request 合法域名:
在百度小程序后台添加 request 合法域名:
在京东小程序后台添加 request 合法域名:
manifest.json 配置#"mp-weixin": {
"appid": "你的小程序 appid",
"plugins": {
"tdfp-plugin": {
"version": "2.1.5",
"provider": "wxc3b909c3d24c5417"
}
}
},
"mp-alipay": {
"plugins": {
"tdfp-plugin": {
"version": "*",
"provider": "2021003160688029"
}
}
}各端参数通过平台子对象传入。partner 全端共用,只填自己需要的平台即可:
import TrustDevice from "@/TrustDevice/index.js";
// App.vue onLaunch,用户同意隐私协议后调用
TrustDevice.init({
partner: "your_partner", // 必填,全端共用
android: {
// Android APP
appKey: "android_appkey",
channel: "your_app_channel",
dataCenter: "cn", // cn/sg/us/fra/idna
},
ios: {
<template>
<view>
<td-canvas />
<!-- 其他内容 -->
</view>
</template>
<script>
import TrustDevice from "@/TrustDevice/index.js";
import TdCanvas from "@/TrustDevice/components/td-canvas.vue";
export default {
components: { TdCanvas },
onLoad() {
TrustDevice.getBlackBoxAsync({
openid: "", // 加密后的 openid(建议提供,没有传空字符串)
unionid: "", // 加密后的 unionid(建议提供,没有传空字符串)
success(blackbox) {
submitForm({ blackbox });
},
fail(err) {
console.error("获取 blackbox 失败", err);
},
});const blackbox = await TrustDevice.getBlackBoxPromise({
openid: "",
unionid: "",
});
submitForm({ blackbox });const blackbox = TrustDevice.getBlackBox({
openid: "",
unionid: "",
});init 配置项说明#支持端:
android / ios / harmony / web / mp-weixin / mp-alipay / mp-toutiao / mp-baidu / mp-jd / mp-xhsgetBlackBoxAsync 参数说明#仅使用 Uni 构建 Harmony 应用的场景,可参考本集成方案。
TrustDevice插件里包含
harmony-configs参考配置。
在 harmony-configs/oh-package.json5 添加 dependencies:
"@trustdecision/mobrisk": "latest"将两个 .ets 文件放入 harmony-configs/entry/src/main/ets/:
TrustDevicePlugin.ets(SDK 桥接层,与本项目同名文件完全一致)MyAbilityStage.ets(注册模块、注入 context)如果用户项目已有自己的 AbilityStage,则不需要 MyAbilityStage.ets,只需把以下两行合并到已有的 onCreate() 中:
TrustDevicePlugin.setContext(this.context)
registerModule('TrustDecision-MobRisk', TrustDevicePlugin as ESObject)module.json5#在 module 根层添加 srcEntry(若已有 AbilityStage 则跳过):
"srcEntry": "./ets/MyAbilityStage.ets"在 requestPermissions 数组里追加以下权限(已有的不用重复):
{ "name": "ohos.permission.INTERNET" },
{ "name": "ohos.permission.GET_NETWORK_INFO" },
{ "name": "ohos.permission.GET_WIFI_INFO" },
{ "name": "ohos.permission.STORE_PERSISTENT_DATA" },
{
"name": "ohos.permission.APPROXIMATELY_LOCATION",
"reason": "$string:location_reason",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "inuse"
}
文件路径:
harmony-configs/entry/src/main/resources/base/element/string.json在已有的 string 数组里追加一条:
{
"name": "location_reason",
"value": "用于采集设备位置信息以提升风险识别能力"
}如果该文件不存在,新建并写入本项目的同名文件内容即可。
getBlackBoxAsync 即可。设置 -> 开发设置 -> 服务器域名 -> request 合法域名
管理 -> 基础设置 -> 开发设置 -> 服务器域名 -> request 合法域名
管理 -> 基础设置 -> 开发设置 -> 服务器域名 -> request 合法域名