Sepa DD Extension Punto Cliente

Sepa DD Extension El Punto Cliente consiste en Receive Connector con kafka/jms transportes para consumir mensajes ExtensionPointRequest publicados por Sepa DD CSM Service y un Send Connector para enviar ExtensionPointResponse. El cliente también se encargará de aspectos de bajo nivel, como la construcción de un mensaje ISO completo para el cual el cliente puede implementar el controlador apropiado.

Configuración

Property Grouping: ipf.csm.sepa-dd.extension-point

Key Description Default Value

ipf.csm.sepa-dd.extension-point.enabled

When enabled, ExtensionPointRequest messages will be processed and ExtensionPointResponse will be sent.

true

Kafka Dependencia del Cliente

<dependency>
    <groupId>com.iconsolutions.ipf.payments.csm.sepadd</groupId>
    <artifactId>sepadd-csm-extension-point-client-kafka</artifactId>
</dependency>

Property Grouping: ipf.csm.sepa-dd.extension-point.kafka

Key Description Default Value

ipf.csm.sepa-dd.extension-point.kafka.consumer.kafka-clients.group.id

"sepa-csm-extension-point-group"

ipf.csm.sepa-dd.extension-point.kafka.consumer.restart-settings.max-backoff

"5s"

ipf.csm.sepa-dd.extension-point.kafka.consumer.restart-settings.max-restarts

5

ipf.csm.sepa-dd.extension-point.kafka.consumer.restart-settings.max-restarts-within

"10m"

ipf.csm.sepa-dd.extension-point.kafka.consumer.restart-settings.min-backoff

"1s"

ipf.csm.sepa-dd.extension-point.kafka.consumer.restart-settings.random-factor

0.25

ipf.csm.sepa-dd.extension-point.kafka.consumer.topic

"SEPA_EXTENSION_POINT_REQUEST"

ipf.csm.sepa-dd.extension-point.kafka.producer.kafka-clients.client.id

"sepa-csm-extension-point-client"

ipf.csm.sepa-dd.extension-point.kafka.producer.restart-settings.max-backoff

"5s"

ipf.csm.sepa-dd.extension-point.kafka.producer.restart-settings.max-restarts

5

ipf.csm.sepa-dd.extension-point.kafka.producer.restart-settings.max-restarts-within

"10m"

ipf.csm.sepa-dd.extension-point.kafka.producer.restart-settings.min-backoff

"1s"

ipf.csm.sepa-dd.extension-point.kafka.producer.restart-settings.random-factor

0.25

ipf.csm.sepa-dd.extension-point.kafka.producer.topic

"SEPA_EXTENSION_POINT_RESPONSE"

Jms Dependencia del Cliente

<dependency>
    <groupId>com.iconsolutions.ipf.payments.csm.sepadd</groupId>
    <artifactId>sepadd-csm-extension-point-client-jms</artifactId>
</dependency>

Property Grouping: ipf.csm.sepa-dd.extension-point.jms

Key Description Default Value

ipf.csm.sepa-dd.extension-point.jms.consumer-window-size

0

ipf.csm.sepa-dd.extension-point.jms.failover-timeout

5000

ipf.csm.sepa-dd.extension-point.jms.request.queue

Queue to receive ExtensionPointRequest

"SEPA_EXTENSION_POINT_RESPONSE"

ipf.csm.sepa-dd.extension-point.jms.response.queue

Queue to send ExtensionPointResponse

"SEPA_EXTENSION_POINT_REQUEST"

Cómo Utilizar

Agregue ya sea Kafka or Jms sepadd-csm-extension-dependencia de point-client y ipf-component-store-mongo a su IPF Application.

<dependency>
    <groupId>com.iconsolutions.ipf.componentstore</groupId>
    <artifactId>ipf-component-store-mongo</artifactId>
</dependency>

Validando Mensajes

El Extension Punto El cliente construirá java representación de objeto del mensaje ISO de ExtensionPointRequest y componentes secundarios que se almacenan en ipf-component-store y envíelo a MessageHandler implementación. En caso de que MessageHandler no esté definido para un mensaje ISO específico, el cliente siempre responderá con un resultado de ACEPTAR.

En caso de que desee validar un pacs. 002 mensaje, debe crear una clase que implemente MessageHandler interfaz y defínala como spring bean.

El mensaje transmitido al manejador de mensajes por el extension El punto será el MENSAJE COMPLETO, por ejemplo, para un pacs. 002 El mensaje incluirá todas sus partes constitutivas, incluyendo GrpHdr, OrgnlGrpInfAndSts y todos los elementos TxInfAndSts. Por lo tanto, además de realizar la validación, puede realizar cualquier operación sobre el mensaje o enviar el mensaje completo a un sistema externo.
public interface MessageHandler<T> {

    CompletionStage<Outcome> handleMessage(ProcessingContext processingContext, T message);
    Class<T> forType();
    Direction forDirection();

    @Getter
    @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
    class Outcome {
        private final ExtensionPointOutcome outcome;
        private final String rejectionReason;

        public static Outcome accept() {
            return new Outcome(ExtensionPointOutcome.ACCEPT, null);
        }

        public static Outcome reject(String rejectionReason) {
            return new Outcome(ExtensionPointOutcome.REJECT, rejectionReason);
        }

    }
}

El siguiente ejemplo realiza la validación en el encabezado del grupo de la pacs. 002 mensaje s2 recibido y si es exitoso, reenvía el contenido del mensaje completo al send connector para el procesamiento por un sistema externo.

@Component
@RequiredArgsConstructor
public class Pacs002FromSchemeMessageHandler implements MessageHandler<SDDFIToFIPaymentStatusReportV10> {

    private final SendConnector<SDDFIToFIPaymentStatusReportV10, SDDFIToFIPaymentStatusReportV10> schemeMessageSendConnector;

    @Override
    public CompletionStage<Outcome> handleMessage(ProcessingContext processingContext, SDDFIToFIPaymentStatusReportV10 message) {
        // Perform message level validation here and then forward the *entire* scheme message (grpHdr and transactions)
        if (message.getGrpHdr().getInstdAgt() == null) {
            return schemeMessageSendConnector.send(message)
                    .thenCompose(ignored -> Outcome.accept());
        } else {
            return CompletableFuture.completedStage(Outcome.reject("InstdAgt is not expected but was provided"));
        }
    }

    @Override
    public Class<SDDFIToFIPaymentStatusReportV10> forType() {
        return SDDFIToFIPaymentStatusReportV10.class;
    }

    @Override
    public Direction forDirection() {
        Direction.FROM_SCHEME;
    }
}

ISO Message type s para los cuales se pueden definir controladores:

Mensaje ISO

Clase Java

Dirección Soportada

Pacs. 002

sepa.dd.iso.std.iso._20022.tech.xsd.pacs_002_001_10S2. SDDFITo FIPayment Status Report V10

DESDE_ESQUEMA

Pacs. 003

sepa.dd.iso.std.iso._20022.tech.xsd.pacs_003_001_08. SDDFITo FICustomer Direct Debit V08

TO_SCHEME/FROM_SCHEME