Sequence Diagrams: Баланс и Депозит
Справочная заметка ATM: Sequence Diagrams: Баланс и Депозит.
Sequence Diagrams: Баланс и Депозит
1. Balance Inquiry (Запрос баланса)
Описание
Запрос баланса — нефинансовая транзакция. Деньги не перемещаются.
ISO 8583: MTI 0200, Processing Code F3 = 31 0000 00.
Баланс может быть:
- Ledger balance — бухгалтерский баланс (все проведённые операции)
- Available balance — доступный баланс (с учётом лимитов и холдов)
ATM обычно показывает available balance. Зависит от реализации эмитента.
sequenceDiagram
autonumber
participant CH as Cardholder
participant APP as ATM App
participant XFS as XFS Layer
participant ACQ as ACQ Switch
participant CS as Card Scheme
participant ISS as Issuer Auth
CH->>XFS: Вставить карту
XFS-->>APP: CardInserted
APP->>XFS: Read Card
XFS-->>APP: CardData {PAN, Track2, EMV}
APP->>CH: Показать: Введите PIN
CH->>XFS: Ввод PIN (EPP)
XFS-->>APP: PINBlock encrypted
APP->>CH: Выберите операцию
CH->>APP: Balance Inquiry
APP->>APP: Формировать ISO 8583 MTI=0200\nF3=310000 (Balance Inquiry)\nF11=STAN, F41=TermID\nF52=PINBlock, F55=EMV data
APP->>ACQ: ISO 8583 0200 (Balance Request)
ACQ->>ACQ: BIN routing
alt On-Us
ACQ->>ACQ: Query account balance
else Off-Us
ACQ->>CS: ISO 8583 0200 forward
CS->>ISS: ISO 8583 0200
ISS->>ISS: Get available balance\nGet ledger balance
ISS-->>CS: ISO 8583 0210\nF39=00\nF54=Balance {available, ledger}
CS-->>ACQ: ISO 8583 0210
end
ACQ-->>APP: ISO 8583 0210\nF39=00\nF54 = Balance fields
APP->>APP: Parse F54:\nAvailable Balance\nLedger Balance
alt Баланс получен
APP->>CH: Показать баланс на экране\n"Доступно: 12 500.00 RUB"
APP->>CH: Распечатать баланс на чеке? (Y/N)
alt Да
APP->>XFS: Print Receipt (баланс)
XFS-->>CH: Чек напечатан
end
else F39 != 00 (ошибка)
APP->>CH: Показать: Баланс недоступен\nResponse code: XX
end
APP->>XFS: Eject Card
XFS-->>CH: Карта возвращена
Особенности Balance Inquiry
| Параметр | Значение |
|---|---|
| MTI | 0200 |
| F3 (Processing Code) | 31 0000 00 |
| F52 (PIN) | Требуется (стандартно) |
| F54 (Additional Amounts) | Ответ содержит баланс |
| Settlement | Нет финансового списания |
| Interchange | Минимальная или нулевая |
[!note] PIN при запросе баланса Большинство сетей требуют PIN даже для balance inquiry. Некоторые банки/схемы позволяют баланс без PIN через contactless (NFC), в этом случае PIN не запрашивается.
2. Deposit (Внесение наличных / Cash-In)
Описание
Депозит — вносение наличных через ATM с зачислением на счёт.
Требует наличия Cash-In модуля: BNA (Banknote Acceptor) или CRM (Cash Recycler).
ISO 8583: MTI 0200, Processing Code F3 = 21 0000 00.
Ключевые особенности:
- Клиент вносит банкноты → ATM верифицирует → подтверждает сумму → клиент принимает или отменяет → транзакция отправляется на хост
- Если транзакция отклонена хостом — ATM возвращает банкноты клиенту
- Транзакция двухфазная: верификация банкнот → подтверждение → авторизация
sequenceDiagram
autonumber
participant CH as Cardholder
participant APP as ATM App
participant XFS as XFS Layer
participant BNA as BNA/CRM Module
participant ACQ as ACQ Switch
participant CS as Card Scheme
participant ISS as Issuer Auth
CH->>XFS: Вставить карту
XFS-->>APP: CardInserted
APP->>XFS: Read Card
XFS-->>APP: CardData
APP->>CH: Введите PIN
CH->>XFS: Ввод PIN
XFS-->>APP: PINBlock
APP->>CH: Выберите операцию
CH->>APP: Deposit / Cash In
APP->>XFS: Open Deposit Shutter
XFS-->>BNA: Open input slot
APP->>CH: Вложите банкноты
CH->>BNA: Внести банкноты
BNA->>BNA: Захватить банкноты\nТранспортировать в escrow
Note over BNA: Валидация каждой банкноты:\n- подлинность (UV, IR, magnetic)\n- номинал (размер, рисунок)\n- пригодность (целостность)\n- дублирование (anti-double)
alt Банкноты приняты
BNA-->>APP: NotesCounted {count, amount, denominations}\nEscrow: 3x1000 + 2x500 = 4000 RUB
XFS-->>APP: EscrowFull / InputComplete
APP->>CH: Показать: Обнаружено 4 000.00 RUB\nПодтвердить?
alt Клиент подтверждает
CH->>APP: Confirm
APP->>APP: Формировать ISO 8583 MTI=0200\nF3=210000 (Deposit)\nF4=000000400000\nF52=PINBlock
APP->>ACQ: ISO 8583 0200 (Deposit Request)
ACQ->>CS: ISO 8583 0200 (если Off-Us)
CS->>ISS: ISO 8583 0200
ISS->>ISS: Validate account\nZачислить средства
ISS-->>CS: ISO 8583 0210 F39=00
CS-->>ACQ: ISO 8583 0210 F39=00
ACQ-->>APP: ISO 8583 0210 F39=00
APP->>BNA: Stack (принять банкноты в кассету)
BNA->>BNA: Перевести из escrow в кассету
APP->>CH: Показать: 4 000.00 RUB зачислено
APP->>XFS: Print Receipt
XFS-->>CH: Чек с подтверждением
else Клиент отменяет
CH->>APP: Cancel
APP->>BNA: Return (вернуть из escrow)
BNA-->>CH: Банкноты возвращены
end
else Банкноты отклонены (частично)
BNA-->>APP: PartialAccept {accepted=3, rejected=1}
APP->>CH: Показать: 1 банкнота не принята\nВозьмите отклонённые банкноты
BNA-->>CH: Вернуть отклонённые банкноты
Note over APP: Продолжить с принятыми (если > 0)\nили отменить
end
alt Хост отклоняет транзакцию
ACQ-->>APP: ISO 8583 0210 F39≠00
APP->>BNA: Return from escrow
BNA-->>CH: Все банкноты возвращены
APP->>CH: Показать: Зачисление невозможно
end
APP->>XFS: Eject Card
XFS-->>CH: Карта возвращена
Режим Recycling (CRM)
flowchart TD
IN[Клиент вносит банкноты]
VALID{Банкнота\nпроверена}
FIT{Банкнота\nпригодна\nдля выдачи?}
RECYCLE[Recycling Cassette\nПригодна для выдачи]
REJECT[Reject Cassette\nНепригодна]
ESCROW[Escrow до\nподтверждения]
STACK_OK[Stack в cassette]
IN --> VALID
VALID -->|Фальшивая / ошибка| REJECT
VALID -->|OK| ESCROW
ESCROW --> FIT
FIT -->|Да, годная| RECYCLE
FIT -->|Нет, ветхая| REJECT
RECYCLE --> STACK_OK
[!warning] Recycling и регуляторные требования Банки обязаны верифицировать подлинность банкнот перед рециклингом согласно требованиям ЦБ РФ (Положение 630-П) и аналогичным международным нормативам. Не все ATM и не всё ПО поддерживает сертифицированные алгоритмы проверки.
Сравнение операций
| Параметр | Withdrawal | Balance Inquiry | Deposit |
|---|---|---|---|
| MTI | 0200 | 0200 | 0200 |
| F3 | 01 0000 00 | 31 0000 00 | 21 0000 00 |
| Финансовая? | Да | Нет | Да |
| PIN | Да | Да (обычно) | Да |
| Reversal возможен? | Да (no-dispense) | Нет | Да (если не зачислено) |
| Требует специальный модуль | CDM / CRM | Нет | BNA / CRM |
| EMV данные (F55) | Да | Да | Да |
| Settlement | Да | Нет | Да |
Связанные заметки
- ATM-Процессинг-обзор — участники и коды
- ATM-Схема-транзакции-Mermaid — общий flowchart
- ATM-Withdrawal-Sequence — withdrawal детально
- ATM-Кассеты-и-Диспенсер — recycling кассеты
- ATM-Сценарии-сбоев — ошибки при депозите
- TERM-escrow · TERM-recycling · TERM-bna