更新记录
3.0.2(2026-11-09)
- 首次发布阿里云金融级实人认证 UTS 插件;
- 接入阿里云官方最新版实人认证 SDK;
- 支持 Android 和 iOS 双端活体检测与人脸比对功能;
- 提供完整的接入示例代码,支持 Promise 异步调用。
平台兼容性
uni-app
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| × |
× |
× |
× |
× |
- |
× |
× |
× |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| × |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
uni-app x(5.21)
| Chrome |
Safari |
Android |
Android插件版本 |
iOS |
iOS插件版本 |
鸿蒙 |
鸿蒙插件版本 |
微信小程序 |
| × |
× |
10.0 |
3.0.2 |
16 |
3.0.2 |
6.0.0 |
3.0.2 |
× |
其他
| 多语言 |
暗黑模式 |
宽屏模式 |
蒸汽模式 |
| × |
× |
√ |
√ |
阿里云金融级实人认证 (UTS 原生插件)
本插件基于 阿里云金融级实人认证 官方原生 SDK(Android & iOS)进行 UTS 深度封装,专为 uni-app x 项目打造。它提供了高安全性、高通过率的实人认证服务,有效防范各类照片、视频、3D 模具攻击。
🌟 功能特性
- 全面适配 uni-app x:采用 UTS 开发,性能贴近原生。
- 双端支持:一键集成 Android 和 iOS 平台。
- 完整生命周期管理:提供初始化、唤起认证、资源释放等全套 API。
- 标准接入流程:完美适配阿里云“获取 MetaInfo -> 后端换取 certifyId -> 唤起认证”的官方标准流程。
⚙️ 核心 API 说明
插件对外暴露以下核心方法:
initAliyunVerify():初始化实人认证环境。
getAliyunMetaInfos(): string:获取当前设备运行环境的 MetaInfo 信息,用于提交给后端换取认证标识。
startAliyunVerify(certifyId: string, callback: (code: number, reason: string) => void):拉起活体检测/人脸认证界面,并通过回调函数返回原生校验结果。
releaseAliyun():认证结束后释放底层资源,避免内存泄漏。
🚀 完整使用示例
以下是一个完整的页面集成示例,展示了如何与后端 API 配合完成一次闭环的实人认证:
<template>
<view class="page-container">
</view>
</template>
<script setup lang="uts">
// 引入您的后端接口 (请根据实际项目路径修改)
import { aliRules, aliResult } from '@/api/certification.uts'
// 引入本 UTS 插件暴露的方法
import { initAliyunVerify, getAliyunMetaInfos, startAliyunVerify, releaseAliyun } from '@/utils/aliyunVerifyAdapter.uts'
const handleSignAndVerify = async () => {
// 1. 获取当前设备运行环境的 MetaInfo
const metaInfo = getAliyunMetaInfos();
if (metaInfo == "") {
uni.showToast({ title: '环境初始化失败,请重试', icon: 'none' });
return;
}
// 2. 将 MetaInfo 提交给您的后端,获取认证标识 certifyId
const result = await aliRules(metaInfo)
const resultCode = result.code
const resultData = result.data as UTSJSONObject ?? null
if (resultCode == 200 && resultData != null) {
const certifyId = resultData.certifyId as string
if (certifyId == "") {
uni.showToast({ title: '获取认证标识失败', icon: 'none' });
return;
}
console.log('成功获取 certifyId:', certifyId);
// 3. 使用 certifyId 唤起原生刷脸认证界面
startAliyunVerify(certifyId, (code : number, reason : string) => {
console.log(`收到原生回调: code=${code}, reason=${reason}`);
// 4. 原生校验完成后,让后端再次向阿里云服务器查询最终结果
aliResult(certifyId).then((res) => {
console.log(res, '服务器最终结果信息');
if (code == 1000 && res.code == 200) {
uni.showToast({ title: '认证成功!', icon: 'success' });
setTimeout(() => {
uni.navigateBack()
}, 1500)
} else {
uni.showModal({
title: '认证未通过',
content: `原因: ${res.msg} (错误码: ${code})`,
showCancel: false,
success: (res => {
if(res.confirm){
setTimeout(() => {
uni.navigateBack()
}, 1500)
}
})
});
}
}).catch((err) => {
console.error('获取认证结果失败', err);
setTimeout(() => {
uni.navigateBack()
}, 500)
});
});
}
};
// 页面生命周期管理
onLoad(() => {
// 页面加载时初始化
initAliyunVerify();
})
onReady(() => {
// 延迟唤起,确保页面渲染与动画顺畅
setTimeout(() => {
handleSignAndVerify()
}, 800)
})
onUnload(() => {
// 页面卸载时释放资源
releaseAliyun();
})
</script>
<style scoped>
.page-container {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: #f5f6f8;
display: flex;
flex-direction: column;
}
</style>