@startuml
autonumber

Actor "Payer (Shopper) Browser" as Payer
Participant "Payee (Merchant) Site" as Payee
Participant "Taler Exchange" as Exchange

note over Payer, Payee: Tor/HTTPS
note over Payee, Exchange: HTTP/HTTPS

title Taler (Payment)

== Request Offer ==

Payer->Payee: Choose goods by navigating to offer URL

Payee->Payer: Send signed digital contract proposal

opt
Payer->Payer: Select Taler payment method (skippable with auto-detection)
end

== Execute Payment ==

opt
Payer->Payer: Affirm contract
end

Payer->Payee: Navigate to fulfillment URL

Payee->Payer: Send hash of digital contract and payment information

Payer->Payee: Send payment

Payee->Exchange: Forward payment

Exchange->Payee: Confirm payment

Payee->Payer: Confirm payment

== Fulfilment ==

Payer->Payee: Reload fulfillment URL for delivery

Payee->Payer: Provide product resource

@enduml