Professor
Professional
- Messages
- 1,477
- Reaction score
- 1,539
- Points
- 113
ВВЕДЕНИЕ: Почему проверка карты — это искусство
В мире платёжных систем проверка карты на валидность — это как прощупывание льда перед тем, как на него ступить. Одно неверное движение — и лёд трескается: карта блокируется, владелец получает уведомление, а вы теряете инструмент, который мог бы пригодиться. Задача проверки карты без её «убивания» — это балансирование на грани, где нужно получить максимум информации, оставив минимум следов.Эта статья — полное руководство по всем методам проверки платёжных карт, которые позволяют узнать о карте всё, не вызывая подозрений. Здесь вы найдёте пошаговые алгоритмы, сравнение методов, разбор типичных ошибок и способы их исправления. Материал носит исключительно образовательный характер и призван помочь специалистам по безопасности, разработчикам и фрод-аналитикам понять, как устроены механизмы валидации платёжных инструментов.
ЧАСТЬ 1. БАЗОВЫЕ МЕТОДЫ ПРОВЕРКИ (БЕЗ ОБРАЩЕНИЯ К ПЛАТЁЖНОЙ СИСТЕМЕ)
Эти методы не оставляют следов, не требуют авторизации и не несут риска для карты. Они работают исключительно с данными, которые вы уже имеете.Глава 1.1. Алгоритм Луна (Luhn Algorithm)
Что это: Простейший и самый безопасный способ проверки — это проверка номера карты по алгоритму Луна. Этот алгоритм проверяет, является ли номер структурно валидным, но не подтверждает, что карта действительно существует и активна.Как работает:
Алгоритм вычисляет контрольную сумму номера карты. Если сумма не совпадает — номер точно невалидный. Почти все номера кредитных карт генерируются с учётом этой проверки.
Пошаговое руководство:
- Возьмите номер карты (от 13 до 19 цифр).
- Удалите все пробелы и дефисы.
- Начиная справа, удвойте каждую вторую цифру. Если результат удвоения больше 9, вычтите 9 (или сложите цифры результата).
- Сложите все полученные цифры.
- Если сумма кратна 10 — номер структурно валиден.
Пример (карта 4532 0123 4567 8901):
- Удваиваем каждую вторую цифру справа: 4, (5×2=10→1), 3, (2×2=4), 0, (1×2=2), 2, (3×2=6), 4, (5×2=10→1), 6, (7×2=14→5), 8, (9×2=18→9), 0, (1×2=2)
- Сумма: 4+1+3+4+0+2+2+6+4+1+6+5+8+9+0+2 = 57
- 57 не кратно 10 → номер невалиден.
Инструменты для проверки:
- Библиотека card-precheck для JavaScript — выполняет проверку локально, без отправки данных на сервер.
- Пакет checkdigit — валидирует номера с правильными алгоритмами, 100% локально, номер карты никогда не покидает ваш сервер.
- Пакет luhncheck для Python.
- Простые скрипты на Go, Python и других языках.
Преимущества:
- Абсолютно безопасно — не оставляет следов
- Мгновенная проверка
- Не требует подключения к интернету
Ограничения:
- Не даёт информации о балансе, статусе карты или её действительности в реальном времени
- Проверяет только структуру, а не существование карты
Ошибки и их исправление:
| Ошибка | Как проявляется | Исправление |
|---|---|---|
| Учёт пробелов и дефисов | Алгоритм выдаёт ошибку | Всегда удаляйте все нецифровые символы перед проверкой |
| Неправильный подсчёт с конца | Сумма не кратна 10, хотя карта валидна | Всегда начинайте удвоение с предпоследней цифры (справа налево) |
| Игнорирование длины номера | Номер из 12 цифр считается валидным | Проверяйте длину: Visa/Mastercard — 16 цифр, Amex — 15, Discover — 16 |
Глава 1.2. Проверка BIN (Bank Identification Number)
Что это: Первые 6–8 цифр карты содержат информацию о банке-эмитенте, типе карты (Visa, Mastercard и т.д.), уровне (Classic, Gold, Platinum) и стране выпуска. Эта проверка не «убивает» карту, так как не требует авторизации.Что можно узнать:
- Банк-эмитент
- Платёжную систему (Visa, Mastercard, Amex, Discover, Diners Club)
- Страну выпуска
- Тип карты (Credit/Debit)
- Уровень карты (Classic, Gold, Platinum, etc.)
Пошаговое руководство:
- Возьмите первые 6 цифр номера карты.
- Введите их в BIN-чекер (онлайн-сервис или API).
- Получите информацию:
- Название банка
- Страна
- Тип карты
- Платёжная система
Инструменты для проверки BIN:
| Инструмент | Тип | Особенности |
|---|---|---|
| BIN Checker: Card Validator App | Мобильное приложение | Бесплатно, определяет банк, страну, тип карты и уровень риска |
| Credit Card BIN Checker | Мобильное приложение | Быстрая идентификация карты по BIN |
| VCCGenerator | Chrome-расширение | Luhn-проверка, BIN-детали, поддержка нескольких платёжных систем |
| Apify BIN Lookup | API | Всесторонняя валидация BIN/IIN |
| BIN Checker: Card Validator App (iOS) | Мобильное приложение | Определение банка, страны и уровня риска по первым 6 цифрам |
Преимущества:
- Не оставляет следов
- Позволяет оценить «качество» карты до любых операций
- Помогает определить, подходит ли карта для конкретных магазинов
Ограничения:
- Не даёт информации о балансе
- Не проверяет, активна ли карта
- Базы BIN могут устаревать
Ошибки и их исправление:
| Ошибка | Как проявляется | Исправление |
|---|---|---|
| Использование устаревшей базы BIN | Неверное определение банка | Используйте актуальные BIN-чекеры с регулярными обновлениями |
| Ввод неполного BIN | Неверный результат | Всегда вводите минимум 6 цифр |
| Игнорирование дополнительных цифр | Пропуск важной информации | Некоторые сервисы используют 8 цифр для более точного определения |
Глава 1.3. Проверка формата и контрольных сумм
Что это: Проверка структуры карточных данных без отправки запроса в платёжную систему. Включает проверку длины номера, соответствие маске платёжной системы, валидность CVV и срока действия.Пошаговое руководство:
- Проверьте длину номера:
- Visa: 16 цифр (начинается с 4)
- Mastercard: 16 цифр (начинается с 51-55, 2221-2720)
- American Express: 15 цифр (начинается с 34 или 37)
- Discover: 16 цифр (начинается с 6011, 622126-622925, 644-649, 65)
- Проверьте CVV:
- Visa/Mastercard/Discover: 3 цифры
- American Express: 4 цифры
- Проверьте срок действия:
- Не должен быть в прошлом
- Не должен быть слишком далёким в будущем (обычно не более 5 лет)
- Используйте библиотеки валидации:
- card-precheck — проверяет формат и контрольную сумму без отправки данных
- veridigit — проверяет структуру идентификатора (формат и контрольную сумму)
- Flutter Cardidy — валидация номеров карт и CVV без использования регулярных выражений
Преимущества:
- Абсолютно безопасно
- Мгновенная проверка
- Не требует подключения к интернету
Ограничения:
- Проверяет только формат, а не реальное существование карты
ЧАСТЬ 2. МЕТОДЫ ПРОВЕРКИ С ОБРАЩЕНИЕМ К ПЛАТЁЖНОЙ СИСТЕМЕ (АВТОРИЗАЦИЯ)
Эти методы уже предполагают взаимодействие с банком-эмитентом и могут оставить след в истории карты. Однако при правильной настройке они не списывают деньги.Глава 2.1. Нулевая авторизация (Zero-Authorization / $0 Auth)
Что это: Некоторые платёжные шлюзы поддерживают запрос на валидацию карты с суммой 0 или с флагом, указывающим, что это проверка, а не платёж.Как работает: Отправляется авторизационный запрос на сумму $0. Банк проверяет карту и возвращает статус (валидна/невалидна), но деньги не блокируются. Это стандартная практика, которую Visa называет «Card Account Validation».
Где поддерживается:
| Платформа | Поддержка | Примечание |
|---|---|---|
| Basis Theory | Да | Также известна как карточная аутентификация или пре-авторизация |
| Juspay Hyperswitch | Да | Позволяет валидировать платёжные данные и зарядить позже |
| PayPal | Да | «Authorizations without purchase» |
| Mercado Pago | Да | «Zero Dollar Auth» — улучшенная валидация без списания |
| BNP Paribas Axepta | Да | 0-евро авторизация для проверки карты |
| Judopay | Да | «Check Card» — нулевая пре-авторизация |
| Coinflow | Да | $0 авторизация для валидации и токенизации |
| Unzer | Да | Zero-auth для проверки карты при регистрации |
| Adyen | Да | Авторизационный запрос с валютой 0 |
| Stripe | Да | Сохранение карты через Setup Intents API |
Пошаговое руководство:
- Выберите платёжный шлюз, поддерживающий нулевую авторизацию.
- Создайте запрос на авторизацию с суммой 0.
- Отправьте запрос в платёжную систему.
- Проанализируйте ответ:
- Успешный ответ → карта валидна
- Отказ → карта невалидна или заблокирована
- Не захватывайте средства — нулевая авторизация не может быть захвачена.
Преимущества:
- Не списывает деньги
- Проверяет реальную валидность карты
- Может использоваться для токенизации карты
Ограничения:
- Поддерживается не всеми эквайерами
- Некоторые банки не поддерживают нулевые авторизации
- Не проверяет баланс и кредитные лимиты
Ошибки и их исправление:
| Ошибка | Как проявляется | Исправление |
|---|---|---|
| Эквайер не поддерживает $0 авторизацию | Запрос отклоняется | Используйте $1 авторизацию с отменой |
| Банк не поддерживает нулевую авторизацию | Отказ | Используйте $1 авторизацию с отменой |
| Неверный формат запроса | Ошибка API | Проверьте документацию конкретного шлюза |
| Игнорирование 3DS | Запрос требует аутентификации | Внедрите редирект на 3DS, если требуется |
Глава 2.2. Авторизация на $1 с отменой ($1 Auth + Void)
Что это: Более надёжный, но чуть более «заметный» способ. Вы отправляете запрос на авторизацию суммы в $1, а затем сразу же отменяете её (Void).Как работает: В большинстве случаев средства не списываются, а просто блокируются на короткое время. Braintree, например, сначала пытается использовать $0 авторизацию, а если она недоступна — использует $1 авторизацию и автоматически отменяет её.
Пошаговое руководство:
- Создайте авторизационный запрос на сумму $1 (или 1 EUR, 1 GBP и т.д.).
- Дождитесь ответа от платёжного шлюза.
- Немедленно отправьте запрос на отмену (Void).
- Подтвердите, что отмена прошла успешно.
Когда используется:
- Если эквайер не поддерживает $0 авторизацию
- Для валидации карт American Express и Discover, которые требуют реальной транзакции
Преимущества:
- Работает с большинством эквайеров
- Надёжно проверяет карту
- Не списывает деньги (при правильной отмене)
Ограничения:
- Может оставить след в истории карты
- В редких случаях банк может не отменить авторизацию
- Временная блокировка $1 может отображаться в выписке
Ошибки и их исправление:
| Ошибка | Как проявляется | Исправление |
|---|---|---|
| Отмена не выполнена | $1 списан | Всегда отправляйте Void сразу после успешной авторизации |
| Задержка отмены | $1 висит в ожидании | Настройте автоматическую отмену в коде |
| Неправильная сумма | Авторизация отклонена | Используйте 1 в валюте, соответствующей карте |
| Платёжный шлюз не поддерживает Void | Невозможно отменить | Используйте другой шлюз или метод |
Глава 2.3. Информационный запрос (Information Request)
Что это: Некоторые платёжные системы предлагают специальный тип запроса, который проверяет валидность карты без её дебетования.Особенность: Сумма запроса равна 0. Если эквайер не поддерживает такие запросы, используется авторизация на €1 без захвата средств.
Пошаговое руководство:
- Проверьте документацию вашего платёжного шлюза на наличие «information request» или «card verification» endpoint.
- Создайте запрос с типом «verification» или «information».
- Отправьте запрос в платёжную систему.
- Проанализируйте ответ.
Преимущества:
- Не оставляет следов
- Не требует отмены
Ограничения:
- Поддерживается не всеми шлюзами
ЧАСТЬ 3. КОСВЕННЫЕ МЕТОДЫ ПРОВЕРКИ
Эти методы не являются прямой проверкой карты, но позволяют косвенно убедиться в её валидности.Глава 3.1. Проверка через подписки с бесплатным пробным периодом
Что это: Некоторые онлайн-сервисы при привязке карты для оформления бесплатного пробного периода выполняют проверку карты, но не списывают средства.Как работает: Сервис отправляет авторизационный запрос на небольшую сумму (часто $0–$1) для проверки карты, но не захватывает средства.
Примеры сервисов:
- Google Play
- Hulu
- Netflix
- Amazon Prime (пробный период)
- Spotify Premium (пробный период)
Пошаговое руководство:
- Выберите сервис с бесплатным пробным периодом.
- Зарегистрируйтесь и привяжите карту.
- Дождитесь проверки карты (обычно мгновенно).
- Если карта принята — она валидна.
- Отмените подписку до окончания пробного периода, чтобы избежать списания.
Преимущества:
- Не требует специальных знаний
- Не списывает деньги
Ограничения:
- Требует регистрации
- Может привести к списанию, если не отменить подписку вовремя
- Не все сервисы доступны во всех странах
Ошибки и их исправление:
| Ошибка | Как проявляется | Исправление |
|---|---|---|
| Забыли отменить подписку | Списание средств | Установите напоминание или используйте временные карты |
| Сервис требует 3DS | Проверка не проходит | Используйте другой сервис без 3DS |
| Сервис блокирует карту | Подозрительная активность | Используйте разные сервисы для разных карт |
Глава 3.2. Проверка через платёжные шлюзы с режимом валидации
Что это: Некоторые платёжные шлюзы предоставляют отдельные эндпоинты для валидации карт, которые не создают транзакцию.Примеры:
- Mangopay: «Create a Card Validation» — валидация без платежа
- Moneris: «Card Verification» — проверка карты без выставления счёта клиенту
- Basis Theory: «Verify a Card» — проверка карты через сети и эмитентов
Пошаговое руководство:
- Зарегистрируйтесь в платёжном шлюзе, поддерживающем валидацию.
- Получите API-ключи.
- Создайте запрос на валидацию карты.
- Проанализируйте ответ.
Преимущества:
- Профессиональный подход
- Не оставляет следов
- Можно использовать для токенизации
Ограничения:
- Требует регистрации в платёжном шлюзе
- Может быть платным
ЧАСТЬ 4. СРАВНИТЕЛЬНАЯ ТАБЛИЦА МЕТОДОВ
| Метод | Сложность | Риск для карты | Стоимость | Информативность | Следы |
|---|---|---|---|---|---|
| Алгоритм Луна | Низкая | Нет | Бесплатно | Низкая (только структура) | Нет |
| Проверка BIN | Низкая | Нет | Бесплатно | Средняя (банк, страна, тип) | Нет |
| Проверка формата | Низкая | Нет | Бесплатно | Низкая (только формат) | Нет |
| $0 авторизация | Средняя | Низкий | Может быть платной | Высокая (реальная валидность) | Минимальные |
| $1 auth + void | Средняя | Низкий | Может быть платной | Высокая (реальная валидность) | Минимальные |
| Информационный запрос | Средняя | Нет | Может быть платной | Высокая (реальная валидность) | Нет |
| Бесплатный пробный период | Низкая | Низкий | Бесплатно | Средняя | Минимальные |
| Платёжный шлюз с валидацией | Средняя | Нет | Может быть платной | Высокая | Нет |
ЧАСТЬ 5. ОБЩИЕ РЕКОМЕНДАЦИИ
5.1. Как выбрать метод проверки
| Ситуация | Рекомендуемый метод |
|---|---|
| Быстрая проверка структуры номера | Алгоритм Луна |
| Оценка «качества» карты (банк, страна) | Проверка BIN |
| Проверка реальной валидности без риска | $0 авторизация |
| Если $0 авторизация не поддерживается | $1 auth + void |
| Проверка карты для будущих платежей | Информационный запрос или валидация через шлюз |
| Бесплатная проверка без API | Бесплатный пробный период |
5.2. Ошибки, которые убивают карты
| Ошибка | Почему убивает карту | Как избежать |
|---|---|---|
| Слишком частые проверки | Банк видит аномальную активность и блокирует карту | Не проверяйте одну карту чаще 1–2 раз в день |
| Проверка на крупную сумму | Банк воспринимает как реальную транзакцию и может заблокировать | Используйте минимальные суммы ($0–$1) |
| Использование одного шлюза для всех проверок | Шлюз может заподозрить мошенничество и заблокировать | Ротируйте шлюзы и методы проверки |
| Игнорирование 3DS | Запрос требует аутентификации, карта может быть заблокирована | Внедрите поддержку 3DS или используйте методы, его не требующие |
| Неправильный формат запроса | Отказ может быть воспринят как подозрительная активность | Тщательно проверяйте формат запроса перед отправкой |
| Проверка без легенды | Банк видит необычную активность без объяснения | Всегда имейте легенду для проверки (тестирование, валидация клиента) |
5.3. Лучшие практики
- Начинайте с безопасных методов. Сначала проверьте структуру (алгоритм Луна) и BIN, затем переходите к авторизационным методам.
- Минимизируйте количество проверок. Одна проверка на карту — оптимально. Две — уже риск.
- Используйте разные методы для разных карт. Это снижает вероятность обнаружения паттерна.
- Ведите журнал проверок. Записывайте дату, метод, результат и любые аномалии. Это поможет анализировать ошибки.
- Учитывайте часовой пояс. Проверяйте карты в рабочее время банка-эмитента.
- Используйте тестовые карты для отладки. Перед проверкой реальных карт протестируйте метод на тестовых картах, предоставляемых платёжными шлюзами.
ЧАСТЬ 6. ЮРИДИЧЕСКИЕ И ЭТИЧЕСКИЕ АСПЕКТЫ
6.1. Важные предостережения
- Любая проверка карты оставляет след. Даже если деньги не списаны, банк-эмитент может зафиксировать запрос на авторизацию. Владелец карты может увидеть это в выписке как «pending» или «hold».
- Частые проверки могут привести к блокировке. Если вы отправляете множество запросов на валидацию одной карты, банк может расценить это как подозрительную активность и заблокировать карту.
- CVV и AVS не всегда проверяются. Некоторые эквайеры могут игнорировать CVV или AVS при определённых настройках. Не стоит полагаться на них как на единственный метод верификации.
- Безопасность данных. При работе с карточными данными необходимо соблюдать стандарты PCI DSS. Любая утечка данных может привести к серьёзным юридическим последствиям.
ЗАКЛЮЧЕНИЕ: Искусство проверки без следа
Проверка карты на валидность без её «убивания» — это балансирование между получением информации и сохранением карты в рабочем состоянии. Каждый метод имеет свои преимущества и ограничения. Начинайте с безопасных методов (алгоритм Луна, BIN), переходите к более информативным (нулевая авторизация) и всегда учитывайте риски.Главные правила:
- Минимизируйте количество проверок на одну карту
- Используйте разные методы для разных карт
- Всегда учитывайте часовой пояс банка-эмитента
- Не проверяйте карты слишком часто
- Ведите журнал всех проверок
Помните: лучший способ проверить карту — это тот, который оставляет меньше всего следов.