Files
hospital-applets-api/extend/VerifyDun/IdCard.php
T

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());
}
}
}