Blog. Just Blog

Определение типа банковской карты по ее номеру

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Web-мастеру и не только | Автор: ManHunter
Определение типа банковской карты по ее номеру
Определение типа банковской карты по ее номеру

Полезная информация в дополнение к опубликованной ранее статье о проверке корректности номера банковской карты. Помимо прочих данных, в номере карты закодирован ее тип, например, Visa, MasterCard или UnionPay. В интернетах есть информация о кодах IIN (Issuer Identification Number), надо только переложить ее на нужный вам язык программирования.

На PHP у меня получилась вот такая функция. Регулярки для проверки позаимствованы из проекта PHP Banks DB, за что огромная благодарность его автору.
  1. function detect_card_type($card_num) {
  2.     // Почистить номер карты от нецифровых символов
  3.     $card_num=preg_replace('/[^0-9]/','',$card_num);
  4.     $card_prefixes = array(
  5.         'Electron' => '/^(4026|417500|4405|4508|4844|4913|4917)/',
  6.         'InterPayment' => '/^636/',
  7.         'China UnionPay' => '/^(62|88)/',
  8.         'Discover Card' => '/^6(?:011|4|5)/',
  9.         'Maestro' => '/^(50|5[6-9]|6)/',
  10.         'Visa' => '/^4/',
  11.         'Mastercard' => '/^(5[1-5]|(?:222[1-9]|22[3-9][0-9]|'.
  12.                         '2[3-6][0-9]{2}|27[01][0-9]|2720))/',
  13.         'American Express' => '/^3[47]/',
  14.         'Diners Club' => '/^3(?:0([0-5]|95)|[689])/',
  15.         'JCB' => '/^(?:2131|1800|(?:352[89]|35[3-8][0-9]))/',
  16.         'Mir' => '/^220[0-4]/',
  17.     );
  18.     foreach ($card_prefixes as $type => $regexp) {
  19.         if (preg_match($regexp$card_num)) {
  20.             return $type;
  21.         }
  22.     }
  23.     // Тип карты не определен
  24.     return 'Unknown';
  25. }
На входе передаем номер карты, на выходе получаем ее тип или "Unknown", если тип карты определить не удалось. Примеры использования:
  1. // Mastercard
  2. echo detect_card_type('5477-5850-7511-2731');
  3. // Visa
  4. echo detect_card_type('4226080638497216');
Поскольку основной функционал основан на регулярках, код легко портировать практически на любой язык программирования, который их поддерживает.

Поделиться ссылкой ВКонтакте
Просмотров: 2096 | Комментариев: 0

Метки: PHP
Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
Комментариeв нет

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.08 сек. / MySQL: 2 (0.0063 сек.) / Память: 4.5 Mb
Наверх