|
|
@@ -8,26 +8,18 @@ namespace app\weixin\service;
|
|
|
|
|
|
class FaceAuth
|
|
|
{
|
|
|
- // 文档 https://market.aliyun.com/products/57124001/cmapi030146.html?spm=5176.2020520132.101.3.588172184iFKo0
|
|
|
- protected static $apiUrl = 'https://fidlite.market.alicloudapi.com';
|
|
|
+ // 文档 https://market.aliyun.com/products/57000002/cmapi00039118.html?spm=5176.730005.productlist.d_cmapi00039118.599b3524mEL1X2&innerSource=search_%E5%85%AC%E4%BC%97%E5%8F%B7%20%E4%BA%BA%E8%84%B8%E8%AF%86%E5%88%AB%E8%AE%A4%E8%AF%81
|
|
|
+ protected static $apiUrl = 'https://faceidh5.market.alicloudapi.com';
|
|
|
protected static $appKey = '203953968';
|
|
|
protected static $appSecret = 'nbP0eTttVbGFjXSI8GbY04tE89Mnw9ow';
|
|
|
protected static $appCode = '689f5d471a2140ea8091c8f4e979f8dd';
|
|
|
protected static $apiUrls = [
|
|
|
- 'getToken'=>'/lite/v1/get_biz_token',
|
|
|
- 'getResult'=>'/lite/v1/get_result?biz_token=%s',
|
|
|
- 'checkUrl'=>'/lite/v1/do/%s',
|
|
|
+ 'getToken'=>'/edis_ctid_id_name_video_ocr_h5',
|
|
|
];
|
|
|
protected static $errors = [
|
|
|
- 'MISSING_ARGUMENTS'=> '缺少某个必选参数',
|
|
|
- 'BAD_ARGUMENTS'=> '参数解析错误',
|
|
|
- 'AUTHORIZATION_ERROR'=> '鉴权失败或签名错误',
|
|
|
- 'CONCURRENCY_LIMIT_EXCEEDED'=> '请求超过并发',
|
|
|
- 'INTERNAL_ERROR'=> '内部错误',
|
|
|
- 'Request Entity Too Large'=> '请求内容大小超出限制',
|
|
|
- 'BAD_ARGUMENTS:idcard_name'=> '身份证姓名错误',
|
|
|
- 'BAD_ARGUMENTS:idcard_number'=> '身份证号码错误',
|
|
|
- 'BAD_ARGUMENTS:notify_url'=> '回调地址错误',
|
|
|
+ '0000'=> '成功',
|
|
|
+ '9999'=> '系统异常',
|
|
|
+ '1999'=> '服务异常',
|
|
|
];
|
|
|
protected static $resultErrors = [
|
|
|
'SUCCESS'=> '待比对照片与权威数据照片或参考照片对比是同一个人',
|
|
|
@@ -75,16 +67,13 @@ class FaceAuth
|
|
|
}
|
|
|
|
|
|
$data = [
|
|
|
- 'biz_no'=> makeTradeNo('F'),
|
|
|
- 'idcard_name'=> $realname,
|
|
|
- 'idcard_number'=> $idcard,
|
|
|
- 'idcard_threshold'=> 0.8, // 身份证识别阈值,0-1,group=1有效
|
|
|
- 'idcard_side'=> 0, // 拍摄身份证但双面,0-双面,1-单面
|
|
|
- 'idcard_retry_time'=> 5, // 人脸重拍次数,1-5
|
|
|
- 'liveness_type'=> 'video_number', // 活体检测类型,可选:video_number
|
|
|
- 'notify_url'=> request()->domain().'/api/notify/face', // 异步回调地址
|
|
|
- 'return_url'=> request()->domain().'/weixin/auth/idcard?type=back', // 回调跳转页面
|
|
|
- 'security_level'=> 2, // 检测严格程度,1-宽松,2-常规,3-严格
|
|
|
+ 'bizNo'=> makeTradeNo('F'),
|
|
|
+ 'idName'=> $realname,
|
|
|
+ 'idNumber'=> $idcard,
|
|
|
+ 'retIdImg'=> 'true', // 是否返回上传身份证照片,可选,默认否
|
|
|
+ 'procedureType'=> 'video', // 活体检测模式,video:读数活体;still静默活体(安全等级不高,不推荐使用)
|
|
|
+ 'returnUrl'=> request()->domain().'/api/notify/face', // 异步回调地址
|
|
|
+ 'notifyUrl'=> request()->domain().'/weixin/auth/idcard?type=back', // 回调跳转页面
|
|
|
];
|
|
|
|
|
|
// 参数配置
|
|
|
@@ -104,18 +93,16 @@ class FaceAuth
|
|
|
$query = FaceAuth::getParams($data);
|
|
|
PRedis::set("caches:faceAuth:{$idcard}:request", ['url'=> $url,'query'=> $query,'headers'=> $headers], 600);
|
|
|
$result = httpHeaderRequest($url,$query,'post',$headers);
|
|
|
- $respError = isset($result['error'])? $result['error'] : '';
|
|
|
- $codeData = $respError? explode(':',$respError) : [];
|
|
|
- $code = isset($codeData[0])? $codeData[0] : '';
|
|
|
- $bizToken = isset($result['biz_token'])? $result['biz_token'] : '';
|
|
|
+ $code = isset($result['code'])? $result['code'] : '';
|
|
|
+ $msg = isset($result['msg'])? $result['msg'] : '';
|
|
|
PRedis::set("caches:faceAuth:{$idcard}:result", $result, 600);
|
|
|
- if($respError || empty($bizToken)){
|
|
|
- $msg = isset(self::$errors[$respError])? self::$errors[$respError] : (isset(self::$errors[$code])? self::$errors[$code] : '获取在线验证参数失败,请刷新重试');
|
|
|
+ $url = isset($result['verifyUrl'])? $result['verifyUrl'] : '';
|
|
|
+ if($code!='0000' || empty($url)){
|
|
|
+ $msg = $msg? $msg : (isset(self::$errors[$code])? self::$errors[$code] : '获取在线验证参数失败,请刷新重试');
|
|
|
return ['code'=> 'error', 'msg'=> $msg, 'result'=> $result];
|
|
|
}
|
|
|
|
|
|
- $url = sprintf('https://api.megvii.com/faceid/lite/do/%s',$bizToken);
|
|
|
- return ['code'=> 'success', 'msg'=> '获取验证参数成功', 'result'=> ['token'=> $bizToken, 'url'=> $url]];
|
|
|
+ return ['code'=> 'success', 'msg'=> '获取验证参数成功', 'result'=> ['result'=> $result, 'url'=> $url]];
|
|
|
|
|
|
}
|
|
|
|