Sequence Diagram: Снятие наличных (Withdrawal)
Справочная заметка ATM: Sequence Diagram: Снятие наличных (Withdrawal).
Sequence Diagram: Снятие наличных (Withdrawal)
Детализированный sequence diagram полного цикла операции снятия наличных.
Участники: клиент, ATM (приложение), XFS-уровень, Acquirer Switch, Card Scheme, Issuer.
Участники диаграммы
| Участник | Роль |
|---|---|
| Cardholder | Клиент ATM |
| ATM App | Прикладное ПО ATM (APTRA, Vynamic, Kalignite и др.) |
| XFS Layer | CEN/XFS Service Providers: card reader, EPP, dispenser |
| ACQ Switch | Acquiring Switch / ATM Host банка-эквайера |
| Card Scheme | Платёжная система (Visa, MC, МИР) |
| Issuer Auth | Авторизационная система банка-эмитента |
[!note] Российский профиль Для операций с картами «Мир» приоритетный схемный слой — ATM-МИР-и-НСПК. Российская антифрод-специфика может добавлять проверки до dispense: Банк России с
2025-09-01определил признаки выдачи наличных без добровольного согласия клиента через банкоматы. См. ATM-Russia-Anti-Fraud-Cash-Withdrawal.
Полный Sequence Diagram — Withdrawal (Success)
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 event
APP->>XFS: Read Card (Track2 + EMV chip)
XFS-->>APP: CardData {PAN, ExpDate, Track2, ICC data}
APP->>APP: Validate card data\nCheck expiry, BIN lookup
APP->>CH: Показать: Введите PIN
CH->>XFS: Ввод PIN (EPP)
Note over XFS: EPP шифрует PIN → PIN Block\n(ISO 9564 Format 0/3/4)
XFS-->>APP: PINEntered {PINBlock encrypted}
APP->>CH: Показать: Выберите операцию
CH->>APP: Withdrawal selected
APP->>CH: Показать: Введите сумму
CH->>APP: Amount = 5000 RUB
APP->>APP: Сформировать ISO 8583 MTI=0200\nF2=PAN, F3=010000\nF4=000000500000\nF11=STAN, F22=051\nF35=Track2, F41=TermID\nF49=643, F52=PINBlock\nF55=EMV ICC data
APP->>ACQ: ISO 8583 0200 (Financial Request)\nover TLS/TCP
ACQ->>ACQ: Log transaction\nValidate MAC\nBIN routing decision
alt On-Us (карта эквайера)
ACQ->>ACQ: Internal authorization
else Off-Us (карта другого банка)
ACQ->>CS: ISO 8583 0200 → forward
CS->>ISS: ISO 8583 0200 → route to issuer
ISS->>ISS: Check: balance, limits\nPIN verify (decrypt PINBlock)\nFraud rules, card status
ISS-->>CS: ISO 8583 0210\nF39=00 (Approved)\nF38=AuthCode
CS-->>ACQ: ISO 8583 0210\nF39=00, F38=AuthCode
end
ACQ-->>APP: ISO 8583 0210\nF39=00, F38=AuthCode\nF54=Balance (optional)
APP->>APP: Parse response\nF39 == 00 → proceed to dispense
APP->>XFS: Dispense {amount=5000, denominations}
XFS->>XFS: CDM: count notes\nTransport to shutter
Note over XFS: Сенсоры: double-detect,\nthickness, UV, IR
alt Dispense OK
XFS-->>APP: DispenseOK {notes dispensed: 5x1000}
APP->>XFS: Open Shutter
XFS-->>APP: ShutterOpen
APP->>CH: Показать: Возьмите деньги
Note over CH,XFS: Ожидание таймаут 30 сек
alt Клиент взял деньги
XFS-->>APP: CashTaken event
APP->>XFS: Close Shutter
else Таймаут — клиент не взял
APP->>XFS: Retract
XFS->>XFS: Retract notes → Retract Cassette
XFS-->>APP: RetractComplete
Note over APP: Cash presented but not taken\nНе считать автоматически no-dispense\nФиксировать retract в EJ
end
APP->>CH: Вернуть карту?
APP->>XFS: Eject Card
XFS-->>CH: Карта возвращена
APP->>XFS: Print Receipt
XFS-->>CH: Чек напечатан
APP->>ACQ: ISO 8583 0220 (Financial Advice / Completion)\nесли требует схема
ACQ-->>APP: ISO 8583 0230 (Advice Response)
else Dispense FAIL — No Dispense
XFS-->>APP: DispenseFail {error code}
APP->>ACQ: ISO 8583 0420 (Reversal Advice)\nF39=00, F90=STAN original\nF95=replacement amounts=0
ACQ->>CS: ISO 8583 0420 → forward
CS->>ISS: ISO 8583 0420
ISS->>ISS: Restore funds\nCancel authorization
ISS-->>CS: ISO 8583 0430
CS-->>ACQ: ISO 8583 0430
ACQ-->>APP: ISO 8583 0430 (Reversal Ack)
APP->>XFS: Eject Card
XFS-->>CH: Карта возвращена
APP->>CH: Показать: Операция не выполнена\nОбратитесь в банк
end
EMV-специфика (chip card)
sequenceDiagram
participant APP as ATM App
participant XFS as XFS / Card Reader
participant CHIP as EMV Chip
APP->>XFS: Select Application (PSE/PPSE)
XFS->>CHIP: SELECT PPSE
CHIP-->>XFS: Application list {AID: A0000000031010 Visa}
XFS-->>APP: Available AIDs
APP->>XFS: SELECT AID A0000000031010
XFS->>CHIP: SELECT AID
CHIP-->>XFS: FCI {PDOL}
XFS-->>APP: PDOL (Processing Options Data Object List)
APP->>XFS: GET PROCESSING OPTIONS
XFS->>CHIP: GPO {PDOL data}
CHIP-->>XFS: AIP, AFL (Application File Locator)
XFS-->>APP: AIP, AFL
APP->>XFS: READ RECORDs (по AFL)
XFS->>CHIP: READ RECORD
CHIP-->>XFS: Card data: PAN, Expiry, CVR, issuer data
XFS-->>APP: Cardholder data + risk parameters
Note over APP: Offline data auth (SDA/DDA/CDA)\nTerminal risk management
APP->>XFS: GENERATE AC (ARQC request)
XFS->>CHIP: GENERATE APPLICATION CRYPTOGRAM
CHIP-->>XFS: ARQC (cryptogram для онлайн-авторизации)
XFS-->>APP: ARQC + IAD + CVR
Note over APP: ARQC включается в F55 ISO 8583\nИмитент верифицирует ARQC
Таймауты и retry-политика
| Событие | Типичный таймаут | Действие |
|---|---|---|
| Ответ хоста (authorization) | 30–60 сек | Reversal + error to customer |
| Клиент вводит PIN | 60 сек | Cancel, eject card |
| Клиент выбирает операцию | 90–120 сек | Idle timeout, eject card |
| Клиент берёт деньги (shutter open) | 30 сек | Retract cash |
| Клиент берёт карту (eject) | 30 сек | Card capture (retract into reader) |
Важное различие: no dispense vs not taken
- No dispense: деньги не были предъявлены клиенту после approval. Обычно нужен reversal/advice или exception workflow.
- Cash presented but not taken: деньги были выведены к shutter, но клиент не забрал их до timeout; ATM выполняет retract и фиксирует событие в EJ/retract cassette.
- Для
cash presented but not takenнельзя автоматически применять ту же логику, что для no dispense. Правила платежной схемы и банка могут требовать отдельного расследования.
Коды ошибок диспенсера (XFS / CDM)
| Код | Описание |
|---|---|
WFS_ERR_CDM_CASHUNITERROR | Ошибка кассеты (нет денег, jam) |
WFS_ERR_CDM_TOOMANYITEMS | Слишком много банкнот (jam) |
WFS_ERR_CDM_SHUTTERNOTOPEN | Shutter не открылся |
WFS_ERR_CDM_SHUTTERNOTCLOSED | Shutter не закрылся |
WFS_ERR_CDM_NOITEMS | Нет банкнот требуемого номинала |
WFS_ERR_CDM_ITEMSTAKEN | Банкноты взяты (успешно) |
WFS_ERR_CDM_ITEMSRETRACTED | Банкноты возвращены (retracted) |
Defensive view: authorization, devices и evidence
Эта схема отделяет authorization path от локального device layer и показывает, где собирать evidence:
sequenceDiagram
participant Client as Client
participant APP as ATM Application
participant EPP as EPP
participant XFS as XFS
participant CDM as Dispenser
participant ACQ as Acquirer Switch / Processor
participant HSM as HSM
participant ISS as Issuer / Core Banking
participant LOG as EJ / Logs
Client->>APP: Start withdrawal
Client->>EPP: Enter PIN
EPP-->>APP: Protected PIN result
APP->>ACQ: Authorization request
ACQ->>HSM: PIN-related cryptographic operation
ACQ->>ISS: Authorization decision request
ISS-->>ACQ: Approve or decline
ACQ-->>APP: Authorization response
APP->>XFS: Dispense request after approval
XFS->>CDM: Device operation
CDM-->>XFS: Result and events
XFS-->>APP: Dispense outcome
APP->>LOG: Transaction and device context
ACQ->>LOG: Host / switch context
Для расследования используйте ATM-Incident-Evidence-Package. XFS управляет устройствами, но не является authorization layer.
В degraded/offline-сценариях cash withdrawal нельзя считать штатным continuation flow без подтвержденной политики банка: потеря связи с host влияет на PIN/limit/fraud checks, reversal/advice и reconciliation. Российский контекст вынесен в ATM-Russia-Offline-Operation.
Связанные заметки
- ATM-Схема-транзакции-Mermaid — общий flowchart
- ATM-Balance-Deposit-Sequence — другие операции
- ATM-No-Dispense-и-Reversal — детали reversal механизма
- ATM-XFS-CEN — XFS API диспенсера
- ATM-Incident-Evidence-Package — evidence для сбоев и disputes
- ATM-EMV-Contactless — отдельный contactless flow
- ATM-Russia-Anti-Fraud-Cash-Withdrawal — российский anti-fraud layer перед dispense
- ATM-Russia-Offline-Operation — online/degraded/offline границы withdrawal
- TERM-emv · TERM-arqc · TERM-pin-block · TERM-reversal
- ATM-МИР-и-НСПК · ATM-Российская-регуляторика
Источники
- ISO: ISO 8583:2023.
- ISO: ISO 9564-1:2017 — PIN management and security.
- НСПК: Правила ПС «Мир» v4.3.
- Банк России: Признаки мошеннических операций при снятии наличных в банкоматах.
- Mastercard: Transaction Processing Rules.