Ресурс проверки кредитной карты для британского продавца - PullRequest
1 голос
/ 27 августа 2009

Я пытаюсь установить номера кредитных карт на основе стандартных параметров проверки, но я нахожу, что у многих британских карт (Maestro / Visa Debit / Barclaycard Connect) есть стартовые номера, которые не соответствуют регулярным выражениям других сценариев проверки карт;

I.e Карты Maestro (Switch) все еще существуют и начинаются с 4, при использовании большого количества регулярных выражений в Интернете это приведет к выбору кредитной карты Visa.

Кто-нибудь знает ресурс, где хранятся эти зарегистрированные стартовые коды?

Та

Любой, кто ищет таблицу проверки кредитных карт Великобритании (BIN TABLE)

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

Ответы [ 4 ]

1 голос
/ 27 августа 2009

Вот правила, касающиеся форматирования и проверки кредитных карт .

Примечание: Карты-коммутаторы на самом деле являются дебетовыми, а не кредитными картами, поэтому имеют разные правила проверки. На самом деле в карточках Switch обычно указывается номер счета. Вероятно, для этого есть алгоритм контрольной суммы, но я его еще не видел.

1 голос
/ 27 августа 2009

Вы не можете полагаться на регулярное выражение для проверки номеров карт. Вам нужна последняя таблица проверки карты, которая включает длины для диапазонов и сопоставления диапазонов для типов. Ваш провайдер платежного шлюза должен быть в состоянии предоставить вам обновленную таблицу проверки.

Вы часто можете полагаться на Luhn для проверки типа, составленного по этому номеру, но для того, чтобы пройти тесты ответственности вашего шлюза, вам необходимо подтвердить, что пользователь ввел тип карты записи для номера и если провайдер требует дату начала, она должна быть указана и т. д.

Вот пример Luhn в C #:

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);
}
0 голосов
/ 27 августа 2009

BIN (идентификационный номер банка) ресурсов на Wiki

0 голосов
/ 27 августа 2009

Я не знаю о зарегистрированных стартовых кодах, но у меня есть скрипт, который отлично работает для проверки cc (его javascript): Определить тип кредитной карты по номеру?

это тщательно протестировано и используется с довольно большим количеством транзакций, поэтому он должен позаботиться обо всех особых случаях (если вы измените его на регулярное выражение, вы можете поделиться им?)

...