目录

通过身份证照片获取个人信息

银行卡4要素验证(腾讯接口)


通过身份证照片获取个人信息

百度API接口文档

百度的接口免费适合学习和应用前期初步的使用,

如果验证的图片为空或不为身份证则不计算在次数当中。

将文档的内容转化成代码:

<?php
/*** 通过上传到服务器的图片路径进行图片识别* 发起http post请求(REST API), 并获取REST请求的结果* @param string $url* @param string $param* @return - http response body if succeeds, else false.*/
function request_post($url = '', $param = '')
{if (empty($url) || empty($param)) {return false;}$postUrl = $url;$curlPost = $param;// 初始化curl$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $postUrl);curl_setopt($curl, CURLOPT_HEADER, 0);// 要求结果为字符串且输出到屏幕上curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);// post提交方式curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);// 运行curl$data = curl_exec($curl);curl_close($curl);return $data;
}
function get_access_token(){$url_t = 'https://aip.baidubce.com/oauth/2.0/token';$client_id = "你的 Api Key";$client_secret = "你的 Secret Key";$body_t = array("grant_type" => "client_credentials",//固定参数"client_id" => $client_id,"client_secret"=> $client_secret);$res_t = request_post($url_t, $body_t);$target = json_decode($res_t,true)['access_token'];return $target;
}$imgurl = $_GET['imgurl'];//图片的绝对路径$token = get_access_token();
$url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=' . $token;
$img = file_get_contents($imgurl);$img = base64_encode($img);
$id_card_side ="front";$bodys = array("image" => $img,"id_card_side" =>$id_card_side);
$res = request_post($url, $bodys);var_dump($res);
$id_card_side ="front";front:身份证含照片的一面;back:身份证带国徽的一面因项目只需要身份证正面信息所以没做判断,直接写死了。

个人写法 —— 无需将图片存储至服务器

<body><input type="file" id="upLoad" name="image"><!-- 显示上传之后的图片 --><div id='previewImg'><img src="" id='viewImg' />
</body>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
$(function() {$('#upLoad').on('change', function() {var filePath = $(this).val(), //获取到input的value,里面是文件的路径fileFormat = filePath.substring(filePath.lastIndexOf(".")).toLowerCase(),imgBase64 = '', //存储图片的imgBase64fileObj = document.getElementById('upLoad').files[0];//上传文件的对象,要这样写才行,用jquery写法获取不到对象// 检查是否是图片if (!fileFormat.match(/.png|.jpg|.jpeg/)) {alert('上传错误,文件格式必须为:png/jpg/jpeg');return;}// 调用函数,对图片进行压缩directTurnIntoBase64(fileObj, function(imgBase64) {imgBase64 = imgBase64; //存储转换的base64编码apitest(imgBase64);// console.log(imgBase64);$('#viewImg').attr('src', imgBase64); //显示预览图片});});// 不对图片进行压缩,直接转成base64function directTurnIntoBase64(fileObj, callback) {var r = new FileReader();// 转成base64r.onload = function() {//变成字符串imgBase64 = r.result;// console.log(imgBase64);callback(imgBase64);}r.readAsDataURL(fileObj); //转成Base64格式}// 对图片进行压缩function compress(fileObj, callback) {if (typeof(FileReader) === 'undefined') {console.log("当前浏览器内核不支持base64图标压缩");//调用上传方式不压缩directTurnIntoBase64(fileObj, callback);} else {try {var reader = new FileReader();reader.onload = function(e) {var image = $('<img/>');image.load(function() {square = 700, //定义画布的大小,也就是图片压缩之后的像素canvas = document.createElement('canvas'),context = canvas.getContext('2d'),imageWidth = 0, //压缩图片的大小imageHeight = 0,offsetX = 0,offsetY = 0,data = '';canvas.width = square;canvas.height = square;context.clearRect(0, 0, square, square);if (this.width > this.height) {imageWidth = Math.round(square * this.width / this.height);imageHeight = square;offsetX = -Math.round((imageWidth - square) / 2);} else {imageHeight = Math.round(square * this.height / this.width);imageWidth = square;offsetY = -Math.round((imageHeight - square) / 2);}context.drawImage(this, offsetX, offsetY, imageWidth, imageHeight);var data = canvas.toDataURL('image/jpeg');//压缩完成执行回调callback(data);});image.attr('src', e.target.result);};reader.readAsDataURL(fileObj);} catch (e) {console.log("压缩失败!");//调用直接上传方式 不压缩directTurnIntoBase64(fileObj, callback);}}}
});
function apitest(img64) {$.ajax({url: '接口的路径',type: 'POST',data: {imgurl: img64},dataType: 'json',success: function(data) {console.log(data);},error:function(xhr){console.log(xhr);}})
}
</script>

图片在后端处理时是将获取的图片先base64编码后再请求接口,所以我在前端把图片进行编码压缩通过Ajax传参的形式到后台直接使用,这种方法可以无需将图片上传存储至服务器依然可以使用接口获取身份证上的信息。

<?php
header("Access-Control-Allow-Origin: *");
/*** 发起http post请求(REST API), 并获取REST请求的结果* @param string $url* @param string $param* @return - http response body if succeeds, else false.*/
function request_post($url = '', $param = '')
{if (empty($url) || empty($param)) {return false;}$postUrl = $url;$curlPost = $param;// 初始化curl$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $postUrl);curl_setopt($curl, CURLOPT_HEADER, 0);// 要求结果为字符串且输出到屏幕上curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);// post提交方式curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);// 运行curl$data = curl_exec($curl);curl_close($curl);return $data;
}
function get_access_token(){$url_t = 'https://aip.baidubce.com/oauth/2.0/token';$client_id = "你的 Api Key";$client_secret = "你的 Secret Key";$body_t = array("grant_type" => "client_credentials",//固定参数"client_id" => $client_id,"client_secret"=> $client_secret);$res_t = request_post($url_t, $body_t);$target = json_decode($res_t,true)['access_token'];// var_dump($target);return $target;
}// 可以直接用base64编码的图片// $imgurl = $_GET['imgurl'];$imgurl = $_POST['imgurl'];if(!$imgurl){return "empty image";}$token = get_access_token();$url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=' . $token;$img = file_get_contents($imgurl);$img = base64_encode($img);$id_card_side ="front";$bodys = array("image" => $img,"id_card_side" =>$id_card_side);$res = request_post($url, $bodys);$data =json_decode($res,true);$identity_front = array('idcard' =>$data["words_result"]['公民身份号码']['words'],'name' =>$data["words_result"]['姓名']['words'],'sex' =>$data["words_result"]['性别']['words'],'birth' =>$data["words_result"]['出生']['words'],'address' =>$data["words_result"]['住址']['words'],'nation' =>$data["words_result"]['民族']['words']);// var_dump($identity);echo json_encode($identity_front);
?>

银行卡4要素验证(腾讯接口) 好贵千万别乱玩

腾讯云开发者工具套件(SDK)下载

需要配合此包使用

密钥地址管理/生成密匙

将此PHP与SDK放在同级目录下。

BankCardVerification.php:

<?php
header("Access-Control-Allow-Origin: *");require_once 'tencentcloud-sdk-php/TCloudAutoLoader.php';
use TencentCloud\Common\Credential;
use TencentCloud\Common\Profile\ClientProfile;
use TencentCloud\Common\Profile\HttpProfile;
use TencentCloud\Common\Exception\TencentCloudSDKException;
use TencentCloud\Faceid\V20180301\FaceidClient;
use TencentCloud\Faceid\V20180301\Models\BankCard4EVerificationRequest;try {$cred = new Credential("你的 SecretId",     "你的 SecretKey");$httpProfile = new HttpProfile();$httpProfile->setEndpoint("faceid.tencentcloudapi.com");$clientProfile = new ClientProfile();$clientProfile->setHttpProfile($httpProfile);$client = new FaceidClient($cred, "ap-guangzhou", $clientProfile);$req = new BankCard4EVerificationRequest();// 测试数据//$params = '{"Name":"三",//"BankCard":"6222222222222222222",//"Phone":"15776965623",//"IdCard":"431003199512051916"}';$params= $_POST['params'];$req->fromJsonString($params);$resp = $client->BankCard4EVerification($req);print_r($resp->toJsonString());}catch(TencentCloudSDKException $e) {echo $e;}// 认证结果码:Result(String)// '0': '认证通过'// '-1'    : '认证未通过'// '-2': '姓名校验不通过'// '-3': '身份证号码有误'// '-4': '银行卡号码有误'// '-5': '手机号码不合法'// '-6': '持卡人信息有误'// '-7': '未开通无卡支付'// '-8': '此卡被没收'// '-9': '无效卡号'// '-10': '此卡无对应发卡行'// '-11': '该卡未初始化或睡眠卡'// '-12': '作弊卡、吞卡'// '-13': '此卡已挂失'// '-14': '该卡已过期'// '-15': '受限制的卡'// '-16': '密码错误次数超限'// '-17': '发卡行不支持此交易'// '-18': '服务繁忙'
// 4个输入框和样式就省略了<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
function apitest() {var name = $('#name').val();var bankcard = $('#bankcard').val();var phone = $('#phone').val();var idcard = $('#idcard').val();var params = '{"Name":"' + name + '","BankCard":"' + bankcard + '","Phone":"' + phone + '","IdCard":"' + idcard + '"}'$.ajax({url:  'xxx/xxx/BankCardVerification.php',type: 'POST',data: {params: params},dataType: 'json',success: function(data) {console.log(data.Description);}})
}
</script>

身份证照片获取个人信息与银行卡4要素验证相关推荐

  1. 涨知识!细数银行卡三要素 API 的 N 种验证方法

    引言 银行卡三要素验证 API 是一种基于姓名.身份证号码和银行卡号等三种信息的验证服务,主要用于绑定银行卡时校验银行卡是否为该身份信息所有.手机号是否为银行卡绑定手机号. 银行卡三要素 API 的验 ...

  2. 细数N个获取天气信息的免费 API ,附超多免费可用API 推荐(三)

    前言 市面上有 N 多个查询天气信息的软件.小程序以及网页入口,基本都是通过调用天气查询 API 去实现的. 今天整理了一下多种场景的天气预报API 接口分享给大家,有需要赶紧收藏起来. 天气预报查询 ...

  3. 如果实现银行卡三四要素? 银行卡实名认证

    银行卡四要素-银行卡实名认证-银行卡四要素认证-银行卡四要素核验-银行卡四要素实名 -银行卡四要素查询-银行卡认证[北斗数聚][最新版]_银行卡二元素认证_银行卡三元素认证_银行卡四元素认证-云市场- ...

  4. 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取 Activity 中的所有方法 | 获取方法上的注解 | 获取注解上的注解 | 通过注解属性获取事件信息 )

    文章目录 前言 一.获取 Activity 中的所有方法 二.获取方法上的注解 三.获取注解上的注解 四.通过注解属性获取相关事件信息 前言 Android 依赖注入的核心就是通过反射获取 类 / 方 ...

  5. ArcGIS Engine中如何获取Map中已经选择的要素呢(转)

    ArcGIS Engine中如何获取Map中已经选择的要素呢   1.使用IEnumFeturea对象获取map中的FeatureSelection,该方法可以获取所有图层的选择要素.IMap中的Fe ...

  6. iOS 13.x获取通讯录信息时的注意事项

    之前的项目兼容的版本在iOS9.0以上,所以在项目中使用了CNContacts框架获取用户的通讯录信息,大致的实现如下: /// 判断字符串是否可用 /// 辅助函数 /// @param str 原 ...

  7. python获取每日支付宝与银行卡账单

    摘要 IDE:pycharm 关键包:selenium.pyautogui.ddddocr 场景:1. 每天凌晨爬取银行卡.支付宝的去日账单,形成临时的xlsx文件:2. 白天手动设置每条明细的支出/ ...

  8. 审计学习-审计概述02(政府审计和注册会计师审计+职业责任和期望差距+审计报告和信息差距+审计五要素+三方关系人+责任方责任+审计报告预期使用者+鉴证对象+披露+财报编制基础)

    文章目录 政府审计 vs 注册会计师审计 职业责任和期望差距 审计报告和信息差距 审计五要素 三方关系人 被审计单位管理层责任 审计报告预期使用者 鉴证对象(信息) 披露 财务报表编制基础(标准) 政 ...

  9. 在线核验身份证、银行卡三要素实名、手机空号过滤

    打了一天的电话,一半是空号,我太难了-- 奔波一天采集了用户的银行卡信息,结果信息是假的,我太丧了-- 生意合伙人提供的合同身份证信息居然不是本人的,我亏大了-- 维系网站用户,可短信没办法群发,我太 ...

最新文章

  1. Linux 编程经典书籍推荐
  2. 问题:二进制数中1的个数。
  3. 信道检测手机软件 ios_【手机软件】云听:稀有神器,移动音频的国家队,某拉雅资源它都有!...
  4. linux云管理,教程|云帮手部署Linux公有云管理系统
  5. 欢乐纪中某B组赛【2019.1.30】The penultimate day
  6. Python中jmespath解析提取json数据
  7. 信息学奥赛一本通 1055:判断闰年 | OpenJudge NOI 1.4 17
  8. C++ 用new 动态创建多维数组
  9. 推理集 —— 物品与动物
  10. axios封装接口步骤详解
  11. 335x内核ddr3频率与电压修改
  12. 555定时器原理及应用(报告)
  13. 怎么用wps抽签_如何使用wps表格进行分班
  14. MySQL从入门到入魔,总结我的学习历程,给有需要的人看!
  15. robocup学习篇(一)
  16. 永远相信美好的事情即将发生。
  17. 【漫漫转码路】Python Day 15
  18. echarts圆环象性图,实现从低向上渲染颜色
  19. W ndows7有线网络连接,七仔教你学Windows7:如何连接网络 爱问知识人
  20. 图像去雾(二)Retinex图像增强算法

热门文章

  1. 想剑网三妹子最多服务器,玩家有多“疯狂”?为了新门派,提前一年为其准备108套外观...
  2. 《数据结构与算法:Python语言描述》一1.3算法和算法分析
  3. 高等数学——讲透求极限两大方法,夹逼法与换元法
  4. Python 命令行编程
  5. 有赞996刷屏:男程序员们,别再低头写代码了
  6. 小年到了,用 Python 实现一场环保无污染的烟花秀,祝大家节日快乐
  7. 天极副总裁李大学谈网站创新
  8. 教你安装Weblogic
  9. 遭遇“windows已经阻止此软件因为无法验证发行者”
  10. Oracle分页实现