【工具】支付寶免費卡校驗接口調用及常用銀行簡稱整理

場景

之前做添加大陸銀行卡時有接入過第三方的銀行卡三要素認證方法(三要素:姓名、身份證號、銀行卡號),這可以校驗用戶綁定的銀行卡是否是與證件號一致的卡。但在此之前,還需要做一個卡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接口返回的銀行簡稱
工商銀行 620302 ICBC
農業銀行 622840 ABC
中國銀行 621215 BOC
建設銀行 622700 CCB
交通銀行 622258 COMM
民生銀行 622615 CMBC
興業銀行 622909 CIB
光大銀行 622660 CEB
平安銀行 622989 SPABANK
中信銀行 621771 CITIC
北京銀行 621030 BJBANK
廣發銀行 622580 GDB
招商銀行 690755 CMB
郵儲銀行 62215049 PSBC
浦發銀行 622500 SPDB
華夏銀行 622630 HXBANK
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章