阿里云官网参考文档:银行卡要素核验 - 增强版实人认证 - 阿里云
准备工作:
一:登录阿里云控制台,选择实人认证

左上角功能切换为 增强版实人认证

接入场景设置--》卡证核身--》认证场景ID 【代码中需要用到】

二:点击头像下拉框里的AccessKey管理

查看AccessKey ID 和Secret 【代码中需要用到】
二:执行命令下载php SDK
composer require alibabacloud/cloudauth-20200618 2.0.4
注意:如果项目中因缺少composer.lock文件或其他原因导致执行composer命令时会将项目中原本的composer引入的库文件更新。
解决办法是,在本地电脑上新建个文件夹,使用命令窗口执行上面的命令把SDK下载下来,然后在项目中新建个文件夹,名字可以取名为sdk,把下载的SDK资源包上传到该文件夹中,在项目中引入该资源包即可。
注意要选对版本,跟上面composer下载的资源包的版本要一致。

下面是我整理的代码,sdk的下载方法使用的是上面先下载到本地再放入项目中的。
- //验证姓名、身份证号、银行卡号、手机号是否匹配
- function checkBankNoByAli($data){
- $rs=array('code'=>0,'msg'=>'','info'=>array());
-
- $ali_realauth_sceneid=''; //认证场景ID
- $ali_accesskeyid=''; //accesskeyid
- $ali_accesskeysecret=''; //secret
-
- if(!$ali_realauth_sceneid){
- $rs['code']=1001;
- $rs['msg']='认证场景ID错误';
- return $rs;
- }
-
- if(!$ali_accesskeyid){
- $rs['code']=1001;
- $rs['msg']='accesskeyid错误';
- return $rs;
- }
-
- if(!$ali_accesskeyid){
- $rs['code']=1001;
- $rs['msg']='accesskeysecret错误';
- return $rs;
- }
-
-
- require_once '/sdk/alicloudauth/autoload.php'; //路径需替换为自己项目中的实际路径
-
- $client = createClient($ali_accesskeyid, $ali_accesskeysecret);
-
- $result=json_decode($result,true);
-
- $verifyBankElementRequest = new AlibabaCloud\SDK\Cloudauth\V20200618\Models\VerifyBankElementRequest([
- "sceneId" => $ali_realauth_sceneid,
- "outerOrderNo" => random(32),
- "mode" => "VERIFY_BANK_CARD",
- "bankCardNo" => $data['bankno'],
- "idNo" => $data['cardno'],
- "idName" => $data['realname'],
- "mobile" => $data['mobile']
- ]);
- $runtime = new AlibabaCloud\Tea\Utils\Utils\RuntimeOptions([]);
-
- try {
-
- $result = $client->verifyBankElementWithOptions($verifyBankElementRequest, $runtime);
-
- $result=json_encode($result);
-
- $result=json_decode($result,true);
-
- $code=$result['body']['code'];
- //$message=$result['body']['message'];
-
- if($code !=200){
- $rs['code']=1003;
- $rs['msg']='验证失败';
- return $rs;
- }
-
- $resultObject=$result['body']['resultObject'];
-
- if(isset($resultObject['passed'])){
- $return_status=$resultObject['passed'];
- if($return_status !='T'){
- $rs['code']=1004;
- $rs['msg']='验证失败';
- return $rs;
- }
- }
-
- $return_code=$resultObject['subCode'];
-
- if($return_code !=200){
-
- $rs['code']=1005;
- $rs['msg']='验证失败';
- return $rs;
- }
-
- }
- catch (Exception $error) {
- if (!($error instanceof AlibabaCloud\Tea\Exception\TeaError)) {
- $error = new AlibabaCloud\Tea\Exception\TeaError([], $error->getMessage(), $error->getCode(), $error);
- }
- // 如有需要,请打印 error
- // Utils::assertAsString($error->message);
- $rs['code']=1006;
- $rs['msg']=$error->message;
- return $rs;
- }
-
-
- }
-
- //阿里云证件号配置生成
- function createClient($accessKeyId, $accessKeySecret){
-
- $config = new Darabonba\OpenApi\Models\Config([
- // 您的 AccessKey ID
- "accessKeyId" => $accessKeyId,
- // 您的 AccessKey Secret
- "accessKeySecret" => $accessKeySecret
- ]);
-
- // 访问的域名
- $config->endpoint = "cloudauth.aliyuncs.com";
- return new AlibabaCloud\SDK\Cloudauth\V20200618\Cloudauth($config);
- }
-
- //生成随机数
- function random($length = 6 , $numeric = 0) {
- PHP_VERSION < '4.2.0' && mt_srand((double)microtime() * 1000000);
- if($numeric) {
- $hash = sprintf('%0'.$length.'d', mt_rand(0, pow(10, $length) - 1));
- } else {
- $hash = '';
- $chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghjkmnpqrstuvwxyz';
- $max = strlen($chars) - 1;
- for($i = 0; $i < $length; $i++) {
- $hash .= $chars[mt_rand(0, $max)];
- }
- }
- return $hash;
- }
-
-
- //调用方法
- public function test(){
-
- $check_data=array(
- 'bankno' =>'', //银行卡号
- 'realname' =>'', //姓名
- 'cardno' =>'', //身份证号
- 'mobile' =>'' //手机号
- );
-
- $result=checkBankNoByAli($check_data);
-
- if($result['code']!=0){
- return $result;
- }else{
- return array(
- 'code'=>0,
- 'msg'=>'验证成功',
- 'info'=>array()
- );
- }
-
- }
注意一点:24小时内重复查询相同信息超过10次,会被锁定12小时,测试的时候控制好请求次数。