CSM Service

Esta sección de la documentación se ocupa de explicar el CSM Service base, de la cual se deriva todo IPF CSM Scheme Packs se construyen. Proporciona la interfaz principal, los tipos de mensajes y los flujos soportados.

En realidad, como usuario de IPF, es más probable que esté interesado en cómo el CSM Services se construyen y comprendiendo la base desde la cual todo CSM Services extender o se implementan. Puede, por supuesto, considerar construir su propio CSM Service implementación utilizando el CSM Service base también, y esta documentación le ayudará a comenzar.

Descripción general

El objetivo de este inicio es contener todo lo que necesita para iniciar un CSM aplicación con CSM API funcionalidad. CSM funcionalidad específica (RT1 o TIPS, por ejemplo) y la asociada send connectors y transportes siguen siendo responsabilidad del CSM aplicación Las páginas secundarias ofrecen más detalles sobre los diversos componentes del CSM Service.

El arrancador comprende un único módulo central que define la recepción y send connectors, y módulos específicos de transporte (kafka y jms) que definen los transportes para estos conectores.

CSM Service Características

La API de CSM receive connectors debe ser habilitado explícitamente. Cuando están habilitados, cualquier conector relacionado (como los conectores de respuesta) también está habilitado.

En su aplicación de csm, deberá elegir qué características de la API de csm habilitar.

Tabla 1. Características de la API de CSM
Característica Propiedad Descripción

Aclarar y Liquidar Acreedor

`csm.clear-and-settle.creditor.enabled

Habilita la claridad y la liquidación receive connector, y send connectors para el acreedor claro y resolver respuesta.

Aclarar y liquidar deudor

`csm.clear-and-settle.debtor.enabled

Habilita la claridad y la liquidación receive connector, y send connectors para deudor claro y resolver respuesta.

Aclarar y Resolver Técnico

`csm.clear-and-settle.technical.enabled

Habilita la claridad y la liquidación receive connector, y send connectors para respuesta técnica.

Aclarar y Liquidar Notifications

`csm.clear-and-settle.notification.enabled`

Habilita la liquidación y el ajuste.receive connector, y send connectors para notificaciones.

Solicitud de Estado

`csm.status-request.enabled`

Habilita la solicitud de estado receive connector, y la respuesta de solicitud de estado send connector.

Solicitud de Estado del Deudor

csm.status-request-debtor.enabled`

Habilita la solicitud de estado del deudor send connector.

Solicitud de Estado del Acreedor

`csm.status-request-creditor.enabled

Habilita la solicitud de estado de acreedor send connector.

Recibir Pago

`csm.receive-payment.enabled

Habilita la recepción de pagos y la recepción de pagos liquidados.send connectors, y la respuesta de pago recibida receive connector.

Revocación - Devolución - Resultado de la Investigación del Acreedor

`csm.rrr.creditor.enabled`

Habilita la RRequest receive connector, y send connectors para el acreedor RResponse.

Revocación - Devolución - Resultado de la Investigación del Deudor

csm.rrr.debtor.enabled`

Habilita la RRequest receive connector, y send connectors para deudor RResponse.

Retorno de Recall - Uso de temas de CT

`csm.rrr.using.clear-and-settle.topics

Apaga los receptores del lado del cliente para que los mensajes rrr sean gestionados por los temas de deudor o acreedor. Depende de que la configuración esté correctamente asignada para el cliente y el servidor. El rrr-deudor utilizará el tema de acreedor, y el rrr-acreedor utilizará el tema de deudor.

Domiciliación Bancaria (Acreedor)

