summaryrefslogtreecommitdiff
path: root/contrib/articles/ui/figs/cc3ds.pml
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/articles/ui/figs/cc3ds.pml')
-rw-r--r--contrib/articles/ui/figs/cc3ds.pml95
1 files changed, 95 insertions, 0 deletions
diff --git a/contrib/articles/ui/figs/cc3ds.pml b/contrib/articles/ui/figs/cc3ds.pml
new file mode 100644
index 000000000..2a2ba3c17
--- /dev/null
+++ b/contrib/articles/ui/figs/cc3ds.pml
@@ -0,0 +1,95 @@
+# FROM: https://github.com/w3c/webpayments/tree/gh-pages/PaymentFlows
+
+@startuml
+
+Participant "Payee (Merchant) PSP [Acquirer]" as MPSP
+Participant "Payee (Merchant) [Acceptor] Site " as Payee
+Actor "Payer (Shopper) [Cardholder] Browser" as Payer
+participant "Browser Form Filler" as UA
+participant "Card Scheme Directory" as CSD
+participant "Issuing Bank [Issuer] Website" as CPSPW
+participant "Issuing Bank [Issuer]" as CPSP
+
+note over Payee, Payer: HTTPS
+
+title
+<b>Legacy Merchant Hosted Card Payment with Acquirer Supported 3DS (Current)</b>
+
+<i>3DS is used to add confidence that the payer is who they say they are and importantly in the event of a dispute liability shift to the Issuer.</i>
+end title
+
+== Establish Payment Obligation ==
+
+Payee->Payer: Present Check-out page with Pay Button
+Payer->Payer: Select Card Payment Method
+
+alt
+ UA->Payer: Form Fill
+' Note right: fields are PAN & Expiry Date with optional CVV, & Address, Also Card Valid Date and Issue Number are required for some Schemes
+else
+ Payer->Payer: User Fills Form
+End
+
+== Card Payment Initiation ==
+
+Payer->Payee: Payment Initiation
+' Note right: Custom code on merchant webpage can encrypt payload to reduce PCI burden from SAQ D to SAQ A-EP
+
+opt
+ Payee->Payee: Store Card
+' note right: Merchant can store card details apart from CVV (even if encrypted) for future use (a.k.a. Card on File)
+end
+
+Payee-\MPSP: Authorise
+
+
+== 3DS part of flow ==
+
+' Note over MPSP, Payee: At this point, the Merchant or Merchant's PSP can decide if it wishes to invoke 3DS. This might be based on transaction value (i.e. low value -> low risk) or other factors, e.g. if the Shopper is a repeat purchaser.
+
+ MPSP –> CSD: BIN to URL lookup (VAReq message)
+ CSD -> CSD: Lookup URL from BIN
+ CSD –> CPSPW : “PING”
+ 'note right: verify URL validity
+ CPSPW –> CSD: “PING” response
+ CSD –> MPSP: URL
+
+ MPSP-/Payee: 3DS redirect (PAReq message)
+ Payee->Payer: 3DS redirect (PAReq message)
+ Payer->CPSPW: 3DS invoke
+ CPSPW-\Payer: 3DS challenge
+ Payer-/CPSPW: 3DS response (PARes message)
+ CPSPW->Payer: 3DS response (PARes message)
+ Payer->Payee: 3DS response (PARes message)
+ Payee-\MPSP: 3DS response (PARes message)
+
+ MPSP->MPSP: Verification of PARes signature
+
+== End of 3DS ==
+
+
+MPSP-\CPSP: Authorisation Request
+CPSP-/MPSP: Authorisation Response
+
+MPSP-/Payee: Authorisation Response
+
+== Notification ==
+
+Payee->Payer: Result Page
+
+== Request for Settlement process (could be immediate, batch (e.g. daily) or after some days) ==
+
+Alt
+ Payee -> MPSP : Capture
+'note right: Later Capture may be called, for example after good shipped or tickets pickedup
+Else
+ MPSP -> MPSP : Auto Capture in batch processing at end-of-day
+End
+
+MPSP->CPSP: Capture
+
+== Fulfilment ==
+
+Payee->Payer: Provide products or services
+
+@enduml