• 阿里云增强版实人认证--银行卡要素核验


    阿里云官网参考文档:银行卡要素核验 - 增强版实人认证 - 阿里云

    准备工作:

    一:登录阿里云控制台,选择实人认证

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

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

     

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

     查看AccessKey ID 和Secret  【代码中需要用到】

     二:执行命令下载php SDK

    composer require alibabacloud/cloudauth-20200618 2.0.4

    注意:如果项目中因缺少composer.lock文件或其他原因导致执行composer命令时会将项目中原本的composer引入的库文件更新。

    解决办法是,在本地电脑上新建个文件夹,使用命令窗口执行上面的命令把SDK下载下来,然后在项目中新建个文件夹,名字可以取名为sdk,把下载的SDK资源包上传到该文件夹中,在项目中引入该资源包即可。

    代码参考路径:阿里云 OpenAPI 开发者门户icon-default.png?t=M666https://next.api.aliyun.com/api/Cloudauth/2020-06-18/VerifyBankElement?params={}&lang=PHP&tab=DEMO

    注意要选对版本,跟上面composer下载的资源包的版本要一致。

    下面是我整理的代码,sdk的下载方法使用的是上面先下载到本地再放入项目中的。

    1. //验证姓名、身份证号、银行卡号、手机号是否匹配
    2. function checkBankNoByAli($data){
    3. $rs=array('code'=>0,'msg'=>'','info'=>array());
    4. $ali_realauth_sceneid=''; //认证场景ID
    5. $ali_accesskeyid=''; //accesskeyid
    6. $ali_accesskeysecret=''; //secret
    7. if(!$ali_realauth_sceneid){
    8. $rs['code']=1001;
    9. $rs['msg']='认证场景ID错误';
    10. return $rs;
    11. }
    12. if(!$ali_accesskeyid){
    13. $rs['code']=1001;
    14. $rs['msg']='accesskeyid错误';
    15. return $rs;
    16. }
    17. if(!$ali_accesskeyid){
    18. $rs['code']=1001;
    19. $rs['msg']='accesskeysecret错误';
    20. return $rs;
    21. }
    22. require_once '/sdk/alicloudauth/autoload.php'; //路径需替换为自己项目中的实际路径
    23. $client = createClient($ali_accesskeyid, $ali_accesskeysecret);
    24. $result=json_decode($result,true);
    25. $verifyBankElementRequest = new AlibabaCloud\SDK\Cloudauth\V20200618\Models\VerifyBankElementRequest([
    26. "sceneId" => $ali_realauth_sceneid,
    27. "outerOrderNo" => random(32),
    28. "mode" => "VERIFY_BANK_CARD",
    29. "bankCardNo" => $data['bankno'],
    30. "idNo" => $data['cardno'],
    31. "idName" => $data['realname'],
    32. "mobile" => $data['mobile']
    33. ]);
    34. $runtime = new AlibabaCloud\Tea\Utils\Utils\RuntimeOptions([]);
    35. try {
    36. $result = $client->verifyBankElementWithOptions($verifyBankElementRequest, $runtime);
    37. $result=json_encode($result);
    38. $result=json_decode($result,true);
    39. $code=$result['body']['code'];
    40. //$message=$result['body']['message'];
    41. if($code !=200){
    42. $rs['code']=1003;
    43. $rs['msg']='验证失败';
    44. return $rs;
    45. }
    46. $resultObject=$result['body']['resultObject'];
    47. if(isset($resultObject['passed'])){
    48. $return_status=$resultObject['passed'];
    49. if($return_status !='T'){
    50. $rs['code']=1004;
    51. $rs['msg']='验证失败';
    52. return $rs;
    53. }
    54. }
    55. $return_code=$resultObject['subCode'];
    56. if($return_code !=200){
    57. $rs['code']=1005;
    58. $rs['msg']='验证失败';
    59. return $rs;
    60. }
    61. }
    62. catch (Exception $error) {
    63. if (!($error instanceof AlibabaCloud\Tea\Exception\TeaError)) {
    64. $error = new AlibabaCloud\Tea\Exception\TeaError([], $error->getMessage(), $error->getCode(), $error);
    65. }
    66. // 如有需要,请打印 error
    67. // Utils::assertAsString($error->message);
    68. $rs['code']=1006;
    69. $rs['msg']=$error->message;
    70. return $rs;
    71. }
    72. }
    73. //阿里云证件号配置生成
    74. function createClient($accessKeyId, $accessKeySecret){
    75. $config = new Darabonba\OpenApi\Models\Config([
    76. // 您的 AccessKey ID
    77. "accessKeyId" => $accessKeyId,
    78. // 您的 AccessKey Secret
    79. "accessKeySecret" => $accessKeySecret
    80. ]);
    81. // 访问的域名
    82. $config->endpoint = "cloudauth.aliyuncs.com";
    83. return new AlibabaCloud\SDK\Cloudauth\V20200618\Cloudauth($config);
    84. }
    85. //生成随机数
    86. function random($length = 6 , $numeric = 0) {
    87. PHP_VERSION < '4.2.0' && mt_srand((double)microtime() * 1000000);
    88. if($numeric) {
    89. $hash = sprintf('%0'.$length.'d', mt_rand(0, pow(10, $length) - 1));
    90. } else {
    91. $hash = '';
    92. $chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghjkmnpqrstuvwxyz';
    93. $max = strlen($chars) - 1;
    94. for($i = 0; $i < $length; $i++) {
    95. $hash .= $chars[mt_rand(0, $max)];
    96. }
    97. }
    98. return $hash;
    99. }
    100. //调用方法
    101. public function test(){
    102. $check_data=array(
    103. 'bankno' =>'', //银行卡号
    104. 'realname' =>'', //姓名
    105. 'cardno' =>'', //身份证号
    106. 'mobile' =>'' //手机号
    107. );
    108. $result=checkBankNoByAli($check_data);
    109. if($result['code']!=0){
    110. return $result;
    111. }else{
    112. return array(
    113. 'code'=>0,
    114. 'msg'=>'验证成功',
    115. 'info'=>array()
    116. );
    117. }
    118. }

     注意一点:24小时内重复查询相同信息超过10次,会被锁定12小时,测试的时候控制好请求次数。

  • 相关阅读:
    【电源专题】开关模式电源电流检测——电流检测方法
    基于计算机视觉的坑洼道路检测和识别-MathorCup A(深度学习版本)
    37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
    Methoxy-PEG-PCL,Methoxy-PEG-Poly(ε-caprolactone)可以作为制备纳米颗粒的重要原料
    粗俗解释C# 8.0+的变量后面有?问号是什么意思?
    基于springboot的支教系统-计算机毕业设计源码
    MySQL基础命令高级操作
    Apache Derby的使用
    2022年11月7日--11月13日(ue4 tf视频教程+cesium for ue源码抄写)
    NLP实践——以T5模型为例训练seq2seq模型
  • 原文地址:https://blog.csdn.net/salestina/article/details/126101086