Меню

Тестовые номера карт Visa и Mastercard: диапазоны и различия

Как выбрать тестовые номера карт Visa и Mastercard и других систем: опубликованные диапазоны, разная длина и особенности, которые влияют на форму оплаты.

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

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

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

Что действительно отличает платёжные системы друг от друга?

Снаружи все карты выглядят одинаково: пластик, номер, срок, код проверки. Для формы оплаты различий всего четыре, и именно они определяют объём работы.

Различие На что влияет в форме
Начало номера Определение системы и показ её значка
Длина номера Проверка полноты ввода и разбивка на группы
Расположение кода проверки Текст подсказки в поле и число цифр
Возможности подтверждения Сценарий дополнительной проверки личности

Всё прочее — маркетинг и внутренние правила конкретного банка. Форме эти детали не нужны, и не стоит строить проверки на них.

Где взять опубликованные диапазоны номеров?

Платёжные системы не скрывают, какие диапазоны им выделены. Это публичная схема нумерации, и на неё можно опираться при подготовке данных.

  • Visa — номера начинаются с четвёрки.
  • Mastercard — с пар от 51 до 55 и с четырёхзначного блока от 2221 до 2720.
  • American Express — с 34 или 37, длина пятнадцать цифр, код проверки из четырёх цифр на лицевой стороне.
  • Discover — с 6011, с 65 и из нескольких узких блоков.
  • JCB — из блока от 3528 до 3589.
  • Diners Club — с 300–305, с 36 и с 38–39.
  • UnionPay — с 62.
  • Maestro — с 50 и из диапазона от 56 до 69.

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

Почему длина номера различается между системами

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

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

Как собрать тестовый набор по системам

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

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

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

Бывают ли карты, которые не подходят ни одной системе

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

Проверка диапазона нужна именно для этого: она отделяет «номер похож на карту» от «номер относится к известной платёжной системе». Сообщение в этом случае должно быть отдельным, иначе покупатель с редкой системой будет снова и снова перепроверять цифры, которые набраны верно.

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

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

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

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

Отдельно проверьте взаимодействие правил. Частая ошибка — когда определение системы по началу номера выполняется только для уже прошедших проверку длины значений. Для пятнадцатизначного номера, который относится к системе с пятнадцатизначными номерами, такое сочетание даёт отказ на ровном месте. Порядок должен быть один и тот же для всех: определить систему по началу, затем сверить длину именно для неё.

И ещё одна деталь, которая нравится не всем: значок платёжной системы рядом с полем лучше показывать после того, как начало номера распознано уверенно. Слишком раннее угадывание раздражает пользователя, когда картинка скачет на каждом введённом символе.

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

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

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

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