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
CustomerCreditTransferInitiation
message) 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...