Меню

Тестовые номера кредитных карт: что это и как их применять

Тестовые номера кредитных карт проходят проверку формата, но не выпущены ни одним банком. Разбираем, откуда они берутся и как не превратить их в реальный платёж.

Опубликовано

  • тестовые данные
  • платежи

Платёжная форма охотно принимает последовательность цифр, которую не выпускал ни один банк, — и это не ошибка валидации, а сама суть тестовых номеров кредитных карт. Так называют строки цифр, которые совпадают по формату с настоящей картой: подходящая длина, узнаваемое начало, верная последняя цифра. За ними не стоит ни счёт, ни держатель, поэтому их можно вставлять в формы на стенде, в автотесты и демонстрации без риска потратить чужие деньги. Ниже — откуда такие номера берутся, что именно они доказывают и как не превратить их в настоящий платёж.

Зачем вообще нужны ненастоящие номера?

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

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

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

Что именно делает номер «похожим на настоящий»

Номер карты — не случайный набор цифр, а три склеенные части.

Часть Что содержит Кто отвечает
Идентификатор эмитента Первые цифры, по которым определяется платёжная система и банк Платёжная система
Номер счёта Промежуточные цифры внутри выделенного диапазона Банк-эмитент
Контрольная цифра Последняя цифра, вычисленная из всех предыдущих Правило нумерации

Длина при этом не фиксирована: стандарт нумерации допускает до девятнадцати цифр, а на практике встречаются номера от тринадцати до шестнадцати цифр. Шестнадцать — самый привычный вариант, но не единственный законный. Именно поэтому проверка длины и проверка контрольной цифры — две разные операции, и путать их не стоит: первая отвечает за правдоподобность формы записи, вторая лишь за отсутствие опечатки.

Контрольная цифра доказывает, что карта существует?

Нет, и это главное недоразумение вокруг темы. Контрольная цифра считается по алгоритму Луна — по простому правилу деления на десять, открытому ещё в пятидесятых годах прошлого века. Оно ловит одиночную опечатку и большинство перестановок соседних цифр, но ничего не знает о том, существует ли счёт.

Арифметика полностью открыта и обратима: для любого начала номер можно дополнить правильной последней цифрой за доли секунды, и генератор делает именно это. Значит, «проверка пройдена» — утверждение о форме записи, а не о карте. Чтобы узнать, есть ли за номером действующий счёт, нужен запрос к банку-эмитенту — то самое действие, которого в тестовом контуре как раз и не должно быть.

Генератор на этом сайте устроен честно: он выдаёт структурно корректные номера, которые никогда не выпускались ни одним банком и не принадлежат никому. Такой номер нельзя привязать к счёту и нельзя провести по нему платёж.

Где брать тестовые номера

Источников ровно три, и они неравноценны.

  • Публичные тестовые списки поставщика платежей. Подходят, если вы работаете именно с этим поставщиком в режиме песочницы: они дополнительно управляют результатом операции.
  • Собственные сгенерированные номера. Нужны, когда важна не реакция конкретного сервиса, а поведение вашей формы: маска ввода, подсказка об ошибке, подсветка неизвестного начала.
  • Номера из чужих статей и форумов. Худший вариант: неизвестно, кем и когда они проверялись, а часть из них — просто испорченные копии настоящих реквизитов.

Если номер нужен для презентации, демонстрации продукта или наполнения тестовой базы, берите сгенерированные значения: они не привязаны к людям и не требуют никаких соглашений о неразглашении.

Пять ошибок, которые повторяются постоянно

  1. Отправка сгенерированного номера на рабочий шлюз. В песочнице это вернёт отказ, а в рабочем режиме вы попытались совершить операцию.
  2. Проверка только удачного случая. Дорогие дефекты живут в отказах, повторных попытках и наполовину заполненных формах, а не в единственном работающем номере.
  3. Один номер, вшитый во все тесты. Потом никто не понимает, почему после смены правил проверки сразу посыпалась половина набора.
  4. Ставка только на проверку на стороне браузера. Так искажённые данные спокойно доезжают до базы.
  5. Тестовый ключ в рабочей конфигурации. Обнаруживает его покупатель, а не автоматическая проверка.

Что важно разработчику

Тестовые данные должны быть воспроизводимыми, и это требование к процессу, а не к инструменту. Хороший тест опирается на заранее известный вход и заранее известный ожидаемый результат. Если каждый запуск подставляет свежее случайное значение, отладка падения утром в пятницу затягивается до вечера: непонятно, дело в логике или в выпавшем наборе цифр.

Практический приём простой. Выберите по одному фиксированному номеру на каждый сценарий, сохраните его рядом с тестом и подпишите, что именно он проверяет: длину, неизвестное начало, несоответствие контрольной цифры. Массовая генерация нужна там, где вы проверяете сам алгоритм или устойчивость интерфейса, а не конкретный результат. И отдельно зафиксируйте в тестах те инварианты, на которые вы опираетесь: длина соответствует заявленной платёжной системе, начало попадает в ожидаемый диапазон, контрольная цифра сходится. Тогда замена источника данных не сломает проверки незаметно.

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

Что делать дальше

Начните с клиентской формы: подставьте номер с неправильной длиной, затем с незнакомым началом и, наконец, с испорченной последней цифрой. Форма должна трижды сообщить о проблеме и ни разу не отправить запрос на сервер. Готовые значения для этой проверки удобно получить в генераторе, а затем сверить поведение системы с чек-листом платёжной формы и требованиями к данным в тестовом контуре.

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

Читать дальше

Статьи: Генератор фальшивых номеров банковских карт