1

標準の小切手パラメーターに基づいてクレジットカード番号を設定しようとしていますが、他のカード検証スクリプトの規則に適合しない開始番号を持つ英国のカード(Maestro / Visa Debit / Barclaycard Connect)がたくさんあります。

つまり、Maestro(Switch)カードはまだ存在し、4から始まります。オンラインで多くの正規表現を使用すると、Visaクレジットカードが選択されます。

これらの登録された開始コードが保存されているリソースを知っている人はいますか?

Ta

英国のクレジットカード検証テーブル(BINテーブル)をお探しの方

http://www.barclaycard.co.uk/business/documents/pdfs/bin_rules.pdf

4

4 に答える 4

1

クレジットカードのフォーマットと検証に関するルールは次のとおりです。

注:スイッチカードは実際にはクレジットカードではなくデビットカードであるため、検証ルールが異なります。実際、スイッチカードには通常、アカウント番号が埋め込まれています。これにはおそらくチェックサムアルゴリズムがありますが、私はまだ見ていません。

于 2009-08-27T15:03:54.933 に答える
1

カード番号を検証するために正規表現に依存することはできません。範囲の長さと範囲からタイプへのマッピングを含む最近のカード検証テーブルが必要です。支払いゲートウェイプロバイダーは、最新の検証テーブルを提供できる必要があります。

多くの場合、Is-this-number-make-upタイプの検証については、Luhnに依存できますが、ゲートウェイの責任テストに合格するには、ユーザーが番号の書き込みカードタイプを入力したこと、および開始したかどうかを検証する必要があります。日付はプロバイダーによって要求され、入力する必要があります。

C#でのLuhnの例を次に示します。

public static bool IsLuhnValid(string cardNumber) {
    if (string.IsNullOrEmpty(cardNumber))
        return false;
    Int64 cardNumberAsBigInt;
    if (!Int64.TryParse(cardNumber, out cardNumberAsBigInt) || (cardNumberAsBigInt == 0))
        return false;
    int indicator = 1;
    int firstNumberToAdd = 0;
    int secondNumberToAdd = 0;
    for (int i = cardNumber.Length - 1; i >= 0; i--) {
        int currentNumber = int.Parse(cardNumber[i].ToString());
        if (indicator == 1) {
            firstNumberToAdd += currentNumber;
            indicator = 0;
        }
        else {
            int doubleCurrentNumber = currentNumber + currentNumber;
            if (doubleCurrentNumber >= 10) {
                int num1 = Convert.ToInt32(doubleCurrentNumber.ToString().Substring(0, 1));
                int num2 = Convert.ToInt32(doubleCurrentNumber.ToString().Substring(1, 1));
                secondNumberToAdd += num1 + num2;
            }
            else {
                secondNumberToAdd += doubleCurrentNumber;
            }
            indicator = 1;
        }
    }
    return ((firstNumberToAdd + secondNumberToAdd) % 10 == 0);
}
于 2009-08-27T15:05:36.163 に答える
0

登録された開始コードについては知りませんが、cc検証に正常に機能するスクリプト(そのjavascript)を入手しました:番号でクレジットカードの種類を決定しますか?

これは徹底的にテストされており、非常に多くのトランザクションで使用されるため、すべての特殊なケースを処理する必要があります(正規表現に変更した場合、共有できますか?)

于 2009-08-27T15:03:08.367 に答える
0

WikiのBIN(銀行識別番号)リソース

于 2009-08-27T15:06:58.313 に答える