c2ec.plantuml (1823B)
1 @startuml 2 3 actor User as "Customer (with credit card)" 4 participant Wallet 5 participant C2EC 6 participant Exchange 7 participant TerminalBackend as "Terminal Backend" 8 participant Terminal 9 actor TerminalOwner as "Terminal Owner" 10 11 Terminal -> Terminal: configures Exchanges 12 User -> TerminalOwner: "Hi, I want to withdraw 20 CHF using Taler with my credit card" 13 TerminalOwner -> Terminal: selects Exchange and enters amount 14 Terminal -> Terminal: show summary with fees (optional) 15 Terminal -> C2EC: (0) setup withdrawal 16 C2EC -> C2EC: generate WOPID 17 C2EC -> Terminal: withdrawal setup response (WOPID) 18 Terminal -> Terminal: create QR code (WOPID, Exchange, amount) 19 Terminal -> C2EC: start long polling (WOPID) 20 activate C2EC 21 Terminal -> Wallet: (1) scan QR code 22 activate Wallet 23 Wallet -> Wallet: if ToS for Exchange not yet accepted, do here. 24 Wallet -> Wallet: create reserve key-pair 25 Wallet -> C2EC: (2) register reserve public key 26 C2EC -> C2EC: link WOPID to reserve public key 27 C2EC --> Terminal: (3) end long polling (selected) 28 deactivate C2EC 29 User -> Terminal: (4) approve and authorize transaction 30 Terminal -> TerminalBackend: (5) execute transaction 31 TerminalBackend --> Terminal: (6) transaction response (success/failure) 32 Terminal -> C2EC: (7) send confirmation request 33 alt authorization successful 34 C2EC -> TerminalBackend: (8) verify transaction 35 alt payment confirmed 36 C2EC -> C2EC: (9a) confirm withdrawal 37 Exchange -> C2EC: (10) get transaction history 38 Exchange -> Exchange: Create Reserve with amount and reserve public key. 39 Wallet -> Exchange: (11) Withdraw digital cash when reserve is ready 40 deactivate Wallet 41 else payment not confirmed 42 C2EC -> C2EC: (9b) abort withdrawal 43 end 44 else authorization not successful 45 Terminal -> C2EC: abort withdrawal 46 end 47 @enduml