csm.direct-debit.creditor.enabled`

Habilita el envío de domiciliación bancaria y receive connectors (recolectar y liquidar pacs.003, cancelación camt.056, reversión pacs.007)

Respuesta Técnica de Domiciliación Bancaria

`csm.direct-debit.technical.enabled`

Habilita el receive connector y send connectors para respuestas técnicas de domiciliación bancaria.

Puede usar el proporcionado @ConditionOn-Feature-Enabled anotaciones para hacer su beans condicional a estas características. La siguiente configuración le proporcionará una implementación diferente de ``SomeType cuando se habilita la opción de limpiar y resolver.

@Bean
@ConditionalOnClearAndSettleEnabled
SomeType clearAndSettleVersionOfSomeType() {
    return new ClearAndSettleSomeType();
}

@Bean
@ConditionalOnMissingBean
SomeType genericVersionOfSomeType() {
    return new GenericSomeType();
}

Las anotaciones disponibles son:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@ConditionalOnProperty(name = "csm.clear-and-settle.debtor.enabled", havingValue = "true")
public @interface ConditionalOnClearAndSettleDebtorEnabled {
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@ConditionalOnProperty(name = "csm.clear-and-settle.creditor.enabled", havingValue = "true")
public @interface ConditionalOnClearAndSettleCreditorEnabled {
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@ConditionalOnProperty(name = "csm.clear-and-settle.notification.enabled", havingValue = "true")
public @interface ConditionalOnClearAndSettleNotificationsEnabled {
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@ConditionalOnProperty(name = "csm.clear-and-settle.technical.enabled", havingValue = "true")
public @interface ConditionalOnClearAndSettleTechnicalResponseEnabled {
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@ConditionalOnProperty(name = "csm.rrr.creditor.enabled", havingValue = "true")
public @interface ConditionalOnRRRCreditorEnabled {
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@ConditionalOnProperty(name = "csm.rrr.debtor.enabled", havingValue = "true")
public @interface ConditionalOnRRRDebtorEnabled {
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@ConditionalOnProperty(name = "csm.receive-payment.enabled", havingValue = "true")
public @interface ConditionalOnReceivePaymentEnabled {
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@ConditionalOnProperty(name = "csm.status-request.enabled", havingValue = "true")
public @interface ConditionalOnStatusRequestEnabled {
}

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@ConditionalOnExpression("${csm.status-request.enabled:false} || ${csm.status-request-creditor.enabled:false}")
public @interface ConditionalOnStatusRequestCreditorEnabled {
}


@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@ConditionalOnExpression("${csm.status-request.enabled:false} || ${csm.status-request-debtor.enabled:false}")
public @interface ConditionalOnStatusRequestDebtorEnabled {

}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@ConditionalOnProperty(name = "csm.rrr.using.clear-and-settle.topics", havingValue = "false", matchIfMissing = "true")
public @interface ConditionalOnRRRNotUsingCT {
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@ConditionalOnProperty(name = "csm.direct-debit.creditor.enabled", havingValue = "true")
public @interface ConditionalOnDDCreditorEnabled {
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@ConditionalOnProperty(name = "csm.direct-debit.technical.enabled", havingValue = "true")
@interface ConditionalOnDirectDebitTechnicalResponseEnabled {
}

Crypto

La encriptación puede ser habilitada para la API de CSM enviar y receive connectors. La encriptación está desactivada por defecto, y cuando se activa, se deberán proporcionar varias propiedades adicionales.

Cuando la encriptación está habilitada..

  • receive connectors descifrará las cargas útiles de la solicitud si los encabezados de transporte contienen el esquema de cifrado y el alias de la clave. Si los encabezados faltan, la carga útil se tratará como texto sin formato.

  • send connectors siempre enviará cargas útiles cifradas y poblará los encabezados del mensaje de transporte con el esquema de cifrado y el alias de la clave.

Tabla 2. Propiedades de Cifrado
Propiedad Valor por defecto Descripción

`csm.encryption.enabled

false

Cuando se establece en verdadero, será necesario definir las otras propiedades, a menos que tengan un valor predeterminado.

csm.encryption.keystorePath

Requerido cuando la encriptación está habilitada y no debe estar en blanco. Ruta absoluta a un almacén de claves como /tmp/some-keystore.p12`

`csm.encryption.keystoreType`

Requerido cuando la encriptación está habilitada y no debe estar en blanco. Por ejemplo PKCS12

`csm.encryption.keystorePassword`

Requerido cuando la encriptación está habilitada y no debe estar en blanco. Por ejemplo keystore-password`

csm.encryption.keyAlias

Requerido cuando la encriptación está habilitada y no debe estar en blanco. Identifica una clave por nombre dentro del almacén de claves proporcionado. Por ejemplo KEY01

`csm.encryption.scheme

`AES

Requerido cuando la encriptación está habilitada y no debe estar en blanco.

`csm.encryption.transformation`

`AES/CBC/PKCS5Padding`

Requerido cuando la encriptación está habilitada y no debe estar en blanco.

Appendices de Cartas Muertas

Cada API de CSM receive connector puede tener su propia implementación de DeadLetterAppender, que puede ser utilizada para almacenar mensajes malformados en la cola de mensajes muertos. Hay dos interfaces:`CsmCTDeadLetterAppenders` y CsmRMessageDeadLetterAppenders, que proporcionan métodos predeterminados para cada API de CSM receive connector.