Fuente de Datos de Pago

La Fuente de Datos de Pago encapsula la funcionalidad para recuperar los detalles de Pago de su ubicación de almacenamiento. Core El Procesador de Entradas de Pago utiliza este componente para acceder a la información de Pago almacenada en el formato deseado.

Fuente de Datos de Pago API

El contrato de la fuente de datos de pago se define formalmente a través de la PaymentDataSource interfaz. Esta interfaz proporciona métodos para recuperar información sobre la Iniciación de Pagos, la Instrucción de Pagos y la Transacción de Pagos, así como para notificar a la Fuente de Datos de Pagos que una Instrucción está 'completa'.

package com.iconsolutions.ipf.core.releaser.loader;

import com.iconsolutions.ipf.core.shared.domain.context.ProcessingEntity;
import com.iconsolutions.ipf.core.shared.domain.context.UnitOfWorkId;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.util.annotation.Nullable;

import java.util.Optional;

public interface PaymentDataSource<INIT, INSTR, TRANS> {

    /**
     * Gets a parent Payment Initiation Mono for the provided unitOfWorkId, if any, empty Mono otherwise
     * This is wrapped in an Optional to allow for scenarios where the Initiation is not required, and then an empty Optional can be returned
     *
     * @param unitOfWorkId unitOfWorkId
     * @param processingEntity denotes the ProcessingEntity the requestor has permission to access.
     * @return Mono with Payment Instruction of type I, or an empty Mono
     */
    Mono<Optional<INIT>> getPaymentInitiation(UnitOfWorkId unitOfWorkId, @Nullable ProcessingEntity processingEntity);


    /**
     * Gets a Payment Instruction Mono for the provided unitOfWorkId, if any, empty Mono otherwise
     *
     * @param unitOfWorkId unitOfWorkId
     * @param processingEntity denotes the ProcessingEntity the requestor has permission to access.
     * @return Mono with Payment Instruction of type I, or an empty Mono
     */
    Mono<INSTR> getPaymentInstruction(UnitOfWorkId unitOfWorkId, @Nullable ProcessingEntity processingEntity);

    /**
     * Gets a Flux of all payment instructions related to instruction unitOfWorkId provided,
     * with an optional offset as a starting point.
     *
     * @param unitOfWorkId of related payment instruction
     * @param processingEntity denotes the ProcessingEntity the requestor has permission to access.
     * @param offset optional unitOfWorkId of the last related transaction being already released
     * @return Flux of Payment Transaction objects
     */
    Flux<TRANS> getPaymentTransactions(UnitOfWorkId unitOfWorkId, @Nullable ProcessingEntity processingEntity, Optional<UnitOfWorkId> offset);

    /**
     * Gets a Mono of the Payment Transaction for the specific unitOfWorkId provided.
     *
     * @param unitOfWorkId of payment transaction
     * @param processingEntity denotes the ProcessingEntity the requestor has permission to access.
     * @return Mono of Payment Transaction object
     */
    Mono<TRANS> getPaymentTransaction(UnitOfWorkId unitOfWorkId, @Nullable ProcessingEntity processingEntity);

    /**
     * Marks the instruction as fully released and enables any necessary clean-up operations.
     *
     * @param instructionUnitOfWorkId the unitOfWorkId of the payment instruction to be marked as 'done' (or released)
     * @return a Mono<Void> that completes when the marking process has been successfully executed
     */
    Mono<Void> markAsDone(UnitOfWorkId instructionUnitOfWorkId);

}

Fuente de Datos del Almacén de Pagos

 Core El Procesador de Entradas de Pago está diseñado con principios de acoplamiento flexible y no depende de ninguna implementación específica de fuente de datos.
Los usuarios de la biblioteca pueden implementar la interfaz anterior para proporcionar cualquier fuente de datos y consumir los datos en consecuencia.

Para su conveniencia, el Procesador de Entradas de Pago ofrece una implementación de referencia de la fuente de datos. Esta implementación recupera información de Pago de la Almacén de Pagos sistema de almacenamiento.