Сценарии: Timeout, Decline, Card Capture
Справочная заметка ATM: Сценарии: Timeout, Decline, Card Capture.
Сценарии: Timeout, Decline, Card Capture
1. Timeout — нет ответа от хоста
Описание
Timeout наступает, когда ATM отправил запрос (0200) и не получил ответ в течение настроенного времени ожидания (обычно 30–60 секунд).
Проблема: ATM не знает, был ли запрос обработан хостом. Возможные состояния:
| Состояние хоста | Что произошло |
|---|---|
| Хост не получил запрос | Транзакция не создана |
| Хост получил, не ответил | Транзакция может быть создана (hold на счёте) |
| Ответ lost in transit | Транзакция одобрена, ATM не знает |
Sequence Diagram — Authorization Timeout
sequenceDiagram
autonumber
participant CH as Cardholder
participant APP as ATM App
participant ACQ as ACQ Switch
participant ISS as Issuer Auth
APP->>ACQ: ISO 8583 0200 (Withdrawal)\nSTAN=789012
Note over APP: Таймер: 30 секунд
Note over ACQ: ❌ Сеть недоступна\nили хост перегружен
Note over APP: ⏱️ Таймаут истёк\nНет ответа
APP->>APP: Тактика: отправить Reversal\nДаже если транзакция\nне была создана на хосте
APP->>ACQ: ISO 8583 0420 (Reversal Advice)\nF90 = original STAN 789012\nF95 = 0
alt Связь восстановилась
ACQ-->>APP: 0430 F39=00 Acknowledged
APP->>APP: Reversal confirmed\nLog: TIMEOUT_REVERSED
else Связь всё ещё недоступна
APP->>APP: Reversal в queue\nПовтор при восстановлении
end
APP->>XFS: Eject Card
XFS-->>CH: Карта возвращена
APP->>CH: "Связь недоступна.\nПовторите позже"
Идемпотентность Reversal при Timeout
Если ATM отправляет reversal, а хост никогда не видел оригинальный запрос, то reversal будет получен с неизвестным STAN. Хост должен:
- Либо принять (F39=00) — безопасно
- Либо вернуть “original not found” — ATM логирует и не предпринимает дополнительных действий
[!warning] Повторная отправка оригинала ATM никогда не повторяет оригинальный 0200 после таймаута. Только reversal. Повторная отправка 0200 может привести к двойному списанию.
2. Decline — отказ в авторизации
Описание
Хост вернул ответ с F39 ≠ 00. Транзакция отклонена. Деньги не списываются, reversal не нужен.
Полная таблица кодов Decline с поведением ATM
[!warning] Caveat по F39 Коды ниже — типовые ISO 8583/processor examples. Фактическое поведение ATM по card capture зависит от правил платежной системы, политики эмитента/эквайера, конфигурации terminal application, типа карты, юридической среды и возможностей устройства. Для МИР/НСПК нужно сверять актуальные правила и стандарты НСПК.
| F39 | Текст | Причина | Поведение ATM |
|---|---|---|---|
| 05 | Do Not Honor | Общий отказ эмитента | Показать ошибку, вернуть карту |
| 12 | Invalid Transaction | Тип транзакции не поддерживается | Показать ошибку, вернуть карту |
| 13 | Invalid Amount | Некорректная сумма (0 или >max) | Показать ошибку |
| 14 | Invalid Card Number | PAN не существует | Показать ошибку, вернуть карту |
| 30 | Format Error | Ошибка формата сообщения | Log error, Out of Service |
| 41 | Lost Card | Карта заявлена утерянной | Card capture, если это требует/разрешает профиль сети и конфигурация ATM |
| 43 | Stolen Card | Карта заявлена украденной | Card capture, если это требует/разрешает профиль сети и конфигурация ATM |
| 51 | Insufficient Funds | Недостаточно средств | Предложить меньшую сумму |
| 54 | Expired Card | Истёк срок действия | Показать ошибку, вернуть карту |
| 55 | Incorrect PIN | Неверный PIN | Счётчик PIN попыток +1 |
| 57 | Transaction Not Permitted | Операция запрещена для карты | Показать ошибку |
| 61 | Exceeds Withdrawal Limit | Превышен лимит суммы | Предложить меньшую сумму |
| 65 | Exceeds Frequency Limit | Превышен лимит количества операций | Показать ошибку |
| 75 | PIN Tries Exceeded | Исчерпаны попытки PIN | Карта может быть изъята |
| 91 | Issuer Inoperative | Эмитент недоступен | Предложить повторить позже |
| 96 | System Malfunction | Ошибка системы | Предложить повторить позже |
Sequence Diagram — Decline (F39=51, NSF)
sequenceDiagram
autonumber
participant CH as Cardholder
participant APP as ATM App
participant ACQ as ACQ Switch
participant ISS as Issuer Auth
APP->>ACQ: ISO 8583 0200 (Withdrawal 10000 RUB)
ACQ->>ISS: 0200 route
ISS->>ISS: Check balance: 3500 RUB\n10000 > 3500 → Decline
ISS-->>ACQ: 0210 F39=51\n(Insufficient Funds)
ACQ-->>APP: 0210 F39=51
APP->>APP: F39=51 → No dispense\nNo reversal needed
APP->>CH: Показать: "Недостаточно средств"
opt Предложить меньшую сумму (зависит от реализации ПО)
APP->>CH: "Хотите ввести другую сумму?"
CH->>APP: Новая сумма: 3000 RUB
APP->>ACQ: Новый 0200 с суммой 3000
end
APP->>XFS: Eject Card
XFS-->>CH: Карта возвращена
3. Неверный PIN — счётчик попыток
Логика счётчика PIN
flowchart TD
PIN_ENTER[Клиент ввёл PIN]
SEND[Отправить запрос на хост\nISO 8583 0200 + PINBlock]
RESP{F39 = ?}
RESP -->|00 Approved| OK[Авторизация успешна]
RESP -->|55 Wrong PIN| COUNTER[PIN Counter +1]
COUNTER --> CHECK{Counter\n>= max?}
CHECK -->|Нет, < max| RETRY[Предложить\nповторить PIN]
RETRY --> PIN_ENTER
CHECK -->|Да, >= max| BLOCKED[Карта заблокирована\nна уровне эмитента]
BLOCKED --> CAPTURE{Capture card?\nПолитика банка}
CAPTURE -->|Да| CARD_CAP[Card Capture]
CAPTURE -->|Нет| EJECT[Вернуть карту]
RESP -->|75 PIN Tries Exceeded| ALREADY[Уже заблокирована\nCard Capture по политике]
Максимум PIN-попыток: обычно 3 (стандарт большинства эмитентов).
[!note] Где хранится счётчик? Счётчик PIN-попыток хранится у эмитента (или на чипе EMV). ATM сам счёт не ведёт — он полагается на ответ хоста. После каждого F39=55 — повторный запрос. После F39=75 — попытки исчерпаны на стороне эмитента.
4. Card Capture — изъятие карты
Когда ATM изымает карту
| Условие | F39 | Действие |
|---|---|---|
| Карта утеряна | 41 | Capture, если это предусмотрено правилами/профилем сети и конфигурацией терминала |
| Карта украдена | 43 | Capture, если это предусмотрено правилами/профилем сети и конфигурацией терминала |
| PIN исчерпан | 75 | Capture или возврат карты — по политике эмитента/эквайера и terminal configuration |
| Карта не извлечена клиентом | — | Capture/retract механически, если карта физически осталась в card reader |
Публичные примеры F39 для card capture
В открытых processor/reference docs часто встречаются такие примеры:
| F39 | Типовой текст | Практический смысл |
|---|---|---|
| 04 | Pick up card | Не обслуживать карту; возможное изъятие в card-present среде |
| 07 | Pick up card, special condition | Специальное условие/подозрение; возможное изъятие |
| 41 | Lost card | Карта заявлена утерянной; возможное изъятие |
| 43 | Stolen card | Карта заявлена украденной; возможное изъятие |
| 67 | Card to be picked up at ATM | В некоторых processor profiles явно трактуется как pickup at ATM |
Эта таблица не является правилом для любой сети. Для МИР/НСПК нормативнее использовать Правила/Стандарты ПС «Мир»: публичные Правила ПС «Мир» указывают, что причинами захвата карты в сети устройств эквайера могут быть технический сбой, сообщение от эмитента/операционного центра и наличие карты в stop-list со статусом «изъять» или «потерянная/украденная». | Просроченная карта (локальная проверка) | 54 | Зависит от политики ATM |
Sequence Diagram — Card Capture (Lost Card)
sequenceDiagram
autonumber
participant CH as Cardholder
participant APP as ATM App
participant XFS as XFS/Card Reader
participant ACQ as ACQ Switch
participant ISS as Issuer Auth
APP->>ACQ: ISO 8583 0200 (Withdrawal)
ACQ->>ISS: 0200
ISS->>ISS: Card status: LOST\n→ Capture required
ISS-->>ACQ: 0210 F39=41 (Lost Card - Capture)
ACQ-->>APP: 0210 F39=41
APP->>APP: F39=41 → Capture if configured/required
APP->>CH: Показать:\n"Карта изъята.\nОбратитесь в банк"
Note over APP: Карта удерживается\nвнутри ридера
APP->>XFS: Retain Card (не эжектировать)
XFS->>XFS: Карта перемещается в\nCard Capture Bin
APP->>APP: Log в EJ:\nCARD CAPTURED F39=41\nPAN=****1234
Note over CH: Карта физически у банка\nКлиент обращается в отделение
Card Capture Bin
- Физический контейнер внутри ATM для изъятых карт
- Ёмкость: обычно 100–200 карт
- При инкассации/обслуживании — содержимое извлекается
- Инкассированные карты уничтожаются по процедуре банка
5. Session Timeout — клиент не взаимодействует
sequenceDiagram
participant CH as Cardholder
participant APP as ATM App
participant XFS as XFS Layer
APP->>CH: Показать экран операций
Note over APP: Таймер бездействия: 60 сек
Note over CH: ❌ Клиент не нажимает ничего
APP->>APP: Session timeout
APP->>XFS: Eject Card
XFS-->>CH: Карта возвращена автоматически
APP->>CH: Экран: "Время сессии истекло"
APP->>APP: Возврат на стартовый экран
Стандартные таймауты сессии (зависят от конфигурации ATM):
| Состояние | Типичный таймаут |
|---|---|
| Ввод PIN | 30–60 сек |
| Выбор операции | 60–90 сек |
| Выбор суммы | 60 сек |
| Ожидание ответа хоста | 30–60 сек |
| Взятие денег (shutter open) | 30 сек |
| Взятие карты (eject) | 30 сек |
| Чтение чека | 30–60 сек |
6. Network Failure — потеря связи с хостом
Для российского контекста важно различать отсутствие мобильного интернета у клиента, деградацию внешнего канала банкомата и полную потерю связи ATM с host/processor. Публичные источники подтверждают адаптацию банкоматов к отключениям мобильного интернета через проводные каналы/Wi-Fi, но не подтверждают общий режим полноценного offline cash withdrawal без authorization. См. ATM-Russia-Offline-Operation.
flowchart TD
CONN[ATM отправляет keepalive\nISO 8583 0800 Network Mgmt]
RESP{0810 получен?}
RESP -->|Да| OK[Связь в норме\nIn Service]
RESP -->|Нет, retry N раз| FAILOVER{Backup host\nнастроен?}
FAILOVER -->|Да| SWITCH[Переключение на\nBackup Host\nTCP reconnect]
SWITCH --> CONN2[Reconnect +\nNetwork Mgmt 0800]
CONN2 --> RESP2{0810?}
RESP2 -->|Да| OK
RESP2 -->|Нет| OOS
FAILOVER -->|Нет| OOS[ATM Out of Service\nЭкран: "Временно недоступен"]
OOS --> MONITOR[Алерт в EMS\nмониторинг банка]
MONITOR --> ENGINEER[Инженер / удалённая\nдиагностика]
ISO 8583 Network Management (0800/0810):
| Функция | F70 (Network Management Code) |
|---|---|
| Sign-On | 001 |
| Sign-Off | 002 |
| Echo (Heartbeat) | 301 |
| Key Exchange | 101 |
7. Chip Fallback — переход на магнитную полосу
Fallback — если чип карты не читается, ATM предлагает использовать магнитную полосу.
flowchart TD
CHIP[Попытка чтения чипа EMV]
CHIP_OK{Чип прочитан?}
CHIP_OK -->|Да| EMV_AUTH[EMV авторизация]
CHIP_OK -->|Нет, 2-3 попытки| FALLBACK{Fallback разрешён\nконфигурацией?}
FALLBACK -->|Нет| EJECT[Карта возвращена\nОшибка чтения]
FALLBACK -->|Да| MAG[Mag Stripe авторизация\nF22=021]
MAG --> HOST_CHECK{Хост/эмитент\nразрешает fallback?}
HOST_CHECK -->|Да F39=00| OK[Транзакция успешна]
HOST_CHECK -->|Нет F39=57| DECLINE[Decline: fallback not allowed]
[!warning] Fallback и безопасность PCI DSS и правила карточных схем ограничивают fallback. Многие эмитенты блокируют fallback-транзакции как потенциально мошеннические. Терминал должен фиксировать в F22 код 021 (mag stripe fallback), чтобы эмитент мог принять решение.
Связанные заметки
- ATM-Сценарии-сбоев — общая матрица
- ATM-No-Dispense-и-Reversal — no-dispense и reversal механизм
- ATM-Процессинг-обзор — таблица кодов F39
- ATM-ISO-8583 — ISO 8583 поля
- TERM-reversal · TERM-dispute · TERM-chargeback · TERM-emv
- ATM-МИР-и-НСПК · ATM-Российская-регуляторика
- ATM-Russia-Offline-Operation
Источники
- НСПК: Правила ПС «Мир» v4.3 — документы по операциям и порядок работы с изъятыми картами.
- Банк России: Признаки мошеннических операций при снятии наличных в банкоматах.
- Банк России: Приказ с признаками выдачи наличных без добровольного согласия через ATM.
- EBANX Docs: ISO 8583 response code examples — вспомогательный источник, не норматив для МИР.
- Thredd EHI Guide: public response code examples — вспомогательный источник, не норматив для МИР.