Sepa DD Extension Punto Cliente
Sepa DD Extension El Punto Cliente consiste en Receive Connector con transportes kafka/jms para consumir ExtensionPointRequest mensajes publicados por Sepa DD CSM Service y un Send Connector enviar ExtensionPointResponse. El cliente también se ocupará de aspectos de bajo nivel, como la construcción de mensajes ISO de esquema completo para los cuales el cliente puede implementar un 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. |
|
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 |
|
|
ipf.csm.sepa-dd.extension-point.kafka.consumer.restart-settings.max-backoff |
|
|
ipf.csm.sepa-dd.extension-point.kafka.consumer.restart-settings.max-restarts |
|
|
ipf.csm.sepa-dd.extension-point.kafka.consumer.restart-settings.max-restarts-within |
|
|
ipf.csm.sepa-dd.extension-point.kafka.consumer.restart-settings.min-backoff |
|
|
ipf.csm.sepa-dd.extension-point.kafka.consumer.restart-settings.random-factor |
|
|
ipf.csm.sepa-dd.extension-point.kafka.consumer.topic |
|
|
ipf.csm.sepa-dd.extension-point.kafka.producer.kafka-clients.client.id |
|
|
ipf.csm.sepa-dd.extension-point.kafka.producer.restart-settings.max-backoff |
|
|
ipf.csm.sepa-dd.extension-point.kafka.producer.restart-settings.max-restarts |
|
|
ipf.csm.sepa-dd.extension-point.kafka.producer.restart-settings.max-restarts-within |
|
|
ipf.csm.sepa-dd.extension-point.kafka.producer.restart-settings.min-backoff |
|
|
ipf.csm.sepa-dd.extension-point.kafka.producer.restart-settings.random-factor |
|
|
ipf.csm.sepa-dd.extension-point.kafka.producer.topic |
|
Dependencia del Cliente Jms
<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 |
|
|
ipf.csm.sepa-dd.extension-point.jms.failover-timeout |
|
|
ipf.csm.sepa-dd.extension-point.jms.request.queue |
Queue to receive ExtensionPointRequest |
|
ipf.csm.sepa-dd.extension-point.jms.response.queue |
Queue to send ExtensionPointResponse |
|
Cómo Utilizar
Agregue ya sea Kafka or Jms dependencia sepadd-csm-extension-point-client y ipf-component-store-mongo a su aplicación IPF.
<dependency>
<groupId>com.iconsolutions.ipf.componentstore</groupId>
<artifactId>ipf-component-store-mongo</artifactId>
</dependency>
Validando Mensajes
El Extension El Cliente construirá una representación de objeto java del mensaje ISO a partir de ExtensionPointRequest y los componentes secundarios que se almacenan en ipf-component-store y envíelo a MessageHandler implementación. En caso MessageHandler no está definido para el 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 punto de extensión será el MENSAJE COMPLETO, por ejemplo, para un pacs.002 mensaje esto será todas sus partes constitutivas, incluyendo GrpHdr,OrgnlGrpInfAndSts y todo TxInfAndSts elementos. Así que, además de realizar la validación, puede realizar cualquier operación en 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.002s2 mensaje 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;
}
}
Tipos de mensajes ISO 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_10.SDDFITo FIPayment Status Report V10 |
DESDE_ESQUEMA |
Pacs. 004 |
sepa.dd.iso.std.iso._20022.tech.xsd.pacs_004_001_09.SDDPayment Return V09 |
DESDE_ESQUEMA |
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 |
DESDE_ESQUEMA |
Camt. 056 |
sepa.dd.iso.std.iso._20022.tech.xsd.camt_056_001_08.SDDFITo FIPayment Cancellation Request V08 |
DESDE_ESQUEMA |
Pacs. 007 |
sepa.dd.iso.std.iso._20022.tech.xsd.pacs_007_001_09.SDDFITo FIPayment Reversal V09 |
DESDE_ESQUEMA |