Все статьи

Алгоритм Луна: как номер карты проверяют на корректность

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

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

Алгоритм проходит по цифрам номера справа налево, удваивает каждую вторую цифру, а если результат больше 9 — вычитает из него 9. Сумма всех получившихся цифр должна делиться на 10 без остатка, если номер введён верно.

«Мир»: собственная платёжная система, а не Visa или Mastercard

С 2015 года в России действует национальная платёжная система «Мир», созданная после того, как ряд иностранных карт временно перестали обслуживаться на территории страны из-за санкций. Карты «Мир» так же проходят проверку по алгоритму Луна — сам алгоритм не привязан к конкретной платёжной системе, — но их BIN (первые цифры номера) отличаются от диапазонов Visa и Mastercard, поэтому по одному только префиксу можно понять, что карта выпущена именно этой системой.

Почему валидность по Луну не означает, что карта существует

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

Зачем это нужно

  • Проверить корректность номера карты на клиенте до отправки формы на сервер.
  • Быстро отсеять опечатку при ручном вводе длинного номера.
  • Понять границы того, что именно проверяет алгоритм Луна, а что нет.

Определение платёжной системы по номеру карты (BIN)

Первые несколько цифр номера — это BIN (Bank Identification Number), по которому можно определить платёжную систему ещё до полной проверки Луна. Номера Visa начинаются с 4, Mastercard — с диапазона 51–55 или 2221–2720, American Express — с 34 или 37, а карты «Мир» используют собственный диапазон BIN. Именно по этому префиксу формы оплаты автоматически показывают иконку нужной платёжной системы во время ввода номера.

Попробовать инструмент