> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Conectar un motor

> Qué cambia e implementa el equipo de cada motor de core bancario para trabajar detrás de JD Courier, en el riel SPB y en el riel Pix.

Esta página es para el equipo de cada motor que trabaja detrás del Courier: tu core actual y el stack de Lerian. Primero, un operador registra el motor en el Courier, a través de la [API de motores](/es/reference/interfaces/jd-courier/register-an-engine). El registro guarda los ISPBs participantes del motor y, para Pix, la dirección en la que el motor recibe las llamadas Pix.

## SPB: apunta el motor al Courier

***

En el riel SPB, el Courier sirve la misma interfaz SOAP que JD. Un motor que ya habla con JD cambia la dirección y la credencial del canal. Mantiene sus mensajes y sus llamadas.

El rol `spb-sender` sirve la interfaz en la ruta `/soap`, en su propio puerto (predeterminado `8081`). Acepta las cuatro operaciones de JD:

| Operación | Qué hace el Courier |
| - | - |
| `RecebeMensagem` | Le da al motor el mensaje SPB más antiguo que lo espera. Cuando ninguno espera, responde con el código de cola vacía `ALS01`. El Courier no llama a JD. |
| `EnviaMensagem` | Escribe el envío en el registro de envíos, envía el mensaje a JD una vez y reenvía la respuesta de JD. |
| `ConsultaNumCtrlIF` | Reenvía la consulta a JD, para los números de control de los envíos que este motor hizo a través del Courier. |
| `ConsultaMensagem` | Reenvía la consulta a JD, para los números de secuencia de los mensajes de este motor. |

Cada motor se autentica en la dirección SOAP del Courier con su propia credencial de canal, no con tu credencial JD. Un operador emite la credencial a través de la API del Courier. La respuesta muestra la contraseña una vez. Guárdala en ese momento.

Cuando emites una nueva credencial para el mismo motor, la anterior sigue funcionando durante una ventana de superposición (24 horas de forma predeterminada) y después deja de funcionar. Un operador puede revocar una credencial en cualquier momento. El Courier reenvía cada envío a JD con tu credencial JD. Una autenticación rechazada recibe 401 sin cuerpo.

### Antes de que el motor cambie su dirección

1. Vacía el pendiente de conciliación del motor con JD. El Courier responde una consulta solo para los envíos y los mensajes que pasaron por él. Una consulta sobre un envío anterior recibe `503`.
2. Pide al operador que emita la credencial del canal del motor.
3. Cambia la dirección y la credencial JD del motor por los valores del Courier.

### Qué recibe el motor

Un mensaje reentregado mantiene su número de secuencia original (`NumCabSeq`). El motor debe aceptar un número de secuencia repetido como una repetición, no como un mensaje nuevo.

El Courier da estas respuestas a `EnviaMensagem`:

| Respuesta | Significado |
| - | - |
| La respuesta de JD, tal como llegó | JD respondió. |
| La respuesta de JD con el encabezado `X-Send-Outcome: indeterminate` | JD falló o respondió sin un veredicto. El mensaje posiblemente llegó a JD. |
| `503` con `X-Send-Outcome: indeterminate` y `X-Control-Id` | El mensaje salió y no volvió ninguna respuesta. Posiblemente llegó a JD. |
| `503` con `X-Send-Outcome: duplicate` | El número de control ya tiene un envío. El Courier no envió el mensaje. |
| `503` sin `X-Send-Outcome` | El mensaje no llegó a JD. |

Después de un envío indeterminado, consulta el número de control con `ConsultaNumCtrlIF`. Una respuesta final de JD resuelve el envío en el registro. No envíes el mensaje de nuevo con el mismo número de control: el Courier lo rechaza. Cuando cada envío anterior del número de control tiene el resultado `NOT_SENT`, el Courier responde la consulta con el código JD `ALN01`, y no reenvía la consulta.

## Pix: recibe las llamadas de JD

***

En el riel Pix, el Courier entrega cada llamada entrante a la dirección Pix del motor dueño. El motor sirve las mismas rutas que JD llama, para la validación de cuenta, el cash-in, la devolución y las llamadas de Pix Automático.

### Cómo llama el Courier al motor

* El Courier agrega la ruta de la llamada de JD a la dirección Pix del motor. Usa el mismo método.
* El cuerpo es el cuerpo que JD envió, byte a byte.
* El Courier reenvía estos encabezados cuando JD los envía: `Chave-Idempotencia`, `X-DataHoraEvento`, `X-NomeEvento` y `Content-Type`.
* El Courier espera la respuesta hasta 60 segundos. Lee hasta 1 MiB de la respuesta.
* El Courier no sigue redirecciones.

