110 lines
3.2 KiB
PHP
110 lines
3.2 KiB
PHP
<?php
|
||
|
||
namespace Extend\VerifyDun;
|
||
|
||
use App\Constants\HttpEnumCode;
|
||
use App\Exception\BusinessException;
|
||
use App\Model\LogIdCard;
|
||
use App\Utils\HttpRequest;
|
||
use App\Utils\Log;
|
||
use GuzzleHttp\Exception\GuzzleException;
|
||
|
||
/**
|
||
* 实证认证
|
||
*/
|
||
class IdCard extends Base
|
||
{
|
||
/**
|
||
* 实证认证
|
||
* @param array $params
|
||
* @return string
|
||
* @throws GuzzleException
|
||
*/
|
||
public function checkIdCard(array $params): string
|
||
{
|
||
try {
|
||
// 组合请求地址
|
||
$api_url = $this->api_url . $this->version . '/idcard/check';
|
||
|
||
$this->params['businessId'] = "45a8fd254b4649e9bd25d773ac7ab666";
|
||
|
||
$this->params = array_merge($this->params,$params);
|
||
|
||
// 获取签名
|
||
$this->params['signature'] = $this->gen_signature();
|
||
|
||
$this->options["form_params"] = $this->params;
|
||
|
||
$result = $this->httpRuest->postRequest($api_url,$this->options);
|
||
|
||
// 记录日志,ca认证要求
|
||
Log::getInstance("VerifyDun-IdCard-checkIdCard")->info(json_encode($result,JSON_UNESCAPED_UNICODE));
|
||
|
||
if (empty($result)){
|
||
return "身份证认证失败";
|
||
}
|
||
|
||
if ($result['code'] != "200"){
|
||
if (!empty($result['msg'])){
|
||
return $result['msg'];
|
||
}
|
||
return "身份证认证失败";
|
||
}
|
||
|
||
if (empty($result['result'])){
|
||
return "身份证认证失败";
|
||
}
|
||
|
||
// 记录日志
|
||
$this->recordLog($params['dataId'],$params['name'],$params['cardNo'],$result);
|
||
|
||
// 处理不通过情况
|
||
if ($result['result']['status'] == 2){
|
||
switch ($result['result']['reasonType']) {
|
||
case 2:
|
||
return "输入姓名和身份证号不一致";
|
||
case 3:
|
||
return "查无此身份证";
|
||
case 4:
|
||
return "身份证照片信息与输入信息不一致";
|
||
|
||
default:
|
||
return "身份证认证失败";
|
||
}
|
||
}
|
||
|
||
// 处理status为其他情况
|
||
if ($result['result']['status'] != 1){
|
||
return "身份证认证失败";
|
||
}
|
||
|
||
return "";
|
||
} catch (\Exception $e) {
|
||
throw new BusinessException($e->getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 记录日志
|
||
* @param string $data_id
|
||
* @param string $name
|
||
* @param string $card_no
|
||
* @param array $result
|
||
* @return void
|
||
*/
|
||
public function recordLog(string $data_id,string $name,string $card_no,array $result): void
|
||
{
|
||
try {
|
||
$data = array();
|
||
$data['name'] = $name;
|
||
$data['card_no'] = $card_no;
|
||
$data['status'] = $result['result']['status'];
|
||
$data['data_id'] = $data_id;
|
||
$data['task_id'] = $result['result']['taskId'];
|
||
$data['content'] = json_encode($result,JSON_UNESCAPED_UNICODE);
|
||
LogIdCard::addLogIdCard($data);
|
||
}catch (\Throwable $e){
|
||
Log::getInstance("VerifyDun-IdCard-checkIdCard")->error($e->getMessage());
|
||
}
|
||
}
|
||
} |