微信小程序人脸识别

官方接口文档地址为:https://developers.weixin.qq.com/community/business/doc/000442d352c1202bd498ecb105c00d

代码示例:

前端小程序接入

wx.startFacialRecognitionVerify({
            name: '姓名',
            idCardNumber: '身份证号',
            checkAliveType: 2,//验证的方式:2表示先检查是否可以屏幕闪烁,不可以则自动为读数字
            success: (res) => { // 验证成功后触发
                setTimeout(() => {
                    //再通过识别成功返回的verifyResult凭据向后台获取再次核验结果
                    //这里调用的是封装的请求后台的一个方法
                    getWechatMpFaceResult({
                        verifyResult: res.verifyResult
                    }).then((data) => {
                        console.log(data)
                        if(data.errcode ==0 && data.identifyRet == 0){//验证成功
                            success.apply()
                        }else{
                            fail.apply()
                        }
                    }).catch((data) => {
                        console.log(data)
                        fail.apply()
                        wx.showToast(data.errmsg)
                    })
                }, 500);
            },
            fail: (err) => {  // 验证失败时触发
                setTimeout(() => {
                    fail.apply()
                }, 500);
            }
        })

后台验证人脸核验结果的方法:

/**
     * 再次获取人脸核验结果
     * @return
     */
    public Result getFaceResultByVerifyResult(WechatmpFaceResultModel model) throws APIException {
        //刷新token  避免token过期[access_token expired]
        refreshToken();
        //获取access_token
        AccessToken accessToken = getToken();
        if(StringUtil.isEmpty(accessToken.getAccess_token())){
            logger.error("未获取到Access_Token");
            throw new ServiceException("未获取到Access_Token");
        }
        //拼接地址
        String old_url = "https://api.weixin.qq.com/cityservice/face/identify/getinfo?access_token=ACCESS_TOKEN"
        String url = old_url .replace("ACCESS_TOKEN", accessToken.getAccess_token());
        //整理参数:这里要求json字符串的格式,并且key值是"verify_result"
        String param = JSONUtil.toJsonStr(model).replace("verifyResult","verify_result");
        //String param = "{\"verify_result\":\"" + model.getVerifyResult() +"\"}";

        //使用hutool工具包发送请求,并得到返回的json串
        String resp = HttpUtil.post(url, param);
        if (StrUtil.isBlank(resp)) {
            throw new APIException("再次获取人脸核验结果失败。");
        }
        //将返回的结果转成对应的对象
        FaceVerifyResp faceVerifyResp = new FaceVerifyResp();

        if (JSONUtil.isJson(resp)){
            faceVerifyResp = JSONUtil.toBean(resp, FaceVerifyResp.class);
            if (faceVerifyResp.getErrcode() != null && !ERRCODE_SUCCESS.equals(faceVerifyResp.getErrcode())) {
                throw new APIException(StrUtil.format("再次获取人脸核验结果失败。errcode: {}; errmsg: {}", faceVerifyResp.getErrcode(), faceVerifyResp.getErrmsg()));
            }
        }
        return ResultGenerator.genSuccessResult(faceVerifyResp);
    }

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值