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-середовищами. Ніколи не використовуйте реальні номери карток для тестування — навіть при розробці використовуйте лише офіційні тестові номери від вашого платіжного провайдера.

Пов'язані інструменти