Контрольная цифра проверяет номер ещё до обращения в банк
В номере банковской карты есть встроенная проверка на случай обычной ошибки при наборе. Её выполняет алгоритм Луна — короткий расчёт, который можно провести прямо на устройстве, где вводят данные. Для него не нужны ни связь с банком, ни проверка баланса: достаточно цифр номера.
Счёт ведут с конца номера. Часть цифр удваивают; если результат больше девяти, из него вычитают девять. Затем все полученные значения складывают. При корректно составленном номере итог делится на десять без остатка. В зависимости от положения цифры при удвоении меняется и её вклад в сумму — поэтому простая замена одной цифры обычно нарушает проверку.
Что именно ловит эта проверка
Луна хорошо подходит для обнаружения распространённых опечаток: например, когда человек случайно нажал соседнюю клавишу или пропустил цифру. Она также замечает многие случаи, когда две соседние цифры поменяли местами. Но это не доказательство, что номер настоящий: некоторые ошибки могут пройти проверку, а корректная контрольная сумма ничего не говорит о сроке действия карты, её владельце или доступных средствах.
Поэтому алгоритм работает как первый фильтр, а не как одобрение платежа. Если сумма не сходится, форму можно сразу попросить перепроверить — ещё до отправки запроса на авторизацию, то есть до обращения к банку за подтверждением оплаты. Так меньше заведомо ошибочных попыток и меньше лишних шагов для покупателя.
Почему простой расчёт полезен магазинам
Проверка занимает мгновение и обходится системе почти бесплатно: её можно выполнить локально, пока пользователь заполняет форму. Банковская проверка нужна позже и решает другие задачи — например, подтверждает, что платёж допустим. Разделение этих этапов позволяет не тратить запрос к платёжной системе на номер, в котором уже обнаружилась ошибка набора.






