Работа с логами чекеров: как читать между строк и не верить

Good Carder

Professional
Messages
1,014
Reaction score
691
Points
113
От кардера — кардерам. Ты запускаешь чекер, видишь зелёную галочку «Card is valid» и думаешь: «Отлично, карта жива». Через 5 минут ты вбиваешь её на сайте и получаешь do_not_honor. Ты теряешь $50 и время. Почему? Потому что ты не умеешь читать логи. Чекер — это не магия. Это набор сырых данных, которые нужно интерпретировать. В этой статье я покажу, как читать ответы шлюзов, что скрывается за стандартными кодами, как отличить мёртвую карту от проблемного BIN и как построить собственную базу «живых» и «мёртвых» BIN на основе логов.

Часть 1. Почему чекер никогда не даёт 100% гарантии​

Чекер — это программа, которая отправляет запрос к платёжному шлюзу (Stripe, Adyen, Braintree) с данными карты и анализирует ответ. Но чекер не видит баланс, не знает, активна ли карта в данный момент, и не может предсказать, заблокирует ли её конкретный мёрчант.

1.1. Основные типы чекеров и их ограничения​

Тип чекераЧто проверяетОграничения
Luhn-чекерПроверяет, проходит ли номер карты алгоритм ЛунаНе проверяет валидность карты вообще
Zero-auth чекерОтправляет $0 авторизацию (Stripe SetupIntent)Проверяет только существование карты, не баланс
Микро-чекерПроводит реальную транзакцию на $0.50–1Показывает, что карта жива и имеет баланс ≥ $0.50
Баланс-чекерПытается определить точный остаток на картеРедко работает, часто триггерит фрод-системы

Ключевое правило: ни один чекер не даёт 100% гарантии, что карта пройдёт на целевом мёрчанте. Чекер проверяет карту на одном шлюзе, а вбиваешь ты на другом. Разные шлюзы имеют разные чёрные списки BIN и разные пороги скоринга.

1.2. Чекер vs реальный вбив — почему результат может отличаться​

ФакторЧекерРеальный вбив
ШлюзStripe (через SetupIntent)Может быть Stripe, Adyen, Braintree, самописный
Сумма$0 или $0.50$50–500
BIN-фильтрацияМягкая (для $0 часто отключена)Жёсткая (для крупных сумм включена)
AVSНе проверяетсяПроверяется
3DSНе запрашиваетсяМожет быть запрошен
FingerprintНе анализируетсяАнализируется

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

Часть 2. Анализ ответов шлюзов: что скрывается за кодами​

Чекер возвращает код ответа. Твоя задача — понять, что реально стоит за этим кодом.

2.1. Stripe decline codes — расшифровка​

insufficient_funds
  • Что говорит чекер: «Карта жива, но баланс мал».
  • Что на самом деле: Баланс меньше суммы проверки ($0.50 или $1).
  • Действие: Уменьши сумму чека до $1 и попробуй снова. Если и на $1 падает — баланс $0.

do_not_honor
  • Что говорит чекер: «Карта мертва».
  • Что на самом деле: Карта в стоп-листе банка (украдена, заблокирована, просрочена).
  • Действие: Выбрось карту. Она не оживёт.

fraudulent
  • Что говорит чекер: «Карта заблокирована антифродом».
  • Что на самом деле: BIN в чёрном списке Stripe, или твой IP/fingerprint подозрительный.
  • Действие: Проверь, не сгорел ли BIN. Смени прокси и fingerprint, попробуй другую карту того же BIN. Если она тоже падает с fraudulent — BIN мёртв.

generic_decline
  • Что говорит чекер: «Общий отказ».
  • Что на самом деле: Может быть всё что угодно: BIN в чёрном списке, проблема с AVS, подозрительный IP.
  • Действие: Посмотри на тайминг ответа. Если <1 сек — BIN мёртв. Если >1 сек — возможно, карта жива, но есть другие проблемы (CVV, AVS).

authentication_required
  • Что говорит чекер: «Требуется 3DS».
  • Что на самом деле: Карта требует подтверждения через банк-приложение или SMS.
  • Действие: Для non‑3DS целей карта бесполезна. Для low‑value exemption (<€30) попробуй уменьшить сумму.

expired_card
  • Что говорит чекер: «Срок истёк».
  • Что на самом деле: Карта физически перевыпущена или срок прошёл.
  • Действие: Выбрось карту.

