zoukankan      html  css  js  c++  java
  • 小程序人脸核身

    参考  : 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
    }
    

      

         

    苦心人,天不负
  • 相关阅读:
    css 笔记
    解决谷歌浏览器中的input背景色默认是黄色
    lunbo
    操作json进行分组再组
    点击返回顶部
    关于有的手机浏览器下载APK时会成TXT
    火狐浏览器jsonshow插件
    微信web开发者工具
    浏览器UA
    click多次注册事件会导致一个事件被触发多次的解决方法
  • 原文地址:https://www.cnblogs.com/taxun/p/13563167.html
Copyright © 2011-2022 走看看