銀行卡號前 4-8 碼(BIN/IIN)可唯一識別發卡機構。透過建立 BIN 對照表,即可快速判斷卡片所屬銀行,廣泛應用於支付驗證、風控分析、表單自動填充等場景。
採用由長到短(8→6→5→4 碼)遞減匹配,確保優先命中最精確的銀行資訊。
header('Content-Type: text/html; charset=utf-8');
require_once 'bankList.php'; // 銀行 BIN 對照表:['622848' => '中國農業銀行', ...]
/**
* 依卡號查詢發卡銀行
* @param string $card 銀行卡號
* @param array $bankList BIN 對照表
* @return void 直接輸出結果
*/
function bankInfo($card, $bankList) {
// 依序嘗試 8,6,5,4 碼前綴
foreach ([8, 6, 5, 4] as $len) {
$prefix = substr($card, 0, $len);
if (isset($bankList[$prefix])) {
echo $bankList[$prefix];
return;
}
}
echo '該卡號信息暫未錄入';
}
// 測試
bankInfo('6228481552887309119', $bankList); // 輸出:中國農業銀行
對照表為鍵值陣列,鍵為 BIN 前綴(字串),值為銀行名稱:
// bankList.php 範例
return [
'622848' => '中國農業銀行',
'622700' => '中國工商銀行',
'622202' => '中國工商銀行',
'62284815' => '中國農業銀行(信用卡)', // 8碼更精確
// ... 更多紀錄
];
binlist-data)、支付網關文件。prefix 為索引查詢。擴充對照表值為陣列,可同時獲取銀行、卡等級、卡類型(借記/貸記)、幣別等:
$bankList = [
'622848' => ['bank' => '中國農業銀行', 'type' => 'debit', 'level' => '普卡'],
'62284815' => ['bank' => '中國農業銀行', 'type' => 'credit', 'level' => '金卡'],
];
function getCardDetail($card, $bankList) {
foreach ([8,6,5,4] as $len) {
$prefix = substr($card, 0, $len);
if (isset($bankList[$prefix])) return $bankList[$prefix];
}
return null;
}
622848******7309)。BIN 表查詢是支付系統基礎組件。掌握多層級前綴匹配、資料維護策略與安全規範,即可快速建立穩定可靠的銀行識別服務,為風控、用戶體驗提供有力支撐。