【工具】支付宝免费卡校验接口调用及常用银行简称整理

场景

之前做添加大陆银行卡时有接入过第三方的银行卡三要素认证方法(三要素:姓名、身份证号、银行卡号),这可以校验用户绑定的银行卡是否是与证件号一致的卡。但在此之前,还需要做一个卡bin校验,以便区分银行卡的性质,比如是储蓄卡还是信用卡、是哪个银行的卡, 不巧的是第三方没有提供卡bin方法,所以直接用支付宝免费的卡bin校验方法。

<?php
/**
 *
 *
 * User: 原子酱
 * Date: 2019/9/17
 * Time: 14:27
 */

use GuzzleHttp\Client;

require_once '../vendor/autoload.php';

// 银行卡号前缀
$head = [
//    '625810',
    '620302',
    '622840',
    '621215',
    '622700',
    '622258',
    '622615',
    '622909',
    '622660',
    '622989',
    '621771',
    '621030',
    '622580',
    '690755',
    '62215049',
    '622500',
    '622630',
];

$host = 'https://ccdcapi.alipay.com/validateAndCacheCardInfo.json';
$client = new Client();

$content = [];
foreach ($head as $value) {
    $lenth = 16;

    do {
        $bankNo = str_pad($value, $lenth, 0, STR_PAD_RIGHT);
        $getUrl = $host . "?cardBinCheck=true&cardNo=$bankNo";
        $response = $client->request('GET', $getUrl);
        $response = $response->getBody()->getContents();
        $result = json_decode(trim(strval($response)), true);
        $lenth++;
    } while (!isset($result['bank']) || $lenth > 20);

    $content[] = [
        'head'  => $value,
        'abbr'  => $result['bank'],
        'lenth' => $lenth,
    ];
}

var_dump($content);

以上方法是为了得出常用银行简称对应关系,因为大部分银行卡号都有自己的规律,且为了用户信息安全起见,在调用卡bin校验接口时不需要把卡号传过去,补0也是可以得出结果。我在项目中是直接截掉10位再补0的:

substr_replace($bankNo, ‘0000000000’, -10)

接口调用时间大概是0.1s~0.2s之间,还是比较快的。

银行名称各银行开头卡bin接口返回的银行简称
工商银行620302ICBC
农业银行622840ABC
中国银行621215BOC
建设银行622700CCB
交通银行622258COMM
民生银行622615CMBC
兴业银行622909CIB
光大银行622660CEB
平安银行622989SPABANK
中信银行621771CITIC
北京银行621030BJBANK
广发银行622580GDB
招商银行690755CMB
邮储银行62215049PSBC
浦发银行622500SPDB
华夏银行622630HXBANK
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值