微信小程序-人脸核身解决方案

news2024/11/19 12:30:36

微信小程序-人脸核身解决方案

名词解释

由于不同公司对于 人脸识别的用词不一致,微信小程序背靠腾讯,因此以下的名词主要采集于腾讯云的解释

  1. 人脸识别

    • 主要关注人脸的检测、分析、比对等技术层面,侧重于识别个体身份的技术实现。它利用人脸检测、五官定位、人脸搜索、人脸比对、人脸验证、活体检测等功能,来判断和确认两个人脸图像是否属于同一人。

    • 应用场景包括但不限于在线相册分类、刷脸门禁、人脸考勤、人脸登录、人脸特效、在线考试等,更多地用于便捷性和安全性提升的场景中。

      image-20240625225310415

  2. 人脸核身(又称人脸身份验证):

    • 是一个更综合的概念,不仅包含了人脸识别的技术,还加入了证件OCR识别、活体检测等技术,以实现对用户身份信息的真实性验证。它是一个完整的身份认证解决方案,目的是为了确认当前用户是否为其所声称的身份。

    • 人脸核身主要用于需要高度安全性和合规性的场景,比如金融服务、政务平台、共享出行等行业,确保用户身份的合法性,防止身份冒用。

      image-20240625225350697

解决方案

在微信小程序中,想要实现人脸核身,无非两种解决方案

  1. 第三方公司提供的人脸核身
  2. 微信小程序自带的人脸核身

第三方公司提供的人脸核身

由于微信小程序的官方限制,并不是所有的微信小程序都可以使用官方提供的人脸核身功能。

现阶段微信人脸核验能力,针对小程序,开放的主体类目范围包含:

