Sepa CT Extension Punto Cliente
Sepa CT Extension El Punto Cliente consiste en Receive Connector con kafka/jms transportes para consumir mensajes ExtensionPointRequest publicados por Sepa CT 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-ct.extension-point
| Key | Description | Default Value |
|---|---|---|
ipf.csm.sepa-ct.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.sepact</groupId>
<artifactId>sepact-csm-extension-point-client-kafka</artifactId>
</dependency>
Property Grouping: ipf.csm.sepa-ct.extension-point.kafka
| Key | Description | Default Value |
|---|---|---|
ipf.csm.sepa-ct.extension-point.kafka.consumer.kafka-clients.group.id |
|
|
ipf.csm.sepa-ct.extension-point.kafka.consumer.restart-settings.max-backoff |
|
|
ipf.csm.sepa-ct.extension-point.kafka.consumer.restart-settings.max-restarts |
|
|
ipf.csm.sepa-ct.extension-point.kafka.consumer.restart-settings.max-restarts-within |
|
|
ipf.csm.sepa-ct.extension-point.kafka.consumer.restart-settings.min-backoff |
|
|
ipf.csm.sepa-ct.extension-point.kafka.consumer.restart-settings.random-factor |
|
|
ipf.csm.sepa-ct.extension-point.kafka.consumer.topic |
|
|
ipf.csm.sepa-ct.extension-point.kafka.producer.kafka-clients.client.id |
|
|
ipf.csm.sepa-ct.extension-point.kafka.producer.restart-settings.max-backoff |
|
|
ipf.csm.sepa-ct.extension-point.kafka.producer.restart-settings.max-restarts |
|
|
ipf.csm.sepa-ct.extension-point.kafka.producer.restart-settings.max-restarts-within |
|
|
ipf.csm.sepa-ct.extension-point.kafka.producer.restart-settings.min-backoff |
|
|
ipf.csm.sepa-ct.extension-point.kafka.producer.restart-settings.random-factor |
|
|
ipf.csm.sepa-ct.extension-point.kafka.producer.topic |
|
Jms Dependencia del Cliente
<dependency>
<groupId>com.iconsolutions.ipf.payments.csm.sepact</groupId>
<artifactId>sepact-csm-extension-point-client-jms</artifactId>
</dependency>
Property Grouping: ipf.csm.sepa-ct.extension-point.jms
| Key | Description | Default Value |
|---|---|---|
ipf.csm.sepa-ct.extension-point.jms.consumer-window-size |
|
|
ipf.csm.sepa-ct.extension-point.jms.failover-timeout |
|
|
ipf.csm.sepa-ct.extension-point.jms.request.queue |
Queue to receive ExtensionPointRequest |
|
ipf.csm.sepa-ct.extension-point.jms.response.queue |
Queue to send ExtensionPointResponse |
|
Cómo Utilizar
Agregue ya sea Kafka or Jms sepact-csm-extension-dependencia de punto-cliente 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. 008 mensaje, necesita crear una clase que implemente MessageHandler interfaz y defínala como spring bean.
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);
}
}
}
Ejemplo de clase que validará NbOfTxs y TtlIntrBkSttlmAmt en Pacs. 008 GroupHeader:
@Component
public class Pacs008FromSchemeMessageHandler implements MessageHandler<SCTFIToFICustomerCreditTransferV08> {
@Override
public CompletionStage<Outcome> handleMessage(ProcessingContext processingContext, SCTFIToFICustomerCreditTransferV08 message) {
BigDecimal ttlAmount = message.getGrpHdr().getTtlIntrBkSttlmAmt().getValue();
BigDecimal transactionAmountsSum = message.getCdtTrfTxInves().stream()
.map(transaction -> transaction.getIntrBkSttlmAmt().getValue())
.reduce(BigDecimal.ZERO, BigDecimal::add);
if (Integer.getInteger(message.getGrpHdr().getNbOfTxs()).equals(message.getCdtTrfTxInves().size())
&& ttlAmount.compareTo(transactionAmountsSum) == 0) {
return CompletableFuture.completedStage(Outcome.accept());
} else {
return CompletableFuture.completedStage(Outcome.reject("IntrBkSttlmAmt doesn't match"));
}
}
@Override
public Class<SCTFIToFICustomerCreditTransferV08> forType() {
return SCTFIToFICustomerCreditTransferV08.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.ct.iso.std.iso._20022.tech.xsd.pacs_002_001_10S2. SCTFITo FIPayment Status Report V10 |
DESDE_ESQUEMA |
Pacs. 004 |
sepa.ct.iso.std.iso._20022.tech.xsd.pacs_004_001_009. SCTPayment Return V09 |
TO_SCHEME/FROM_SCHEME |
Pacs. 008 |
sepa.ct.iso.std.iso._20022.tech.xsd.pacs_008_001_008. SCTFITo FICustomer Credit Transfer V08 |
A_ESQUEMA/A_ESQUEMA |
Pacs. 028 |
sepa.ct.iso.std.iso._20022.tech.xsd.pacs_028_001_003. SCTFITo FIPayment Status Request V03 |
DESDE_ESQUEMA |
Camt. 027 |
sepa.ct.iso.std.iso._20022.tech.xsd.camt_027_001_007. SCTClaim Non Receipt V07 |
DESDE_ESQUEMA |
Camt. 029 |
sepa.ct.iso.std.iso._20022.tech.xsd.camt_029_001_009. SCTResolution Of Investigation V09 |
A_ESQUEMA/A_ESQUEMA |
Camt. 056 |
sepa.ct.iso.std.iso._20022.tech.xsd.camt_056_001_008. SCTFITo FIPayment Cancellation Request V08 |
TO_SCHEME/FROM_SCHEME |
Camt. 087 |
sepa.ct.iso.std.iso._20022.tech.xsd.camt_087_001_006. SCTRequest To Modify Payment V06 |
DESDE_ESQUEMA |