Para entregar los mensajes Pix, el Courier llama a la dirección Pix que registras para cada motor. Registra una credencial para cada motor: entonces, el Courier envía un token de Access Manager con cada llamada. Sin una credencial, el Courier llama al motor sin autenticación. En producción, usa una dirección https. Registrar una dirección Pix requiere el permiso `pix-delivery:write`.

El client ID y el secret del motor están en AWS Secrets Manager. Consulta [Despliegue](/es/interfaces/jd-courier/jd-courier-deployment#pix).

### Cómo lee el Courier la respuesta

El Courier reenvía a JD la respuesta del motor. Para un mensaje, el estado decide qué pasa después:

| Estado del motor | Resultado |
| - | - |
| `5xx`, `408`, `429` | El Courier reenvía la respuesta a JD y retiene el mensaje. El siguiente reenvío de JD llega de nuevo al motor. |
| `3xx`, `401`, `403` o ninguna respuesta | JD recibe `503`, y el Courier retiene el mensaje. |
| Cualquier otro estado, por ejemplo `200`, `400` o `422` | El mensaje se entrega. El Courier guarda la respuesta y se la da a JD en cada reenvío. |

Un estado de la última fila es final. Para que JD envíe el mensaje de nuevo, responde con un estado de la primera fila.

El motor puede recibir el mismo mensaje más de una vez. Por ejemplo, el Courier llama al motor de nuevo después de un timeout. Usa los identificadores que JD envía, como `Chave-Idempotencia`, para reconocer una repetición.

## Llamadas que el motor hace al Courier

***

El rol `admin` sirve tres operaciones para los motores.

Cada motor llama a la API de titularidad con su propia aplicación de Access Manager. La aplicación necesita el permiso `ownership:read`, y `ownership:write` para reclamar sus propias recurrencias de Pix Automático y declarar sus etapas de pago. El Courier responde 401 a cualquier otro llamador.

### Consulta de titularidad

Antes de que el motor liquide un pago dentro de tu institución, debe saber qué motor es dueño del destino. Llama a la [consulta de titularidad](/es/reference/interfaces/jd-courier/resolve-which-engine-owns-a-key) con la clave como la guardas. La respuesta dice si la clave tiene un dueño, y si ese dueño es el motor que hizo la llamada.

La respuesta es definitiva:

* `200` con `resolved: true` nombra al dueño.
* `200` con `resolved: false` significa que ningún motor de tu institución es dueño de la clave.
* `422` significa que la clave no es válida.
* Trata cualquier otro estado como un rechazo: falla el pago y no lo liquides dentro de tu institución.

### Reclamación de recurrencia de Pix Automático

Cuando el motor autoriza una recurrencia de Pix Automático, [reclama la recurrencia](/es/reference/interfaces/jd-courier/claim-a-pix-automatico-recurrence-for-the-calling-engine). Entonces, el Courier enruta al motor las llamadas de agendamiento de esa recurrencia. La reclamación es idempotente. Una recurrencia que tiene otro motor recibe `409 JDC-0102`. Solo un operador puede moverla.

Antes de que el Courier empiece a recibir Pix, cada motor reclama las recurrencias que ya existen. Un mensaje de agendamiento para una recurrencia sin dueño queda retenido hasta que llega la reclamación. Una validación de agendamiento para esa recurrencia recibe `503`.

### Declaración de etapa de Pix Automático

Algunas llamadas de Pix Automático siguen una etapa anterior del mismo pago. Un débito y una reversión del débito van al motor que recibió el bloqueo del débito. Un estado de cancelación del agendamiento va al motor que tiene el agendamiento.

Antes de que el Courier empiece a recibir Pix, cada motor [declara las etapas que tiene](/es/reference/interfaces/jd-courier/declare-an-earlier-leg-of-a-pix-automatico-payment-the-calling-engine-holds) para los pagos en curso:

* `block`: cada bloqueo del débito que el motor aceptó, cuando el débito o su reversión todavía no llegó.
* `schedule`: cada agendamiento cuyo estado de cancelación todavía no llegó.

Una llamada que llega antes de que se declare su etapa queda retenida. El Courier la libera después de la declaración. Una declaración que entra en conflicto con el registro del Courier recibe `409 JDC-0116`. Detente e informa a un operador.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.