Skip to main content
CheckTown
Валидаторы

Валидатор кредитных карт: Как алгоритм Луна обнаруживает недействительные номера

Опубликовано 6 мин чтения
В этой статье

Что такое валидация кредитной карты?

Валидация кредитной карты — это процесс проверки структурной корректности номера карты перед попыткой совершения транзакции. Это включает проверку формата номера, применение алгоритма контрольной суммы Луна и определение платёжной сети (Visa, Mastercard, Amex и т.д.) по первым цифрам.

Валидация — это не то же самое, что авторизация. Валидный номер карты означает, что формат и контрольная сумма верны — это не подтверждает, что карта существует, имеет средства или принадлежит лицу, которое её использует. Реальная авторизация требует обращения к эмитенту карты через платёжную сеть.

Как работает алгоритм Луна

Алгоритм Луна (также называемый алгоритмом модуло 10) — это простая формула контрольной суммы, изобретённая Гансом Петером Луном в 1954 году. Он обнаруживает случайные ошибки в номерах карт — переставленные цифры, ошибки в одной цифре и большинство распространённых опечаток. Вот как он работает пошагово.

  • Начиная с крайней правой цифры (контрольная цифра), удвойте каждую вторую цифру, двигаясь влево
  • Если удвоение даёт число больше 9, вычтите 9 из результата (например, 8 x 2 = 16, затем 16 - 9 = 7)
  • Сложите все цифры — как удвоенные/скорректированные, так и неизменённые
  • Если сумма делится на 10 (модуло 10 равно 0), номер валиден по алгоритму Луна

Например, номер 4532015112830366: после применения алгоритма сумма цифр равна 40, что делится на 10, поэтому он проходит проверку Луна. Этот алгоритм обнаруживает около 95% ошибок в одной цифре и все ошибки транспозиции соседних цифр.

Попробуйте бесплатно — без регистрации

Проверить номер кредитной карты →

Определение типа карты по BIN

Банковский идентификационный номер (BIN) — первые 6-8 цифр номера карты — определяет платёжную сеть и банк-эмитент. Каждая сеть имеет отдельные префиксы и требования к длине.

  • Visa — начинается с 4, обычно 16 цифр (некоторые старые карты имеют 13)
  • Mastercard — начинается с 51-55 или 2221-2720, всегда 16 цифр
  • American Express — начинается с 34 или 37, всегда 15 цифр
  • Discover — начинается с 6011, 65 или 644-649, всегда 16 цифр

Распространённые случаи использования

Клиентская валидация кредитных карт служит нескольким практическим целям в веб-приложениях и бизнес-процессах.

  • Оформление покупки в интернет-магазине — валидация формата карты перед отправкой в платёжный процессор для снижения числа неудачных транзакций и API-запросов
  • UX платёжной формы — отображение иконки типа карты (Visa, Mastercard и т.д.) в реальном времени при вводе и мгновенная подсветка ошибок
  • Предотвращение мошенничества — перехват явно невалидных номеров до того, как они достигнут вашего платёжного шлюза, снижая комиссии за обработку отклонённых транзакций
  • Генерация тестовых карт — разработчики используют тестовые номера, валидные по Луну (например, 4111 1111 1111 1111 для Visa), для тестирования платёжных потоков без реальных карт

Вопросы безопасности

Валидация кредитной карты — это проверка формата, а не мера безопасности. Понимание её ограничений критически важно для построения безопасных платёжных систем.

  • Клиентская валидация обнаруживает опечатки, но не может обнаружить украденные или аннулированные карты — всегда обрабатывайте через платёжный шлюз, соответствующий PCI DSS
  • Никогда не храните полные номера карт — используйте сервисы токенизации от вашего платёжного провайдера (Stripe, Braintree, Adyen) для замены данных карты безопасными токенами
  • Соответствие PCI DSS требует, чтобы данные держателя карты никогда не попадали на ваши серверы — используйте размещённые платёжные поля или потоки оплаты с перенаправлением

Часто задаваемые вопросы

Может ли алгоритм Луна давать ложноположительные результаты?

Да. Алгоритм Луна проверяет только контрольную сумму — он подтверждает, что номер математически согласован, а не то, что реальная карта с этим номером существует. Можно сгенерировать бесконечное количество валидных по Луну номеров, которые не соответствуют ни одной выпущенной карте. Поэтому валидация по Луну всегда должна сопровождаться фактической авторизацией через платёжную сеть.

Подчиняются ли номера виртуальных карт тем же правилам?

Да. Номера виртуальных карт, генерируемые банками и сервисами типа Apple Pay, Google Pay или Privacy.com, следуют тем же правилам префикса BIN и контрольной суммы Луна, что и физические карты. Это валидные номера карт, выпущенные теми же сетями — единственное отличие в том, что они могут быть временными, одноразовыми или ограниченными конкретными продавцами.

Какие тестовые номера карт можно использовать для разработки?

Платёжные процессоры предоставляют конкретные тестовые номера: Visa 4111 1111 1111 1111, Mastercard 5500 0000 0000 0004, Amex 3782 822463 10005, Discover 6011 1111 1111 1117. Они проходят валидацию Луна и распознаются тестовыми/sandbox-средами. Никогда не используйте реальные номера карт для тестирования — даже при разработке используйте только официальные тестовые номера от вашего платёжного провайдера.

Похожие инструменты