3. Payment initiation
- The Participant initiates the payment transaction off-chain via a Web UI. The payment request is handled by a web server on the Participant’s node of the Corda business network and sent via Corda RPC to the custom Payment CorDapp installed on the Participant’s node.
- The Participant’s request is accepted by the CorDapp on the Participant’s node and is transformed to a payment instruction formatted according to the industry-accepted payment standard (ISO 20022 formatted XML representing a
CustomerCreditTransferInitiationmessage) to be passed to Gevamu Payments SDK. Gevamu Payments SDK pre-validates the payment instruction and creates a state (or several states if multiple payments are instructed) with an attachment containing the original payment instruction. Every single payment gets it's own unique ID (UUID), which can be used to find it, if necessary. - The payment instruction is sent to Gevamu Payments Gateway.
- The Gevamu Payments Gateway validates the payment instruction.
The Payments Gateway checks if the Participant is authorized to submit this payment request, validating the payment instruction from the following aspects:- Node Identity – whether a payment request is received from the node that initially registered the Participant initiating the request.
- Participant ID – whether the Participant is registered with the Payments network and if Participant ID is registered to the Participant’s node.
- If valid, the Payment Gateway sends the payment instruction to the external gateway of the PSP, updates the status of the payment instruction to Sent to Gateway and communicates it to the Participant.
If not valid, a corresponding status is sent back to the Participant’s CorDapp. - After the payment instruction is received by the PSP, it will return one of the following payment status:
- Pending
- Accepted
- Rejected
- Once the PSP replies to the payment request, the returned payment status is propagated back to the Participant’s node. The updated status is made available as a new Corda state in the payment statuses chain.
- The participant’s CorDapp may opt to subscribe to the payment state updates to be notified on Payment processing progress.
---
title: Initiate Payment
---
sequenceDiagram
%% Participants
participant pn as Participant Node
participant gpg as Gevamu Payment Gateway
participant psp as PSP/Bank
pn ->> pn: Receive Payment instruction, <br/> transform into ISO 20022 formatted XML
pn ->> pn: SDK prevalidates XML
%%prevalidation by SDK
pn ->> pn: Create Corda state
pn ->> gpg: Payment request
gpg ->> gpg: Validate payment request <br/> (check node and Participant identity)
%% after validation by Gateway
gpg ->> psp: Payment instruction
gpg ->> pn: Update Corda state <br/> Payment Status: Sent to Gateway
%% Pending Status by PSP
alt PSP sets Payment status as Pending
psp ->> gpg: Payment Status: Pending
gpg ->> pn : Update Corda state <br/> Payment Status: Pending
%% Request has been processed by PSP
else PSP processes Payment Instruction
psp ->> gpg: Payment Status: Accepted/Rejected
gpg ->> pn : Update Corda state <br/> Payment Status: Accepted/Rejected
end Mermaid diagram is loading...