Открыть меню

Схема транзакции ATM (Mermaid)

Создано 5 мая 2026 г. Обновлено 2 июн. 2026 г. 3 мин чтения

Справочная заметка 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 : Обслуживание завершено

Связанные заметки

Ссылаются на эту заметку

Источник: публичный слой Obsidian Vault.