Files
yuyin-php/application/api/model/AliRealNameVerify.php
2025-11-06 15:48:02 +08:00

124 lines
4.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\api\model;
use think\Db;
use think\Model;
class AliRealNameVerify extends Model
{
//身份证二要素认证
public function real_name_verifys($real_name, $card_id)
{
$host = "https://eid.shumaidata.com";
$path = "/eid/check";
$method = "POST";
// $appcode = "b984f1e3220649bb8e9a9796808da36f";
$appcode = "c98b2b9cdde747cabd1878dc4eefefc8";
$headers = array();
array_push($headers, "Authorization:APPCODE " . $appcode);
$querys = "idcard=".$card_id."&name=".urlencode($real_name);
$bodys = "";
$url = $host . $path . "?" . $querys;
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//设定返回信息中是否包含响应信息头启用时会将头文件的信息作为数据流输出true 表示输出信息头, false表示不输出信息头
//如果需要将字符串转成json请将 CURLOPT_HEADER 设置成 false
curl_setopt($curl, CURLOPT_HEADER, false);
if (1 == strpos("$".$host, "https://"))
{
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
$result = curl_exec($curl);
if($result) {
$arr = json_decode($result, true);
if($arr){
if($arr['code'] == 0) {
return ['code' => 200, 'msg' => '验证成功', 'data' => null];
}else{
return ['code' => 201, 'msg' => '姓名与身份证核验不一致', 'data' => null];
}
}
}
return ['code' => 201, 'msg' => '验证错误', 'data' => null];
}
//身份证二要素认证
public function real_name_verify($real_name, $card_id)
{
// 云市场分配的密钥Id
$secretId = '3WXZQgBTyuyDH1bX';
// 云市场分配的密钥Key
$secretKey = 'XeZT5WBiUwQcjJ0QuxmPRPE8cJaIxKVM';
// 签名
$datetime = gmdate('D, d M Y H:i:s T');
$signStr = sprintf("x-date: %s", $datetime);
$sign = base64_encode(hash_hmac('sha1', $signStr, $secretKey, true));
$auth = sprintf('{"id": "%s", "x-date": "%s" , "signature": "%s"}', $secretId, $datetime, $sign);
// 请求方法
$method = 'GET';
// 请求头
$headers = array(
'Authorization' => $auth,
);
// 查询参数
$queryParams = array (
'cardNo' => $card_id,
'realName' => $real_name,
);
// body参数POST方法下
$bodyParams = array (
);
$sendData = http_build_query($bodyParams);
// url参数拼接
$url = 'https://ap-beijing.cloudmarket-apigw.com/service-hcgajsa5/idcard/VerifyIdcardv2';
if (count($queryParams) > 0) {
$url .= '?' . http_build_query($queryParams);
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
if (in_array($method, array('POST', 'PUT', 'PATCH'), true)) {
$headers['Content-Type'] = 'application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_POSTFIELDS, $sendData);
}
curl_setopt($ch, CURLOPT_HTTPHEADER, array_map(function ($v, $k) {
return $k . ': ' . $v;
}, array_values($headers), array_keys($headers)));
// $data = json_decode(curl_exec($ch), true);
$result = curl_exec($ch);
if($result) {
$data = json_decode($result, true);
// var_dump($data);exit;
if ($data['error_code'] == 0) {
if ($data['result']['isok']) {
return ['code' => 200, 'msg' => '验证成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '信息有误' . json_encode($data), 'data' => null];
}
} else {
return ['code' => 201, 'msg' => '信息有误' . json_encode($data), 'data' => null];
}
}
return ['code' => 201, 'msg' => '信息有误', 'data' => null];
}
}