cashless2ecash

cashless2ecash: pay with cards for digital cash (experimental)
Log | Files | Refs | README

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