微信-支付宝---人脸识别认证

 人脸识别代码解读起来太复杂,以下代码大致就是微信支付宝人脸识别认证的全部流程,大约每一行代码都做了详细的注释,可能会有不完善的可以指出来,具体的业务逻辑后续会做进一步的整理说明。

 先引入进来几个封装的接口方法:

import { facewxauth, facewxback, wxSdk } from "@/api/module/base";
import wx from "weixin-js-sdk"; 

import axios from '@/libs/api.request'
import qs from 'qs'

//微信sdk
export const wxSdk = (data) => {
  return axios.request({
    url: '/auth/wx/jssdksignature.do',
    method: 'post',
    data: qs.stringify(data)
  })
}

//微信人脸识别初始化
export const facewxauth = (data) => {
  return axios.request({
    url: '/icard/face/wx-auth.do',
    method: 'post',
    data: qs.stringify(data)
  })
}

//微信人脸识别结果查询
export const facewxback = (data) => {
  return axios.request({
    url: '/icard/face/wx-auth-callback.do',
    method: 'post',
    data: qs.stringify(data)
  })
}

navigator是HTML中的内置对象,包含浏览器的信息;userAgent是navigator的属性方法,可以返回由客户机发送服务器的头部的值,可以判断用户使用哪个端的哪种浏览器打开页面。作用其实就是返回当前用户所使用的是什么浏览器,toLowerCase()是将转换为小写。

userAgent变量接收的信息在这里的意思就是当前用户所使用的浏览器信息,取得浏览器的userAgent字符串

let userAgent = window.navigator.userAgent.toLowerCase(); 

micromessenger为微信内嵌的浏览器 ,通过userAgent是否indexOf包含MicroMessenger来判断是否在微信内置浏览器打开网页 

let userAgent = window.navigator.userAgent.toLowerCase(); 

if (userAgent.indexOf("micromessenger") > -1) {
        // 代码执行进来,则表明是在微信内置的浏览器中操作的
        // 调用jssdk人脸核身校验
        let req = { userName: this.name, userCardNo: this.cardNo };
        //人脸识别前先进行一次初始化,调用微信人脸识别初始化封装接口的方法facewxauth(),传入参数为用户本人的信息
        facewxauth(req).then((res) => {
          // 用navigator.userAgent这种方法可以判断用户使用哪个端的哪种浏览器打开页面
          var u = navigator.userAgent,
            app = navigator.appVersion;
          // 取到浏览器信息,运行逻辑判断是哪个端打开的浏览器,这里判断是否是安卓端
          var isAndroid = u.indexOf("Android") > -1 || u.indexOf("Linux") > -1; //g
          // match() ⽅法可在字符串内检索指定的值,或找到⼀个或多个正则表达式的匹配
          // 判断结果时这里判断是否是ios终端
          var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端

          // 取到人脸识别初始化成功后的结果 rsp
          let rsp = res.data;
;
          // 返回的code为200时,表明初始化成功了
          if (rsp.code == 200) {
            //   取到初始化成功后的数据 data1
            let data1 = rsp.data;

            // 调用微信jssdk
            let datas = {
              // 判断跳转的地址是安卓还是ios,两个不一样,所以需要判断一下
              url: isAndroid
                ? window.location.href
                : process.env.VUE_APP_BASE_URL +
                  process.env.VUE_APP_PUBLICPATH +
                  "faceauth",
            };

            //调用微信sdk封装接口的方法wxSdk(),接受一个参数是地址
            wxSdk(datas).then((res) => {
              // 把this的指向重新赋值
              var that = this;
              // 取到sdk接口调用成功返回的结果
              let data = res.data.data;
              // wx 就是引入的微信内的网页开发工具js-sdk包,所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用,通过config接口注入权限验证配置
              wx.config({
                beta: true, // 必填,开启内测接口调用,注入 wx.invoke 和 wx.on 方法
                debug: false, // 选填,开启调试模式,默认为 false 不开启
                appId: data.appid, // 必填,公众号的唯一标识
                timestamp: data.timeStamp, // 必填,生成签名的时间戳
                nonceStr: data.nonceStr, // 必填,生
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值