Utilice el CSM Service Biblioteca del Cliente
Esta guía explicará cómo llamar al CSM Service from an IPF flow(o cualquier otra pieza de software) utilizando el preconstruido CSM Service Biblioteca del Cliente.
Propósito
Todo IPF CSM Services implemente los diversos pagos de IPF APIs como se documenta en APIs, como:
-
Aclarar y Liquidar
-
Recibir Pago
-
Enviar Recordatorio a CSM
Y así sucesivamente.
El CSM Service La biblioteca del cliente agrupa los siguientes componentes para facilitar el desarrollo para IPF flow desarrolladores:
-
Definiciones de API
-
Kafka y JMS enlaces para la comunicación entre el IPF flow y el CSM Service
-
Interfaces predeterminadas para enviar mensajes a la CSM service
-
Interfaces predeterminadas para recibir mensajes de la CSM service
Pasos
A continuación se presenta cómo comenzar a llamar al cliente. API.
Paso 1: Agregue la dependencia
La dependencia que usted utiliza depende de qué enlaces de transporte desea utilizar.
Estas dependencias están todas disponibles como parte de la ipf-bom. Si usted está utilizando esto, no necesita especificar ninguna versión ya que recibirá el CSM Versión de la biblioteca inicial del cliente que ha sido validada para el ipf-bom en uso.
|
| Tipo de transporte | Dependencia |
|---|---|
Kafka |
<dependency>
<groupId>com.iconsolutions.ipf.payments.csm</groupId>
<artifactId>csm-client-starter-kafka</artifactId>
</dependency>
|
JMS |
<dependency>
<groupId>com.iconsolutions.ipf.payments.csm</groupId>
<artifactId>csm-client-starter-jms</artifactId>
</dependency>
|
Ambos |
<dependency>
<groupId>com.iconsolutions.ipf.payments.csm</groupId>
<artifactId>csm-client-starter-all</artifactId>
</dependency>
|
Paso 2: Recepción: Cree un CSM Implementación de la Biblioteca del Cliente
Para que el Spring Boot AutoConfigurar para csm-client-starter-* realizar todo el cableado relevante, el Contexto de Spring
debe tener implementaciones de las siguientes interfaces antes de que se habilite cualquier cosa:
-
com.iconsolutions.instantpayments.api.csm.ct. CSMCTClientAdapter: Vínculos de cliente para operaciones de transferencia de crédito -
com.iconsolutions.instantpayments.api.csm.rrr. CSMRClientAdapter: Vínculos de cliente para operaciones de recuperación/devolución/resolución -
com.iconsolutions.instantpayments.api.csm.validate. CSMClientValidationResponseAdapter. Esto proporciona al Cliente las vinculaciones para las operaciones de validación de estilo de transferencia de crédito. Opcional, sin ello la operación de validación será manejada por el obsoletohandleSchemeRuleResponsesmétodo del CSMCTClient Adapter.
O alternativamente, si interactúa con un Débito Directo CSM Service:
-
com.iconsolutions.instantpayments.api.csm.dd. CSMDDClientAdapter: Vínculos de cliente para operaciones de débito directo -
com.iconsolutions.instantpayments.api.csm.validate.dd. CSMDDClientValidationResponseAdapterVínculos de cliente para operaciones de débito directo
Esta implementación necesitaría ser un Spring bean también. Por lo tanto, la implementación más sencilla para activar el CSM Las bibliotecas del cliente serían:
import com.iconsolutions.instantpayments.api.csm.ct. CSMCTClientAdapter;
import com.iconsolutions.instantpayments.api.csm.rrr. CSMRClientAdapter;
import org.springframework.stereotype. Component;
@Component (1)
public class MyCsmCTClientAdapter implements CSMCTClientAdapter, CSMRClientAdapter { (2)
}
| 1 | Definiéndolo como un Spring bean |
| 2 | Implementando tanto las interfaces CT como R |
Tenga en cuenta que no es necesario implementar ninguna interfaz para poner en funcionamiento la aplicación. Las implementaciones predeterminadas
lanzará una excepción si de alguna manera termina recibiendo un mensaje y no ha implementado esa interfaz. Por ejemplo,
si observamos la implementación predeterminada de ReceivePaymentRequest:
default CompletionStage<Void> handleReceivePayment(ReceivingContext receivingContext, ReceivePaymentRequest receivePaymentRequest) {
throw new IconRuntimeException("Please implement the CSMClientAdapter's handleReceivePayment");
}
La implementación depende de lo que usted desee hacer con el mensaje, pero esto típicamente implicaría llamar a un IPF flow
usando el XxxDomain métodos estáticos, tales como:
@Override
public CompletionStage<Void> handleReceivePayment(ReceivingContext receivingContext, ReceivePaymentRequest receivePaymentRequest) {
var txId = request.getPayload().getContent().getCdtTrfTxInf().get(0).getPmtId().getTxId();
log.debug("Received payment request {} with context {}", request.getRequestId(), request.getProcessingContext());
return CredittransferDomain.initiation().handle(
new InitiateCreditorCTInput. Builder()
.withCustomerCreditTransfer(request.getPayload().getContent())
.withProcessingContext(receivingContext.getProcessingContext())
.build())
.thenApply(result -> null);
}
Paso 3: Envío: Transfiera una instancia de CSMCTAdapter y CSMRadapter para enviar mensajes
El CSM Service implementa los conectores sobre JMS/Kafka usando CSMCTAdapter(para enviar mensajes del tipo Transferencia de Crédito)
y opcionalmente CSMRAdapter(para el envío de conectores de tipo R-message) y CSMDDAdapter(para el envío de mensajes de tipo Domiciliación Bancaria).
Para enviar un mensaje a la CSM, por ejemplo, un mensaje ClearAndSettle (pacs. 008):
import com.iconsolutions.instantpayments.api.csm.ct. CSMCTAdapter;
import lombok. AllArgsConstructor;
@AllArgsConstructor
public class MyCSMAdapter {
private final CSMCTAdapter csmAdapter;
@Override
public CompletionStage<Void> execute(ClearAndSettleAction action) {
// client can provide its own customBusinessData, this is just an example
var customBusinessData = SupportingContext.of("ActionNames", action.getActionName())
.withContextProperty("flowType", "DEBTOR")
.mergedWith(SupportingContext.ofHeaders(
Map.of("ProcessingEntity", action.getProcessingContext().getProcessingEntity().getValue()))
);
return csmAdapter.clearAndSettle(ClearAndSettleRequest.builder()
.requestId(action.getId())
.processingContext(action.getProcessingContext())
.version(new Version(1, 0, 0))
.createdAt(Instant.now())
.payload(new Payload<>(action.getCustomerCreditTransfer(), null))
.customBusinessData(customBusinessData)
.ipfId(action.getId())
.build())
.thenAccept(deliveryReport -> log.debug("ClearAndSettleAction completed with {}", deliveryReport));
}
}
Paso 4: Customize Configuración
El CSM La Biblioteca del Cliente utiliza una multitud de enviar y receive connector s para hablar con el objetivo CSM Service.
Por defecto, todos los conectores simplemente heredan los valores predeterminados de ipf.connector.default-send-connector y ipf.connector.default-receive-connector.
Puede anular los valores predeterminados y customize cada uno de los conectores por separado añadiendo la configuración bajo las rutas raíz de configuración específicas del conector en la configuración de su aplicación.
Los caminos para cada conector se enumeran a continuación.
La estructura que cada conector espera se puede ver aquí.
Conectores del Servicio de Transferencia de Crédito (CT)
Send Connector s:
| Nombre del conector | Ruta Raíz de Configuración |
|---|---|
CSMClear And Settle Send |
|
CSMRecibir Respuesta De Pago Enviar |
|
CSMSend Information Request To CSMSend |
|
enviar Respuesta De Solicitud De Información ACSMEnviar Conector |
|
enviar Respuesta Solicitud Información Adicional CSMSend Connector |
|
CSMCreditor Request To Pay Request Send |
|
CSMDebtor Request To Pay Response Send |
|
CSMRecibir Estado De Pago Respuesta Enviar |
|
CSMSlow Receive Payment Response Send |
|
CSMStatus Request Send |
|
CSMCreditor Status Request Send |
|
CSMDebtor Validation Send |
|
CSMCreditor Validation Send |
|
Receive Connector s:
| Nombre del conector | Ruta Raíz de Configuración |
|---|---|
ClearAndSettleCSMToDebtorReceiveConnector |
|
clearAndSettleCSMToCreditorReceiveConnector |
|
NotificacionesRecibirConector |
|
ClearAndSettleTechnicalResponseReceiveConnector |
|
Conectores de Servicio de Recall/Devolución/Resolución (RRR)
Send Connector s:
| Nombre del conector | Ruta Raíz de Configuración |
|---|---|
sendDebtorRRRRequestToCsm |
|
sendDebtorRRRResponseToCsm |
|
sendCreditorRRRRequestToCsm |
|
sendCreditorRRRResponseToCsm |
|
Receive Connector s:
| Nombre del conector | Ruta Raíz de Configuración |
|---|---|
RRRCSMTo Deudor Recibir Conector |
|
RRRCSMTo Creditor Receive Connector |
|
Conectores del Servicio de Domiciliación Bancaria (DD)
Send Connector s:
| Nombre del conector | Ruta Raíz de Configuración |
|---|---|
|
|
Receive Connector s:
| Nombre del conector | Ruta Raíz de Configuración |
|---|---|
|
|