invalid_cvc
  • Что говорит чекер: «Неверный CVV».
  • Что на самом деле: Либо CVV не совпадает, либо продавец дал неверный CVV.
  • Действие: Проверь CVV с продавцом. Если CVV не совпадает — карта может быть жива, но без CVV бесполезна.

2.2. Adyen decline codes​

КодЧто говорит чекерРеальностьДействие
NOT_ENOUGH_BALANCE«Недостаточно средств»Баланс < суммы проверкиУменьши сумму или отложи карту
DO_NOT_HONOR«Карта мертва»Карта в стоп-листеВыбрось
FRAUD«Блокировка антифродом»BIN в чёрном списке или плохая средаСмени BIN или прокси
BLOCKED«Карта заблокирована»Эмитент заблокировал картуВыбрось
3D_SECURE_REQUIRED«Требуется 3DS»Карта требует подтвержденияДля non‑3DS целей бесполезна

2.3. Braintree decline codes​

КодТекстРеальностьДействие
2004Insufficient FundsБаланс < суммы проверкиУменьши сумму
2005Do Not HonorКарта в стоп-листеВыбрось
2016FraudBIN в чёрном спискеСмени BIN
2003Expired CardСрок истёкВыбрось
2000Generic DeclineМожет быть что угодноПроверь тайминг и BIN

Часть 3. Как отличить мёртвую карту от живой, но с проблемным BIN​

Это главный навык, который отделяет профи от новичка.

3.1. Сравнительный тест​

Алгоритм:
  1. Проверь карту через чекер. Если упала с do_not_honor — карта мертва.
  2. Если упала с fraudulent или generic_decline — возьми другую карту того же BIN.
  3. Если вторая карта тоже падает с fraudulent — BIN мёртв.
  4. Если вторая карта проходит — проблема была в первой карте.

Таблица диагностики:
СитуацияДиагнозДействие
1 карта → do_not_honorКарта мертваВыбрось карту
3 карты одного BIN → fraudulentBIN мёртвПерестань покупать этот BIN
1 карта → insufficient_fundsКарта жива, но пустаПроверь микро-чеком $1
1 карта → generic_decline (тайминг <1 сек)BIN мёртвСмени BIN
1 карта → generic_decline (тайминг >2 сек)Карта жива, но CVV/AVS не совпадаютПроверь данные

3.2. Техника «трёх карт»​

Никогда не делай вывод о BIN по одной карте. Проверь минимум 3 карты одного BIN.
  • Если все 3 упали с fraudulent → BIN мёртв.
  • Если 2 упали, 1 прошла → BIN жив, но карты были мёртвые.
  • Если все 3 прошли чекер → BIN живой, можно покупать.

3.3. Практический пример из логов​

Code:
BIN 414720:
- Карта #1: `insufficient_funds` (тайминг 2.3 сек)
- Карта #2: `do_not_honor` (тайминг 0.8 сек)
- Карта #3: `generic_decline` (тайминг 0.5 сек)

Диагноз: BIN 414720 жив (одна карта показала insufficient_funds). Карты #2 и #3 были мёртвыми. Покупать этот BIN стоит, но искать более свежие карты.

Code:
BIN 536425:
- Карта #1: `fraudulent` (0.4 сек)
- Карта #2: `fraudulent` (0.5 сек)
- Карта #3: `fraudulent` (0.3 сек)

Диагноз: BIN 536425 мёртв. Не покупай карты этого BIN, даже если они дёшевы.

Часть 4. Построение собственной базы «живых» и «мёртвых» BIN​

Без собственной базы ты слеп. Ты будешь покупать мёртвые BIN снова и снова, теряя деньги.

4.1. Структура базы​

Создай таблицу в Google Sheets или Excel со следующими полями:
BINБанкТипСтранаNon‑3DSСтатусДата проверкиУспех (Stripe)Успех (Adyen)Успех (Braintree)
414720ChaseCreditUSДаЖив2026-07-1525%10%30%
439305MicrosoftPrepaidUSНетМёртв2026-07-140%0%0%
536425MastercardCreditCAДаЖив2026-07-1315%5%20%

4.2. Как заполнять базу​

  1. После каждой проверки заноси данные.
  2. Для каждого BIN собирай минимум 10–20 проверок.
  3. Рассчитывай процент успеха для каждого шлюза отдельно.
  4. Если процент успеха >20% — BIN жив.
  5. Если процент успеха <5% — BIN мёртв.

4.3. Автоматизация сбора данных​

