A小程序没有开通人脸识别功能,B小程序开通了人脸识别。
总体思路是:从A小程序需要进行人脸识别的地方携带参数跳转到B小程序进行人脸识别,识别后把参数传递回来。
A小程序的参考代码如下:
//人脸识别相关 start
powerDrawerFace(e){var that = thisthat.setData({faceOfReservation: e.currentTarget.dataset.id})// console.log(that.data.faceOfReservation.personName+","+that.data.faceOfReservation.personIdCard)that.navigateToTargetMiniProgram(that.data.faceOfReservation.personName,that.data.faceOfReservation.personIdCard);
},
//携带参数跳到B小程序
navigateToTargetMiniProgram(name,idCardNumber) {wx.navigateToMiniProgram({appId: 'B小程序的appId',path: 'pages/index/index?name='+name+'&idCardNumber='+idCardNumber,extraData: {foo: 'bar'},envVersion: 'develop',//B小程序的开发版本 正式版本注释即可。success(res) {// 跳转成功的回调函数},fail(res) {// 跳转失败的回调函数}});
},
//监听B小程序返回时携带的参数并进行逻辑判断。
onShow() {var that=this;wx.onAppShow(res=>{console.log(res)var extraData=res.referrerInfo.extraData;if(extraData!=null){var params={}if(extraData.foo.errCode==0){console.log(that.data.faceOfReservation.id)params = {id: that.data.faceOfReservation.id,faceRecogFlag: 1,}}else{params = {id: that.data.faceOfReservation.id,faceRecogFlag: -1,}}console.log(params)//进行A小程序后端代码的修改reservableUpdate(params).then(res => {if(res.data.success){// wx.reLaunch({// url: '/pages/myBooking/myBooking',// })this.getReservationOrderList()}})}})
},
//人脸识别相关 end
B小程序的代码参考如下:
//人脸识别相关 startonLoad: function (options) {// options 参数包含了跳转时携带的参数this.facialRecognitionVerify(options.name,options.idCardNumber);// if(options!=null){// var name = options.name;// var idCardNumber = options.idCardNumber;// if(name!=null&&idCardNumber!=null){// this.facialRecognitionVerify(name,idCardNumber);// }// this.setData({// name: name,// idCardNumber: idCardNumber// })// }},//启动人脸识别操作facialRecognitionVerify(name,idCardNumber) {// if(name==null||idCardNumber==null){// if(this.data.name!=null&&this.data.idCardNumber!=null){// name=this.data.name;// idCardNumber=this.data.idCardNumber;// }else{// this.faceRecognitionComplete("姓名和身份证不能为空")// return;// }// }let that = this;wx.startFacialRecognitionVerify({name: name,idCardNumber: idCardNumber,checkAliveType: 2,//人脸识别成功回调通知success(res) {that.faceRecognitionComplete(res)//后端校验(最好是加)// var verifyResult = res.verifyResult;// wx.request({// url: '/faceCheck/faceCheck.htm?action=faceIdentifyCheck', // data: {'name':name,'idCardNumber':idCardNumber,// 'verifyResult ':verifyResult// },// header: {// 'content-type': 'application/json' // },// success (res) {// console.log(res.data)// }// })},//人脸识别失败的回调通知fail: function (res) {wx.showModal({title: '提示',showCancel: false,content: "人脸识别失败!" + res.errCode + "," + res.errMsg,success: function (res) {if (res.confirm) {// wx.navigateBack();that.faceRecognitionComplete(res)}}});},});},//携带参数返回原先的小程序 faceRecognitionComplete(result) {console.log(result)wx.navigateBackMiniProgram({extraData: {foo: result //注意跳转回来,需要用foo字段。},success(res) {// 返回成功console.log(res)}})}//----end