小程序人脸核身

参考  : https://blog.csdn.net/qq_36710146/article/details/105110741

 

 

实际项目中:以下为封装的  小程序 支付    人脸识别 的方法js文件  在具体的页面中进行引入使用

const request = require('request.js')
var app = getApp();
let payUtil = {
  /**
   * 获取签名
   */
  getSign: function (requestParam) {
    let params = {
      url: '/wechat/pay/sign',
      body: requestParam.data,
      method: 'POST'
    }
    request.doRequest(
      params,
      function (data) {
        wx.requestPayment({
          'timeStamp': data.timeStamp + '',
          'nonceStr': data.nonceStr,
          'package': data.package,
          'signType': data.signType,
          'paySign': data.paySign,
          'success': function (res) { 
            // 支付成功回调
            requestParam.successFun(data.wechatpayid);
          },
          'fail': function (res) {
            // 支付成功回调
            requestParam.failFun(data.wechatpayid);
           },
          'complete': function (res) { }
        }) 

      },
      function (data) {
        wx.showToast({
          title: '请求错误',
          icon: 'none'
        })
      }
    )
  },

  /**
   * 支付
   * params: 
   *  total_fee: 总金额
   *  paytype: 交易类型
   *  desc: 交易描述
   *  vipid: 交易用户
   */
  pay: function(params) {
    var that = this;
    wx.getStorage({
      key: 'openId',
      success: function(res) {
        params.data['openid'] = res.data;
        that.getSign(params);
      },
      fail: function(res) {
        that.getOpenid(function() {
          that.pay(params);
        })
      }
    })
  },

  /**
   * 调用登录接口获取code
   * successFun: 成功回调函数
   */
  getOpenid: function(successFun) {
    //调用登录接口
    wx.login({
      success: function (res) {
        let params = {
          url: '/wechat/session',
          body: {
            js_code: res.code
          },
          method: 'POST'
        }
        request.doRequest(
          params,
          function (data) {
            wx.setStorageSync('openId', data.openid); //存在小程序缓存中
            wx.setStorageSync('sessionKey', data.session_key);
            if (successFun && successFun instanceof Function) {
              successFun();
            }
          },
          function (data) {
            wx.showToast({
              title: '请求错误',
              icon: 'none'
            })
          }
        )
      }
    })
  },

  /**
   * 校验session
   * @param {*} callBack 
   */
  checkSession: function(callBack) {
    var that = this;
    // 获取sessionKey
    wx.checkSession({
      success() {
        //session_key 未过期,并且在本生命周期一直有效
        if (callBack && callBack instanceof Function) {
          callBack();
        }
      },
      fail() {
        // session_key 已经失效,需要重新执行登录流程
        that.getOpenid(function() {
          if (callBack && callBack instanceof Function) {
            callBack();
          }
        })
      }
    })
  },

  /**
   * 获取用户信息
   */
  getUserInfo: function(callBack) {
    var that = this;
    // 查看是否授权
    wx.getSetting({
      success(res) {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称
          wx.getUserInfo({
            success: function (resp) {
              that.getOpenid(function() {
                resp.userInfo['openid'] = wx.getStorageSync('openId');
                wx.setStorage({
                  key: 'userInfo',
                  data: resp.userInfo,
                })
                callBack();
              })
            }
          })
        }
      }
    })
  },

  /**
   * 获取用户信息
   * @param {*} callBack 
   */
  getUser: function(callBack) {
    var that = this;
    wx.getUserInfo({
      success: function (resp) {
        that.getOpenid(function() {
          wx.getStorage({
            key: 'openId',
            success: function(res) {
              resp.userInfo['openid'] = res.data;
              wx.setStorage({
                key: 'userInfo',
                data: resp.userInfo,
              })
              callBack();
            }
          })
        })
      }
    })
  },

  /**
   * 进行人脸识别
   */
  gotoVerify: function (successFun) {
    this.getBizToken(function(BizToken) {
        // 调用实名核身功能
        wx.startVerify({
            data: {
                token: BizToken // BizToken
            },
            success: (res) => { // 验证成功后触发
                // res 包含验证成功的token, 这里需要加500ms延时,防止iOS下不执行后面的逻辑
                setTimeout(() => {
                  let params = {
                    url: '/wechat/detectInfo',
                    body: {
                      "bizToken": BizToken
                    },
                  }
                  request.doRequest(
                    params,
                    function (data) {
                      wx.showModal({
                        title: "认证成功",
                        showCancel: false
                      })
                      // if (successFun instanceof Function) {
                      //   successFun(data);
                      // }
                      successFun(data);
                    },
                  )
                }, 500);
            },
            fail: (err) => {  // 验证失败时触发
                // err 包含错误码,错误信息,弹窗提示错误
                setTimeout(() => {
                    wx.showModal({
                        title: "提示",
                        content: err.ErrorMsg,
                        showCancel: false
                    })
                }, 500);
            }
        });
    });
  },

  /**
   * 获取bizToken之后回调人脸识别
   * @param {*} callBack 
   */
  getBizToken: function(callBack) {
    let params = {
        url: '/wechat/bizToken',
        body: {},
    }
    request.doRequest(
      params,
      function (data) {
          callBack(data.bizToken);
      },
      function () {
        wx.showModal({
          title: "提示",
          content: '网络异常',
          showCancel: false
      })
      }
    )
  }
}

module.exports = {
  payUtil: payUtil
}

  

     

posted @ 2020-08-26 09:10  小魏code  阅读(646)  评论(2编辑  收藏  举报