Напиши простой скрипт на Python, который:
  1. Читает список BIN.
  2. Проверяет их через Stripe API (SetupIntent).
  3. Сохраняет результаты в CSV.

Python:
import stripe
import csv
import time

stripe.api_key = "sk_live_..."

bins = ["414720", "536425", "439305"]
results = []

for bin in bins:
    # Генерируем фейковую карту с данным BIN
    card_number = bin + "".join([str(random.randint(0,9)) for _ in range(10)])
    try:
        pm = stripe.PaymentMethod.create(
            type="card",
            card={
                "number": card_number,
                "exp_month": 12,
                "exp_year": 2028,
                "cvc": "123"
            }
        )
        result = "live"
    except stripe.error.CardError as e:
        result = e.error.code
    results.append({
        "bin": bin,
        "result": result,
        "timestamp": time.time()
    })
    time.sleep(1)

with open("bin_check.csv", "w") as f:
    writer = csv.DictWriter(f, fieldnames=["bin", "result", "timestamp"])
    writer.writeheader()
    writer.writerows(results)

4.4. Как использовать базу​

  • Перед покупкой карты проверь BIN в своей базе.
  • Если BIN мёртв — не покупай карты этого BIN.
  • Если BIN жив, но с низким успехом (<10%) — покупай только дешёвые карты и тестируй.
  • Если BIN жив и с высоким успехом (>20%) — покупай оптом.

Часть 5. Ошибки при работе с логами и как их исправить​

Ошибка 1. Игнорировать тайминг​

Симптом: Ты видишь generic_decline и думаешь, что BIN мёртв. На самом деле тайминг 2.5 сек — карта жива, но CVV не совпадает.
Исправление: Всегда смотри на время ответа. <1 сек — BIN мёртв. >1 сек — карта жива, проблема в данных.

Ошибка 2. Доверять одному шлюзу​

Симптом: Ты проверяешь карту только через Stripe и получаешь fraudulent. Ты думаешь, что BIN мёртв. На самом деле Stripe просто блокирует этот BIN, а Adyen пропускает.
Исправление: Проверяй карты через 2–3 разных шлюза. Если Stripe режет, попробуй Adyen или Braintree.

Ошибка 3. Не вести базу​

Симптом: Ты проверял BIN месяц назад и он был жив. Сегодня ты покупаешь карты этого BIN и они все мёртвы. Ты не знаешь, когда он умер.
Исправление: Веди базу и регулярно обновляй статус BIN. Если BIN не проверялся больше 2 недель — проверь его снова.

Ошибка 4. Путать мёртвую карту с мёртвым BIN​

Симптом: Одна карта упала с do_not_honor. Ты думаешь, что BIN мёртв, и перестаёшь покупать этот BIN.
Исправление: Проверь минимум 3 карты одного BIN. Если только одна упала — проблема в карте, а не в BIN.

Часть 6. Чек-лист для работы с логами чекеров​

  • Проверь тайминг: <1 сек → BIN мёртв; >1 сек → карта жива.
  • Проверь decline code: insufficient_funds → жива, но пуста; do_not_honor → мертва; fraudulent → BIN или среда.
  • Проверь минимум 3 карты одного BIN: если все падают с fraudulent → BIN мёртв.
  • Проверь карту через 2–3 шлюза: Stripe, Adyen, Braintree.
  • Веди базу BIN: фиксируй статус, процент успеха, дату проверки.
  • Обновляй базу раз в 2 недели: BIN могут умирать и оживать.
  • Не верь чекеру на 100%: всегда делай микро-чек $0.50–1 перед основным вбивом.

Резюме​

Чекер — это не волшебная палочка. Это инструмент, который даёт сырые данные. Твоя задача — интерпретировать их. Тайминг, decline code, количество проверок, шлюз — всё это важно. Научись читать между строк, и ты перестанешь терять деньги на мёртвых картах.

Веди базу BIN. Проверяй минимум 3 карты одного BIN. Используй 2–3 разных шлюза. И никогда не верь чекеру на 100%. Микро-чек $0.50–1 — твой лучший друг. Он спасёт тебя от 80% потерь.

Быстрая памятка на одну строку:
«Тайминг + decline code + 3 карты + 2 шлюза + база BIN = диагноз. Не верь чекеру — читай между строк. do_not_honor = смерть, insufficient_funds = жизнь, fraudulent = BIN или среда. Микро-чек — твой друг»
 
Top