Documentation for a newer release is available. View Latest
Esta página no está disponible actualmente en Español. Si lo necesita, póngase en contacto con el servicio de asistencia de Icon (correo electrónico)

Payment Releaser

Introduction

The IPF Payment Releaser is a core component, designed to be a part of Initiation service. It has three main functions exposed as an API:

  1. Prepare Instruction

  2. Release Instruction

  3. Release Transaction

Its main role is fetching the stored payment details, creating the valid Payment Requests, and sending them to the Execution service.

How it works

Prepare Instruction for Release

Indicates that the Instruction is ready to be released and gives an opportunity for downstream components to initialise before the instructed transactions are triggered for release.

When prepareInstruction is called with an Instruction UnitOfWorkId, the system will retrieve the stored Instruction and send it on to the defined receiving component.

The retrieving component is expected to, but not required to, release the transactions for the Instruction when it is ready

The act of preparation does not trigger the release of the transactions.

This method, if used, should be called in advance of releaseInstruction(UnitOfWorkId). However, it is not a pre-requisite to call this method if there is no preparation to be done; in this case the caller can directly call releaseInstruction(UnitOfWorkId).

Release Instruction (Batch Transaction Release)

To trigger the Instruction (Batch) release process, the client must provide the UnitOfWorkId of the stored Payment Instruction whose child Payment Transactions should be sent for Execution.

Payment details are stored as Initiation (Bulk), Instruction (Batch), and Transaction payment information.

After a trigger containing the Payment Instruction’s UnitOfWorkId is received, Releaser will:

  • Retrieve stored Payment Instruction info

  • Retrieve relevant stored Payment Initiation info

  • Fetch all relevant Payment Transaction infos, and for each of them:

    • Enrich the Transaction info with the additional details from parent Instruction and Initiation info

    • Create a valid Payment Request representing a single Payment Transaction

    • Send the created Payment Request to the Execution Service

    • Store the release progress in the local store, to keep of track how far the releasing process is gone for each instruction being processed

Fetching and processing the relevant Payment Transactions can (and should) be done in configurable sized batches, to have a better performance.

Release Transaction (Single Transaction Release)

To trigger the Transaction release process, the client must provide the UnitOfWorkId of the stored Payment Transaction that should be sent for Execution.

After a trigger containing the Payment Transaction’s UnitOfWorkId is received, Releaser will:

  • Retrieve stored Payment Transaction info

  • Retrieve relevant stored Payment Instruction info

  • Retrieve relevant stored Payment Initiation info

  • Use the retrieved info to create a valid Payment Request representing a single Payment Transaction

  • Send the created Payment Request to the Execution Service

The Releaser expects a Transaction to have a related Instruction and an Initiation in the data store. This is required to create a payment request. See the payment request creator Concept page for further information on Payment Request creation.

Structure

Payment Releaser consists of multiple modules:

  • core module holds data agnostic implementation of releasing functionality

  • datasource module consisting of:

    • datasource-api module which specifies contract for fetching payment information, and

    • datasource-warehouse module with reference implementation, providing payment data from the Payment Warehouse

  • default module holds reference implementation. It uses appropriate ISO 20022 messages, reads payment data from Payment Warehouse, creates and sends pacs.008 Payment Request for the execution