Схема транзакции ATM (Mermaid)
Справочная заметка ATM: Схема транзакции ATM (Mermaid).
Схема транзакции ATM
Полная диаграмма прохождения транзакции от вставки карты до завершения.
Включает точки принятия решений, обработку отказов и reversal.
Полная схема (Cash Withdrawal)
flowchart TD
START([Клиент подходит к ATM])
INSERT[Вставить карту\nCard Reader]
READ{Карта\nпрочитана?}
ERR_CARD[Ошибка чтения\nВернуть карту]
WELCOME[Приветствие\nВыбор языка]
PIN_ENTRY[Ввод PIN\nEPP - зашифровано]
SELECT_OP[Выбор операции]
OP_TYPE{Тип операции}
BAL[Запрос баланса\nMTI 0200\nF3=310000]
WITH[Выбор суммы\nWithdrawal]
DEP[Депозит\nInsert cash]
BUILD_REQ[Формирование запроса\nISO 8583 MTI 0200\n+EMV data F55\n+PIN Block F52]
SEND[Отправить в\nAcquirer Switch\nTLS/TCP]
TIMEOUT{Ответ\nполучен?}
REVERSAL_T[Reversal\nMTI 0420\nTimeout]
PARSE_RESP[Разбор ответа\nField 39]
APPROVED{F39 = 00\nApproved?}
DECLINE_MSG[Сообщение об отказе\nResponse Code]
CARD_CAPTURE{Capture card?\nF39 = 41/43}
CAPTURE[Изъять карту\nCard Capture]
RETURN_CARD_D[Вернуть карту]
DISPENSE[Диспенсировать банкноты\nCash Dispenser]
DISP_OK{Купюры\nвыданы?}
SHUTTER_OPEN[Открыть shutter\nОжидание изъятия]
TAKEN{Деньги взяты\nклиентом?}
RETRACT[Retract\nВернуть в кассету\nRetract Cassette]
REVERSAL_ND[Reversal\nMTI 0420\nNo Dispense]
PRINT_RECEIPT{Печать\nчека?}
RECEIPT[Напечатать чек\nReceipt Printer]
RETURN_CARD[Вернуть карту]
ANOTHER{Ещё\nоперация?}
END([Транзакция завершена\nATM в режиме ожидания])
START --> INSERT
INSERT --> READ
READ -->|Нет| ERR_CARD
ERR_CARD --> END
READ -->|Да| WELCOME
WELCOME --> PIN_ENTRY
PIN_ENTRY --> SELECT_OP
SELECT_OP --> OP_TYPE
OP_TYPE -->|Withdrawal| WITH
OP_TYPE -->|Balance| BAL
OP_TYPE -->|Deposit| DEP
WITH --> BUILD_REQ
BAL --> BUILD_REQ
DEP --> BUILD_REQ
BUILD_REQ --> SEND
SEND --> TIMEOUT
TIMEOUT -->|Нет ответа\nтаймаут| REVERSAL_T
REVERSAL_T --> RETURN_CARD_D
RETURN_CARD_D --> END
TIMEOUT -->|Ответ получен| PARSE_RESP
PARSE_RESP --> APPROVED
APPROVED -->|Нет, Decline| DECLINE_MSG
DECLINE_MSG --> CARD_CAPTURE
CARD_CAPTURE -->|F39=41 или 43| CAPTURE
CARD_CAPTURE -->|Нет| RETURN_CARD_D
CAPTURE --> END
APPROVED -->|Да, Approve| DISPENSE
DISPENSE --> DISP_OK
DISP_OK -->|Нет, сбой| REVERSAL_ND
REVERSAL_ND --> RETURN_CARD
RETURN_CARD --> END
DISP_OK -->|Да| SHUTTER_OPEN
SHUTTER_OPEN --> TAKEN
TAKEN -->|Нет, таймаут| RETRACT
RETRACT --> RETURN_CARD
TAKEN -->|Да| PRINT_RECEIPT
PRINT_RECEIPT -->|Да| RECEIPT
RECEIPT --> RETURN_CARD
PRINT_RECEIPT -->|Нет| RETURN_CARD
RETURN_CARD --> ANOTHER
ANOTHER -->|Да| SELECT_OP
ANOTHER -->|Нет| END
Схема маршрутизации запроса (On-Us vs Off-Us)
flowchart TD
SW[Acquiring Switch\nATM Host]
BIN{BIN анализ\nF2 PAN}
ONUS[On-Us:\nBIN эквайера]
OFFUS[Off-Us:\nBIN другого банка]
ISS_INT[Issuer System\nвнутри банка]
SCHEME{Card Scheme\nRouting}
VISA[Visa VisaNet]
MC[Mastercard Banknet]
MIR[МИР НСПК]
ISS_EXT[Issuer\nAuthorizer\n внешний банк]
SW --> BIN
BIN -->|On-Us| ONUS
ONUS --> ISS_INT
ISS_INT -->|Response| SW
BIN -->|Off-Us| OFFUS
OFFUS --> SCHEME
SCHEME -->|Visa card| VISA
SCHEME -->|MC card| MC
SCHEME -->|МИР card| MIR
VISA --> ISS_EXT
MC --> ISS_EXT
MIR --> ISS_EXT
ISS_EXT -->|Response| SCHEME
SCHEME -->|Response| SW
Схема Reversal
flowchart TD
ORIG[Оригинальная транзакция\nMTI 0200]
TRIGGER{Причина\nreversal}
ND[No Dispense\nДеньги не выданы]
TO[Timeout\nНет ответа от хоста]
PT[Partial Dispense\nЧасть суммы выдана]
REV[Reversal Request\nMTI 0420\nF90 = оригинальный STAN/RRN]
SEND_REV[Отправить reversal\nв Acquirer Switch]
SCHEME_REV[Card Scheme → Issuer\n отмена авторизации]
RESTORE[Восстановить средства\nна счёте держателя]
LOG[Запись в EJ\nreversed = true]
ORIG --> TRIGGER
TRIGGER --> ND
TRIGGER --> TO
TRIGGER --> PT
ND --> REV
TO --> REV
PT --> REV
REV --> SEND_REV
SEND_REV --> SCHEME_REV
SCHEME_REV --> RESTORE
RESTORE --> LOG
Состояния ATM (State Machine)
stateDiagram-v2
[*] --> OutOfService : Запуск / Ошибка
OutOfService --> InService : Инициализация успешна
InService --> CardInserted : Клиент вставил карту
CardInserted --> PINEntry : Карта прочитана
PINEntry --> TransactionInProgress : PIN введён
TransactionInProgress --> InService : Транзакция завершена
TransactionInProgress --> OutOfService : Критическая ошибка
InService --> OutOfService : Нет связи с хостом
InService --> Supervisor : Вход инженера/инкассатора
Supervisor --> InService : Обслуживание завершено
Связанные заметки
- ATM-Процессинг-обзор — участники и протоколы
- ATM-Withdrawal-Sequence — детальный sequence diagram withdrawal
- ATM-Balance-Deposit-Sequence — balance и deposit
- ATM-Сценарии-сбоев — детали failure scenarios
- ATM-No-Dispense-и-Reversal — reversal механизм
- ATM-ISO-8583 — поля ISO 8583 в деталях