官方接口文档地址为: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);
}