124 lines
4.5 KiB
PHP
124 lines
4.5 KiB
PHP
<?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];
|
||
}
|
||
}
|