一、前端处理:
页面认证功能:
姓名(长度)认证:2-15位中文 (js实现)
身份证验证--初级-格式验证:18位数字或17位数字加x组成;
二、后台处理---使用php
准备工作:
1、阿里云--搜索云市场-选择:全国身份证实名认证-需先购买,不能免费测试。
2、 Api接口--选择:身份证实名认证最新版--
3、 api调用--选择:API 简单身份认证调用方法(APPCODE)
4、编写php
4-1、官方服务--
https://market.aliyun.com/products/56928004/cmapi016424.html?spm=5176.10695662.1996646101.searchclickresult.5fe07f7ee6DUHq#sku=yuncode1042400000
4-1-1、在线接口调用测试
可以在线测试该服务是否可以达到你的功能需求:输入一个你知道的身份证信息,看是否能验证成功
4-1-2、参考请求示例--参考自上面的连接
4-2、新建php---
在php中引入前端页面的数据接口,正常引入即可,完整的php代码如下
<?php
//接口地址
$url = 'http://1.api.apistore.cn/idcard3';
//请正确填写appcode,如果填写错误阿里云会返回错误
//appcode查看地址 https://market.console.aliyun.com/imageconsole/
$appCode = '你的appcode';
//引入接口: 姓名 身份证号码
@$carDno=$_REQUEST["carId"]or die('{"code":-1,"msg":"身份证号码是必须的"}');
@$carDname=$_REQUEST["uName"]or die('{"code":-1,"msg":"姓名是必须的"}');
$params['cardNo']=$carDno;
//身份证姓名
$params['realName']=$carDname;
//发送远程请求;
$result = APISTORE_POST($url, $params, $appCode);
//返回验证结果判断
if ($result['error_code'] == 0){
//恭喜您,您的身份证姓名和号码一致
echo $result['reason'];
} else {
//验证失败, 信息不一致
echo $result['reason'];
}
//输出返回结果
//print_r("<pre>");
//print_r($result);
/**
* APISTORE_POST 获取数据
* @param $url
* @param array $params
* @param $appCode
* @return mixed
*/
function APISTORE_POST($url, $params = array(), $appCode)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array (
'Authorization:APPCODE '.$appCode
));
//如果是https协议
if (stripos($url, "https://") !== FALSE) {
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
//CURL_SSLVERSION_TLSv1
curl_setopt($curl, CURLOPT_SSLVERSION, 1);
}
//通过POST方式提交
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
//超时时间
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//返回内容
$callbcak = curl_exec($curl);
//http状态码
$httpCode = curl_getinfo($curl,CURLINFO_HTTP_CODE);
//阿里云http统一状态码,请参阅 https://help.aliyun.com/document_detail/43906.html
if (in_array($httpCode,array(400,403)))
die("请确认您的appCode是否正确,或有剩余次数");
//关闭,释放资源
curl_close($curl);
//返回内容JSON_DECODE
return json_decode($callbcak, true);
}
?>
上面的php代码执行后返回的过是:验证成功或验证不成功,根据返回结构的length长度去和前端做交互的,length<5则提示实名认证通过,反之;
如果需要在数据库保存用户的实名认证信息,只需在验证通过的条件下写插入到数据库中php语句即可:下面是关于验证成功后插入到数据库的示例:
//返回验证结果判断
if ($result['error_code'] == 0){
//恭喜您,您的身份证姓名和号码一致
// echo $result['reason'];
header("Content-Type:application/json;charset=utf-8");
$conn=mysqli_connect("127.0.0.1","root","","mj",3306);
mysqli_query($conn,"SET NAMES UTF8");
$sql="INSERT INTO rel_msg VALUES(null,'$carDname','$carDno')";
$result=mysqli_query($conn,$sql);
if($result===true){ echo '{"code":1,"msg":"验证成功"}';
}else{ echo '{"code":-1,"msg":"验证失败"}'; };
} else {
//验证失败, 信息不一致
echo $result['reason'];
}