Implementación

Para construir su implementación del Procesador de Entradas de Pago, deberá crear sus propias implementaciones concretas de clases e interfaces abstraídas.

Importar Dependencias

Añada el payment-releaser-core artefacto a su pom.xml dependencias.

<dependency>
    <groupId>com.iconsolutions.ipf.core.releaser</groupId>
    <artifactId>payment-releaser-core</artifactId>
</dependency>

Implementaciones

Las siguientes abstracciones deben ser implementadas:

  1. PaymentDataSource<INIT, INSTR, TRANS> interfaz

  2. InstructionSender<INSTR> interfaz

  3. ProcessingRequestCreator<INIT, INSTR, TRANS, PAY_REQ> interfaz

  4. RequestProcessor<REQ> interfaz

  5. ProcessingStrategy<INIT, INSTR, TRANS, REQ> interfaz

Una visión general de estas interfaces se describe en Características.

Todo lo anterior necesita ser cableado como Spring Beans, además de:

  1. PaymentEntriesProcessingServiceImpl, o un custom implementación del PaymentEntriesProcessingService interfaz.

  2. InstructionPreparationServiceImpl <INIT extends PaymentInitiation<?>, INSTR extends PaymentInstruction<?>, TRANS extends PaymentTransaction<?>>, o un custom implementación de la InstructionPreparationService interfaz.

  3. InstructionProcessingCompletionServiceImpl<INIT extends PaymentInitiation<?>, INSTR extends PaymentInstruction<?>, TRANS extends PaymentTransaction<?>>, o un custom implementación de la InstructionProcessingCompletionService interfaz.

La implementación de un ProcessingStrategy facilita la cancelación y liberación de pagos almacenados. Estrategia de Procesamientoproporciona orientación sobre el uso de la ProcessingActionType, y el Ejemplo de Creador de Solicitudes y Ejemplo de Procesador de Solicitudes secciones proporcione más orientación sobre cómo podría ser la implementación de esto.

Almacén como Fuente de Datos

Esta sección detalla los pasos a seguir si usted desea utilizar el Almacén de Pagos como su fuente de datos en lugar de implementar la suya propia custom fuente de datos. Ver Fuente de Datos del Almacén de Pagos para más información.

Este módulo proporciona dos implementaciones abstractas de la PaymentDataSource<INIT, INSTR, TRANS> interfaz,AggregateEntriesWarehouseDataSource y LatestEntryWarehouseDataSource, que se comportan de manera diferente. Para ayudarle a decidir cuál le conviene más, puede encontrar detalles adicionales en Almacenamiento y Lectura de Información de Pago página.

Uso de la Fuente de Datos de Entradas Agregadas

Si decide utilizar el AggregateEntriesWarehouseDataSource, deberá implementarlo con los tipos apropiados y conectar la implementación como un Spring Bean.

Además, suministrando lo siguiente funciones de agregación es parte del procesamiento de una transacción; estos deberán ser transferidos como Spring Beans:

  1. Agregador de iniciación:`Function<List<PaymentEntry>, MyPaymentWarehouseInitiation>`

  2. Agregador de instrucciones:`Function<List<PaymentEntry>, MyPaymentWarehouseInstruction>`

  3. Agregador de transacciones:`Function<List<PaymentEntry>, MyPaymentWarehouseTransaction>`

El agregador de Iniciación es opcional (y puede omitirse), mientras que el agregador de Instrucción y el agregador de Transacción son obligatorios.

Importar Dependencias

Añada el payment-releaser-data-source-warehouse artefacto a su pom.xml dependencias.

<dependency>
    <groupId>com.iconsolutions.ipf.core.releaser</groupId>
    <artifactId>payment-releaser-data-source-warehouse</artifactId>
</dependency>

Conecte el Punto de Entrada

El punto de entrada al sistema es el AkkaPaymentEntriesProcessor clase que implementa el PaymentEntriesProcessor interfaz. Debe declarar un Spring Bean de esta clase en su aplicación. El AkkaPaymentEntriesProcessor Los argumentos del constructor son los especificados anteriormente en este documento.

@Bean
public PaymentEntriesProcessor paymentEntriesProcessor(
        ActorSystem<?> actorSystem, (1)
        PaymentEntryProcessorProperties paymentEntryProcessorProperties, (2)
        PreparerProperties preparerProperties, (3)
        InstructionPreparationService instructionPreparationService, (4)
        PaymentEntriesProcessingService paymentEntriesProcessingService) { (5)
    return new AkkaPaymentEntriesProcessor(
                actorSystem,
                paymentEntryProcessorProperties,
                preparerProperties,
                instructionPreparationService,
                paymentEntriesProcessingService);
    }
  1. El ActorSystem proporcionado por su IPF application

  2. Suministrado como un Spring Bean en el módulo de liberación de pagos-core

  3. Suministrado como un Spring Bean en el módulo de liberación de pagos-core

  4. Especificado arriba

  5. Especificado arriba