更新记录

3.0.2(2026-11-09)

  1. 首次发布阿里云金融级实人认证 UTS 插件;
  2. 接入阿里云官方最新版实人认证 SDK;
  3. 支持 Android 和 iOS 双端活体检测与人脸比对功能;
  4. 提供完整的接入示例代码,支持 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 说明

插件对外暴露以下核心方法:

  1. initAliyunVerify():初始化实人认证环境。
  2. getAliyunMetaInfos(): string:获取当前设备运行环境的 MetaInfo 信息,用于提交给后端换取认证标识。
  3. startAliyunVerify(certifyId: string, callback: (code: number, reason: string) => void):拉起活体检测/人脸认证界面,并通过回调函数返回原生校验结果。
  4. 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>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

需要申请相机权限(Android: android.permission.CAMERA,iOS: NSCameraUsageDescription / Privacy - Camera Usage Description),用于唤起设备摄像头进行人脸扫描与活体检测。同时需要网络权限(android.permission.INTERNET 等),用于与服务端进行认证数据交互。

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件使用的阿里云金融级实人认证原生 SDK 会采集设备基础信息(用于生成 MetaInfo 以评估当前设备运行环境的安全风险)以及用户的人脸影像/视频数据。以上数据由原生 SDK 直接加密发送至阿里云官方服务器,仅用于实名身份核验与防伪攻击检测。本 UTS 插件代码本身不截留、不存储任何用户隐私数据。详细的 SDK 隐私数据采集说明请参考阿里云官方隐私政策。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。