首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 依銀行卡號識別發卡行:BIN 表查詢完整實作

     編輯:PHP 相關知識

前言:銀行卡 BIN 碼識別原理

銀行卡號前 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); // 輸出:中國農業銀行

bankList.php 資料結構說明

對照表為鍵值陣列,鍵為 BIN 前綴(字串),值為銀行名稱:

// bankList.php 範例
return [
    '622848' => '中國農業銀行',
    '622700' => '中國工商銀行',
    '622202' => '中國工商銀行',
    '62284815' => '中國農業銀行(信用卡)', // 8碼更精確
    // ... 更多紀錄
];

資料來源與維護建議

  • 官方來源:中國銀聯發布的《銀行卡 BIN 表》、各銀行公開文件。
  • 第三方整理:GitHub 專案(如 binlist-data)、支付網關文件。
  • 定期更新:新銀行開業、卡產品上線會新增 BIN,建議每季同步一次。
  • 儲存優化:資料量大時可匯入 Redis 或資料庫,以 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;
}

安全與合規提醒

  • 不記錄完整卡號:日誌僅存前 6 碼 + 後 4 碼(如 622848******7309)。
  • 傳輸加密:前端傳卡號至後端必須走 HTTPS。
  • 合規審查:涉及個人金融資訊,需符合 PCI-DSS、個資法等規範。

結語

BIN 表查詢是支付系統基礎組件。掌握多層級前綴匹配、資料維護策略與安全規範,即可快速建立穩定可靠的銀行識別服務,為風控、用戶體驗提供有力支撐。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved