Определение типа банковской карты по ее номеру
Определение типа банковской карты по ее номеру
Полезная информация в дополнение к опубликованной ранее статье о проверке корректности номера банковской карты. Помимо прочих данных, в номере карты закодирован ее тип, например, Visa, MasterCard или UnionPay. В интернетах есть информация о кодах IIN (Issuer Identification Number), надо только переложить ее на нужный вам язык программирования.
На PHP у меня получилась вот такая функция. Регулярки для проверки позаимствованы из проекта PHP Banks DB, за что огромная благодарность его автору.
Code (PHP) : Убрать нумерацию
- function detect_card_type($card_num) {
- // Почистить номер карты от нецифровых символов
- $card_num=preg_replace('/[^0-9]/','',$card_num);
- $card_prefixes = array(
- 'Electron' => '/^(4026|417500|4405|4508|4844|4913|4917)/',
- 'InterPayment' => '/^636/',
- 'China UnionPay' => '/^(62|88)/',
- 'Discover Card' => '/^6(?:011|4|5)/',
- 'Maestro' => '/^(50|5[6-9]|6)/',
- 'Visa' => '/^4/',
- 'Mastercard' => '/^(5[1-5]|(?:222[1-9]|22[3-9][0-9]|'.
- '2[3-6][0-9]{2}|27[01][0-9]|2720))/',
- 'American Express' => '/^3[47]/',
- 'Diners Club' => '/^3(?:0([0-5]|95)|[689])/',
- 'JCB' => '/^(?:2131|1800|(?:352[89]|35[3-8][0-9]))/',
- 'Mir' => '/^220[0-4]/',
- );
- foreach ($card_prefixes as $type => $regexp) {
- if (preg_match($regexp, $card_num)) {
- return $type;
- }
- }
- // Тип карты не определен
- return 'Unknown';
- }
Code (PHP) : Убрать нумерацию
- // Mastercard
- echo detect_card_type('5477-5850-7511-2731');
- // Visa
- echo detect_card_type('4226080638497216');
Просмотров: 2254 | Комментариев: 0
Метки: PHP
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Комментариeв нет
Добавить комментарий
Заполните форму для добавления комментария