小程序一级类目小程序二级类目小程序三级类目使用人脸核验接口所需资质
物流服务收件/派件/《快递业务经营许可证》
物流服务货物运输/《道路运输经营许可证》(经营范围需含网络货运)
教育学历教育(学校)/(2选1):1、公立学校:由教育行政部门出具的审批设立证明 或 《事业单位法人证书》;2、私立学校:《民办学校办学许可证》与《民办非企业单位登记证书》
医疗公立医疗机构/《医疗机构执业许可证》与《事业单位法人证书》
医疗互联网医院/仅支持公立医疗机构互联网医院(2选1):1、卫生健康部门的《设置医疗机构批准书》;2、 《医疗机构执业许可证》(范围均需含“互联网诊疗”或名称含“互联网医院”等相关内容
医疗服务三级私立医疗机构/仅支持三级以上私立医疗机构,提供《医疗机构执业许可证》、《营业执照》及《医院等级证书》
政务民生所有二级类目/仅支持政府/事业单位,提供《组织机构代码证》或《统一社会信用代码证》。
金融业银行/(2选1):1、《金融许可证》; 2、《金融机构许可证》。
金融业信托/(2选1):1、《金融许可证》; 2、《金融机构许可证》。
金融业公募基金/(4选1):1、《经营证券期货业务许可证》且业务范围必须包含“基金”;2、《基金托管业务许可证》; 3、《基金销售业务资格证书》;4、《基金管理资格证书》。
金融业证券/期货/《经营证券期货业务许可证》
金融业保险/(8选1):1、《保险公司法人许可证》;2、《经营保险业务许可证》;3、《保险营销服务许可证》;4、《保险中介许可证》;5、《经营保险经纪业务许可证》;6、《经营保险公估业务许可证》或《经营保险公估业务备案》;7、《经营保险资产管理业务许可证》 ;8、《保险兼业代理业务许可证》。
金融业消费金融/银监会核准开业的审批文件与《金融许可证》与《营业执照》
金融业汽车金融/仅支持汽车金融主体,同时提供:1、《营业执照》(公司名称包含“汽车金融” ;营业范围包含“汽车金融”业务);2、《金融许可证》或银保监会及其派出机构颁发的开业核准批复文件
交通服务网约车快车/专车/其他网约车(自营性网约车)提供《网络预约出租汽车经营许可证》。(网约车平台)提供与网约车公司的合作协议以及合作网约车公司的《网络预约出租汽车经营许可证》。
交通服务航空/(航司)提供《公共航空运输企业经营许可证》。(机场)提供《民用机场使用许可证》或《运输机场使用许可证》。
交通服务公交/地铁/提供公交/地铁/交通卡公司《营业执照》
交通服务水运/(船企)提供《水路运输许可证》。(港口)提供《港口经营许可证》
交通服务骑车/仅支持共享单车,提供共享单车公司《营业执照》
交通服务火车/高铁/动车/仅支持铁路局/公司官方,提供铁路局/公司《营业执照》
交通服务长途汽车/(2选1):1、《道路运输经营许可证》(经营范围需含客运);2、官方指定联网售票平台(授权或协议或公开可查询文件)。
交通服务租车/运营公司提供《备案证明》与对应公司《营业执照》,且营业执照中包含汽车租赁业务
交通服务高速服务/仅支持ETC发行业务,(2选1):1、事业单位主体,需提供《事业单位法人证书》;2、官方指定的发行单位(一发单位),需提供“官方授权或协议,或公开可查询的文件”;
生活服务生活缴费/(供电类)提供《电力业务许可证》与《营业执照》,且《营业执照》且经营范围含供电。(燃气类)提供《燃气经营许可证》与《营业执照》,且《营业执照》且经营范围含供气。(供水类)提供《卫生许可证》与《营业执照》。
IT科技基础电信运营商/(2选1):1、基础电信运营商:提供《基础电信业务经营许可证》;2、运营商分/子公司:提供营业执照(含相关业务范围)。
IT科技转售移动通信/仅支持虚拟运营商,提供《增值电信业务许可证》(业务种类需含通过转售方式提供移动通信业务)
旅游服务住宿服务/仅支持酒店,提供《酒店业特种行业经营许可证》
商业服务公证/仅支持公证处,提供《公证处执业许可证》或《事业单位法人证书》
社交直播/(2选1):1、《信息网络传播视听节目许可证》;2、《网络文化经营许可证》(经营范围含网络表演)。

总得来说,如果你的微信小程序主体不符合以上资质,那么你只能选择第三方的公司提供的人脸核身方案了。

腾讯云 人脸核身

image-20240625224638708

  1. 活体人脸比对

    传入视频和照片,先判断视频中是否为真人,判断为真人后,再判断该视频中的人与上传照片是否属于同一个人。

  2. 活体人脸核身

    传入视频和身份信息,先判断视频中是否为真人,判断为真人后,再判断该视频中的人与权威库的证件照是否属于同一个人。

阿里云 实人认证

链接

image-20240625225916603


image-20240625225948708


image-20240625230002584

第三方公司的人脸核身通用流程

不管是使用任何第三方的人脸核身接口,都脱离不了以下相关流程

客户端-第三方服务接口

image-20240625232054751

客户端-后端-第三方服务接口

此方案对比 客户端-第三方服务接口的主要区别是多了一层中间 后端

此时 后端 的存在主要是解决 自己业务的实际问题。如自己存储人脸相关数据,或者选择服务端接入的方式实现人脸核身。

image-20240625233246461

微信小程序 - 人脸核身

来到此文重点讲解的部分。如你的公司或者组织符合相关资质。那么使用微信小程序-人脸核身方案会更存在优势

  1. 接入人脸核身更简单
  2. 暂时免费

认证流程

  1. 微信认证
  2. 补充小程序信息、名称、图表、描述等
  3. 补充小程序服务类目-设置主营类目
  4. 小程序备案

image-20240625234246662

  1. 开通人脸核身

    2024-06-25235934

编码流程

  1. 检测设备是否支持人脸活体检测 wx.checkIsSupportFacialRecognition(OBJECT)

    接口说明和使用

    OBJECT 参数说明:

    参数类型是否必填描述
    successFunction调用成功回调
    failFunction调用失败回调
    completeFunction调用完成回调(成功或失败都会回调)
    checkAliveTypeNumber人脸核验的交互方式,默认读数字(见表 2)

    checkAliveType 的值和对应的解释:

    参数解释
    2先检查是否可以屏幕闪烁,不可以则自动为读数字

    CALLBACK 返回参数

    参数类型说明
    errMsgBoolean错误信息
    errCodeNumber错误码

    回调结果说明

    回调类型ErrCode说明
    sucess0支持人脸采集
    fail10001不支持人脸采集:设备没有前置摄像头
    fail10002不支持人脸采集:没有下载到必要模型
    fail10003不支持人脸采集:后台控制不支持

    回调结果说明仅对Android生效,iOS不返回errcode。

  2. 开始人脸活体检测

    1. 业务方没有存储用户身份信息
    2. 业务放有存储用户身份信息
无用户身份相关信息

此时调用接口需要传递用户的姓名+身份证相关信息

image-20240625235415950

(一)接口描述
wx.startFacialRecognitionVerify(OBJECT)

(二)参数说明

1、OBJECT参数说明:

参数类型必填说明
nameString姓名
idCardNumberString身份证号码
successFunction调用成功回调
failFunction调用失败回调
completeFunction调用完成回调(成功或失败都会回调)

2、CALLBACK返回参数

参数类型说明
errMsgString错误信息
errCodeNumber错误码
verifyResultString本次认证结果凭据,第三方可以选择根据这个凭据获取相关信息

3、回调结果说明

2024-06-26000018

2024-06-26000056

2024-06-26000121

示例代码

  async faceAuth() {
    try {
      const res = await wx.startFacialRecognitionVerify({
        name: "xxx",
        idCardNumber: "xxx"
      })
      console.log(res)
    } catch (e) {
      //TODO handle the exception
      console.log(e.message)
    }
  }
有用户身份相关信息

image-20240626002952071

1、业务方上传用户姓名和身份证,获取用户凭证,把凭证给到前端通过 jsapi 调用

1.2 请求URL
https://api.weixin.qq.com/cityservice/face/identify/getuseridkey?access_token={ac cess_token}

1.3 请求方式
POST

2、请求数据格式

Json
{
"name" : “张三”,
"id_card_number" : "452122xxxxxxx43215"
}

请求示例

#!/bin/bash TOKEN='xxxxxxxxxxxx'
 
URL='https://api.weixin.qq.com/cityservice/face/identify/getuseridkey' JSON='{ "name": "张三", "id_card_number": "452344xxxxxxxxxxxxx234"}' curl "${URL}?access_token=${TOKEN}" -d "${JSON}"

参数说明

json 字段中文显示是否必传
name姓名
id_card_number身份证号码
out_seq_no业务方唯一流水号

3、返回数据

参数类 型说明
errcodeint错误码
errmsgstring错误信息
user_id_keystring用于后台交互表示用户姓名、身份证的凭证
expires_inuint32user_id_key 有效期,过期需重新获取
{
"errcode" : 0, "errmsg" : "ok",
"user_id_key" : "id_key_xxxx", "expires_in": 3600
} 

4、后台消息推送
如果业务方传入out_seq_no,核身完成后会通过消息推送回调给业务方的服务器,如果回调业务方失败,会在5s尽力推送,超过5s不再推送。

参数说明

参数类 型说明
ToUserNamestring小程序原始ID
FromUserNamestring事件消息openid
CreateTimeuint32消息推送时间
MsgTypestring消息类型
Eventstring事件类型
openidstring核身用户的openid
out_seq_nostring业务方唯一流水号
verify_resultstring核身返回的加密key(凭据)

返回示例

{
	"ToUserName": "gh_81fxxxxxxxx",
	"FromUserName": "oRRn15NUibBxxxxxxxxx",
	"CreateTime": 1703657835,
	"MsgType": "event",
	"Event": "face_identify",
	"openid": "oRRn15NUibBxxxxxxxxx",
	"out_seq_no": "test1234",
	"verify_result": "XXIzTtMqCxwOaawoE91-VNGAC3v1j9MP-5fZJxv0fYT4aGezzvYlUb-n6RWQa7XeJpQo0teKj8mGE4ZcRe1JI3GqzADBYORBu613rKjKAFfEXTXw_bu1bs7MnmPOpguS"
}

四、再次获取核验结果api

此接口是前端完成人脸核身后,基于前端返回的凭据,通过后台api再次进行核验结果和身份信息的校验,有助于提高安全性,请务必接入!
前端获取结果不可信,存在被篡改的风险,为了保障请求结果安全性,请务必对identify_ret、id_card_number_md5、name_utf8_md5字段进行校验!

(一)API说明

1、说明

人脸核身之后,开发者可以根据jsapi返回的verify_result向后台拉取当次认证的结果信息。

2、请求URL

https://api.weixin.qq.com/cityservice/face/identify/getinfo?access_token={access_token}

3、请求方式

POST

4、请求格式

json

(二)请求数据说明

1、请求

参数类型是否必填描述
verify_resultStringjsapi返回的加密key(凭据)

2、数据返回 HTTP 头如下

Date: Mon, 06 Feb 2017 08:12:58 GMT
Content-Type: application/json; encoding=utf-8
Content-Length: 85
Connection: close

json示例

{
"errcode" : 0,
"errmsg" : "ok", "identify_ret" : 0,
"identify_time" : 1486350357
"validate_data": "8593"

(三)返回参数说明

1、返回参数

注:errcode和identify_ret同时为0,代表本次认证成功。

参数类型描述
errcodeint错误码, 0表示本次api调用成功
errmsgstring本次api调用的错误信息
identify_retint人脸核身最终认证结果
identify_timeuint32认证时间
validate_datastring用户读的数字(如是读数字)
openidstring用户openid
user_id_keystring用于后台交互表示用户姓名、身份证的凭证
finish_timeuint32认证结束时间
id_card_number_md5string身份证号的md5(最后一位X为大写)
name_utf8_md5string姓名MD5

2、错误码对应信息

errcode备注
84001非法identity_id
84002用户信息过期
84003用户信息不存在

参考链接

  1. 微信人脸核身接口能力官方

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1863502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Centos7源码方式安装sqle及开发相关

官方文档-源码安装 操作系统:centos:7.9,everything (DVD版应该也可以) (在ubuntu22.04装了两天之后乖乖开了一个新Centos7虚拟机) 镜像:清华大学开源软件镜像站 centos/7.9.2009 安装git sudo yum update -y sudo yum install -y git git --version安…

使用 Google Gemini 和 SwiftUI 构建 AI 图像识别应用程序

在本教程中,我们将演示如何使用 Google Gemini API 进行图像识别。这个简单的应用程序允许用户从他们的照片库中选择一张图片,并使用 Gemini 描述照片的内容。 在继续本教程之前,请访问Google AI Studio并创建您自己的 API 密钥(如果您还没有这样做)。 在 Xcode 项目中添…

考试系统开源意义

在当今信息科技高速发展的时代,考试系统的代码开源化成为了一个备受关注的话题。开源代码意味着代码的可访问性、可修改性和可分享性,为教育机构和开发者们带来了前所未有的便利和机会。本文将深入探讨考试系统代码开源的背景、意义、优势以及实际应用&a…

Java——IO流(一)-(7/8):字节流-FileOutputStream、字节流完成文件拷贝

目录 文件字节输出流:写字节出去 构造器及常用方法 实例演示 案例:文件复制 过程分析 复制照片 复制文件 文件字节输出流:写字节出去 FileOutputStream(文件字节输出流) 作用:以内存为基准&#x…

1999年-2022年 商品零售价格指数、城市商品零售价格指数数据

商品零售价格指数(RPI)是一个关键的经济指标,用于衡量一段时间内商品零售价格的平均变动情况。以下是对商品零售价格指数的详细介绍: 数据简介 定义:商品零售价格指数反映的是与上一年度相比,零售价格的变…

如何利用AI工具高效写作?

利用AI工具进行高效写作已经成为许多人的选择,因为它们能够帮助用户节省时间、提高效率,并在一定程度上保证写作质量。下面小编就和大家分享的一些具体的步骤和建议,帮助大家更好地利用AI工具进行写作。 1.选择合适的AI写作工具 根据自己的写…

【前端】Vue项目和微信小程序生成二维码和条形码

前言:哈喽,大家好,我是前端菜鸟的自我修养!今天给大家分享Vue项目和微信小程序如何生成二维码和条形码,介绍了JsBarcode、wxbarcode等插件,并提供具体代码帮助大家深入理解,彻底掌握&#xff01…

图书馆借阅表

DDL 用户表 (Users) 图书表 (Books) 图书类别表 (BookCategories) 图书与类别关联表 (BookCategoryRelations) 借阅记录表 (BorrowRecords) 供应商表 (Suppliers) 采购记录表 (PurchaseRecords) CREATE TABLE Users (user_id INT PRIMARY KEY AUTO_INCREMENT,username …

解决宝塔linux面板 - 404 Not Found(Nginx)方法

宝塔Linux面板后台登录提示404 Not Found Nginx如何解决?码笔记:这是因为BT面板丢失了安全登录入口,如下图: 宝塔404 Not Found nginx 解决方法: 1、先SSH远程服务器 2、然后执行命令 bt 14 重新获取宝塔面板URL地址安…

使用Hugging Face获取BERT预训练模型

【图书推荐】《从零开始大模型开发与微调:基于PyTorch与ChatGLM》_《从零开始大模型开发与微调:基于pytorch与chatglm》-CSDN博客 BERT是一个预训练模型,其基本架构和存档都有相应的服务公司提供下载服务,而Hugging Face是一家目前专门免费提…

cJSON源码解析之add_item_to_object函数

文章目录 前言add_item_to_object函数是干什么的add_item_to_object代码解析函数实现函数原理解析开头的代码constant_key参数的作用最后的if判断 add_item_to_array函数 总结 前言 在我们的日常编程中,JSON已经成为了一种非常常见的数据交换格式。在C语言中&#…

【Android】android studio简单实现图书馆借阅管理系统

希望文章能给到你启发和灵感~ 点赞收藏关注 支持一下吧~ 阅读指南 序幕一、基础环境说明1.1 硬件环境1.2 软件环境 二、整体设计2.1 数据库逻辑处理:2.2 登录/注册模块2.3 功能界面初始化:2.4 图书管理模块2.5 图书租借服务2.6 读…

[物联网专题] - 螺钉式接线端子的选择和辨识

工业设备上大量使用各式各样的端子来连接外部设备和电缆电线,其中用得最多的就是标准的螺钉式端子,其外形如下: 标准端子一般是2位(2个接线端子),端子与端子之间可以级联,组成任意数量的位数。…

vue项目无后台版本打包上传到服务器

打包项目 也可以在文件目录下npm run build 生成dist文件夹 将dist文件夹里的所有文件拷贝到站点的根目录,这里使用宝塔面板进行操作 前提你得先创建站点,域名绑定等操作

项目菜单配置

stores/index.js import {createStore } from "vuex"; //计算高度 let height window.innerHeight;//计算分辨率 let width window.innerWidth;let activeIndex localStorage.getItem("activeIndex"); if (activeIndex null || activeIndex "&q…

制图工具(14)导出图层字段属性信息表

在制图工具(13)地理数据库初始化工具中我们提到,有一个参数为:“输入Excel表”,并要求表格中的图层字段属性项需要按工具的帮助文档中的示例进行组织… 如下图: 此外,总有那个一个特别的需求&am…

【单片机毕业设计选题24028】-基于STM32的大棚温湿度采集系统

系统功能: 系统分为手动和自动模式,上电默认为自动模式,自动模式下系统根据采集到的传感器值 自动控制,温度过低后自动开启加热,湿度过高后自动开启通风,光照过低后自动开启补 光,水位过低后自动开启水泵…

Android 界面库 (二) 之 Data binding 详细介绍

1. 简介 回顾我们在前面文章《Android 界面库 (一) 之 View binding 简单使用》中学习的 View Binding,它旨在简化 View 与代码之间的绑定过程。它会在编译时期为每个 XML 布局文件生成相应的绑定类(Binding class),该类里包含了布局文件每个有 ID 的 Vi…

L59---101.对称二叉树(广搜)---Java版

1.题目描述 2.思路和知识点 (1)根节点为空: 如果根节点为空,树是对称的。 (2)递归检查: isMirror 方法递归检查两个子树是否是镜像对称的。 (3)辅助函数 isMirror: 1)如果两个节点都为空,它们是镜像对称的…

php composer 报错

引用文章: Composer设置国内镜像_composer 国内源-CSDN博客 php composer.phar require --prefer-dist yiidoc/yii2-redactor "*" A connection timeout was encountered. If you intend to run Composer without connecting to the internet, run the …