37 lines
1.2 KiB
Promela
37 lines
1.2 KiB
Promela
|
# FROM: https://github.com/w3c/webpayments/tree/gh-pages/PaymentFlows
|
||
|
|
||
|
@startuml
|
||
|
!includeurl https://raw.githubusercontent.com/w3c/webpayments/gh-pages/PaymentFlows/skin.ipml
|
||
|
|
||
|
Database "Invoice Database" as DB
|
||
|
Participant "Payee Website" as Website
|
||
|
Database "Bitcoin Network" as Bitcoin
|
||
|
Participant "Payer Wallet" as Wallet
|
||
|
Actor "Payer (Browser)" as Payer
|
||
|
|
||
|
title Bitcoin Payment Protocol (BIP70)
|
||
|
|
||
|
Payer->Website: Request checkout with Bitcoin
|
||
|
Website->Website: Generate Bitcoin address
|
||
|
Website->DB: Store invoice details
|
||
|
Website->Payer: Basket Page with bitcoin: pay link
|
||
|
Payer->Payer: Click bitcoin: link
|
||
|
Payer->Wallet: Wallet handles bitcoin: URL and extracts invoice URL
|
||
|
Wallet->Website: Request invoice
|
||
|
Website->DB: Get invoice details
|
||
|
Website->Website: Create PaymentDetails (Amount, Memo, Ref#, Pay URL)
|
||
|
Website->Website: Create PaymentRequest (Signed PaymentDetails)
|
||
|
Website->Wallet: PaymentRequest containing PaymentDetails
|
||
|
Wallet->Payer: Confirm payment details?
|
||
|
Payer->Wallet: Accept payment
|
||
|
Wallet->Wallet: Generate and sign payment
|
||
|
Wallet->Website: Signed payment
|
||
|
Website->Bitcoin: Submit payment
|
||
|
Website->Wallet: Payment ACK
|
||
|
Wallet->Payer: Confirm payment is complete
|
||
|
loop until payment is confirmed
|
||
|
Bitcoin->Website: Latest confirmed transactions
|
||
|
end
|
||
|
|
||
|
|
||
|
@enduml
|