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

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

名词解释

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

  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. 微信人脸核身接口能力官方

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【SSM】医疗健康平台-管理端-统计分析

知识目标 了解ECharts,能够说出ECharts的作用 掌握会员数量统计的实现,能够使用Echarts绘制会员数量统计图形报表 掌握套餐预约占比统计的实现,能够使用Echarts绘制套餐预约占比统计图形报表 掌握运营数据报表的实现 通过对数据进行统计…

Games101 透视投影矩阵推导

目录 齐次坐标 透视投影 透视投影的四棱锥体挤压为正交投影的长方体 变换规定 转换过程 观察1 观察2 关于任意一点挤压后向哪里移动的问题,简单推导了一下 齐次坐标 如下,(x, y, z, 1) 表示空间中的xyz点,让它每个分量乘以k&#…

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

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

如何应对UI测试自动化的不稳定循环!

以下为作者观点: 当我加入UI自动化团队时,我很高兴能为新功能的自动化测试用例开发做出贡献。然而,我很快意识到团队花费了大量时间来修复之前迭代中不稳定的测试。这种情况让我感到困惑,因为当自动化测试脚本已知不稳定时&#…

HRSC2016 :推动光学遥感图像细粒度船舶检测的创新引擎(目标检测)

亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 摘要&a…

LabVIEW在核磁共振实验室的应用

​核磁共振(NMR)实验室在进行复杂的核磁共振实验时,需要一个高效、灵活且易于操作的实验控制和数据采集系统。传统的NMR实验系统往往使用专门的硬件和软件,存在系统封闭、扩展性差、维护成本高等问题。为了解决这些问题&#xff0…

java设计模式(五)建造者模式(Builder Pattern)

1、模式介绍: 建造者模式(Builder Pattern)是一种创建型设计模式,它允许你创建一个复杂对象的表示,同时隐藏了创建细节。该模式将对象的构建过程和表示分离,使得相同的构建过程可以创建不同的表示。 2、应…

低成本的PS5存储扩容方案,铠侠SD10 PCle4.0固态硬盘扩容报告

低成本的PS5存储扩容方案,铠侠SD10 PCle4.0固态硬盘扩容报告 哈喽小伙伴们好,我是Stark-C~ 对于入手PS5的游戏玩家来说,机器到手第一步,那就是订阅索尼PlayStation Plus会员,可以尽情的玩耍上百款游戏3A大作&#xf…

web刷题记录

[HDCTF 2023]SearchMaster 打开环境,首先的提示信息就是告诉我们,可以用post传参的方式来传入参数data 首先考虑的还是rce,但是这里发现,不管输入那种命令,它都会直接显示在中间的那一小行里面,而实际的命令…

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

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

Java中特殊文件和日志技术

特殊文件和日志技术 特殊文件:Properties属性文件 特点: 特点一:都是键值对 特点二:键不能重复 特点三:文件后缀一般是Properties 作用: …

涵盖多项功能的文件外发系统,了解一下

伴随着业务范围的不断扩大,信息化的迅速发展,企业与客户、供应商等合作伙伴之间的文件交换也愈加频繁,尤其涉及到核心数据,像核心技术、设计图纸等敏感数据,对其的保护也是越发重视。文件外发系统,应运而生…

2024年河北省特岗教师报名流程详细图解

最近有很多学员们问特岗教师具体的报名流程 给大家安排! 特岗报名步骤 第步: 电脑搜索“河北特岗招聘”登录进行注册 第步:注册后重新登录 第步: 根据个人情况选择填写自己的学历 第步:填写个人信息 (需要上传的电子版的照片、普通话证、学历证书、教资证等) 第步:选择岗位报名…

【大数据技术原理与应用(概念、存储、处理、分析与应用)】第2章-大数据处理架构 Hadoop习题与知识回顾

文章目录 单选题多选题知识点回顾什么是Hadoop?Hadoop有哪些特性?Hadoop生态系统是怎么样的?(1) HDFS(2) HBase(3) MapReduce(4) Hive(5) Pig(6) Mahout(7) Zookeeper(8) Flume(9) Sqoop(10) Ambari 单选题 1、下列哪个不属于Hadoop的特性&am…

MySQL索引优化解决方案--索引优化(4)

排序优化 尽量避免使用Using FileSort方式排序。order by语句使用索引最左前列或使用where子句与order by子句条件组合满足索引最左前列。where子句中如果出现索引范围查询会导致order by索引失效。 优化案例 联表查询优化 分组查询优化 慢查询日志

2024年上半年软件设计师上午真题及答案解析

1.在计算机网络协议五层体系结构中,( B )工作在数据链路层。 A.路由器 B.以太网交换机 C.防火墙 D.集线器 网络层:路由器、防火墙 数据链路层:交换机、网桥 物理层:中继器、集线器 2.软件交付之后&#xff…

C++ | Leetcode C++题解之第174题地下城游戏

题目&#xff1a; 题解&#xff1a; class Solution { public:int calculateMinimumHP(vector<vector<int>>& dungeon) {int n dungeon.size(), m dungeon[0].size();vector<vector<int>> dp(n 1, vector<int>(m 1, INT_MAX));dp[n][m …

并发编程-04synchronized原理

并发编程-04synchronized原理 一 synchronized基础 1.1 并发安全问题 在学习synchronized原理之前&#xff0c;我们先要了解synchronized是干嘛用的&#xff0c;什么场景下需要使用它&#xff0c;以及它的使用方式有哪些&#xff1f;接下来我们去根据一个业务场景去了解下sy…

如何高效利用iCloud指南

苹果公司提供的iCloud服务是一个强大的云平台&#xff0c;它不仅允许存储数据&#xff0c;还支持跨设备的无缝同步和备份。通过充分利用iCloud&#xff0c;用户可以在多个设备上高效地访问和管理工作文件、照片、应用程序数据等等。具体分析如下&#xff1a; iCloud基础了解和配…

mysql workbench使用schema视图导出表和列结构到excel

目的&#xff1a;导出所有表和列的名字和注释 很多时候没有正规的数据库文档&#xff0c;为了快速交流啊&#xff0c;需要一个快捷的基础。数据库建表的时候可能有注释&#xff0c;也可能没有注释。有当然好&#xff0c;查看注释就能清楚很多&#xff0c;没有的话最好一个一个补…