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

# Arquitectura, red y seguridad

> Componentes, responsabilidades, direccionamiento local, configuración inicial y protección de datos.

## Arquitectura

```mermaid theme={"system"}
flowchart TD
    CENTRAL[Sistema central] -->|HTTP local| PINPAD[Pay-me PinPAD]
    PINPAD --> SDK[SDK del P5L]
    SDK --> INTERACTION[Tarjeta o QR]
    SDK --> PLATFORM[Pasarela y procesador]
    CENTRAL -->|GET payments: consulta a pasarela| PINPAD
```

El sistema central inicia todas las llamadas hacia la IP y el puerto configurados en el Wiseasy P5L. Pay-me PinPAD muestra la pantalla de pago, coordina la tarjeta o genera el QR con su transacción pendiente, procesa el pago y devuelve la respuesta cruda del SDK en autorización. La consulta del cobro lee la pasarela; cancelación y extorno usan modelos propios con `status`.

La comunicación de Pay-me PinPAD con el procesador o banco es transparente para el sistema central.

## Responsabilidades

| Componente | Responsabilidades |
| - | - |
| Sistema central del comercio — **cliente HTTP** | Calcular el monto, generar y persistir `operationNumber`, enviar solicitudes, configurar timeouts, interpretar respuestas, recuperar operaciones pendientes y aplicar la decisión de negocio. Puede ser un POS, caja, backend o SCC. |
| Pay-me PinPAD — **servidor HTTP** | Escuchar en la red local, validar el JSON, asegurar idempotencia y exclusión mutua, coordinar la interacción de pago y conservar el resultado por operación. |
| Wiseasy P5L y SDK | Leer tarjeta contactless, chip o banda, capturar PIN cuando corresponda y comunicarse con la plataforma de pagos. No requieren integración directa con el sistema central. |
| Procesador o banco | Aprobar o rechazar la transacción. No tiene una interfaz directa con el sistema central. |

## Requisitos de red

Antes de integrar, verifica lo siguiente:

* El sistema central y el Wiseasy P5L están en la misma red local y existe conectividad entre ambos.
* El punto de acceso no usa **AP Isolation** o **Client Isolation** entre el sistema central y el terminal.
* El puerto TCP configurado en Pay-me PinPAD es accesible desde el sistema central. El valor predeterminado es `8080`.
* El terminal mantiene una IP estable, preferiblemente mediante una reserva DHCP o una dirección estática.
* Las reglas de firewall permiten tráfico desde el sistema central hacia la IP y el puerto del terminal.
* La aplicación Pay-me PinPAD permanece abierta y en estado listo durante la operación.

La URL base sigue este formato:

```text theme={"system"}
http://<IP_DEL_PINPAD>:<PUERTO>
```

Ejemplo:

```text theme={"system"}
http://<IP_DEL_PINPAD>:<PUERTO>
```

<Warning>
  La dirección del ejemplo es ilustrativa. Confirma la IP y el puerto de cada terminal. Si cambia la IP del Wiseasy P5L, actualiza la configuración del sistema central.
</Warning>

### Verificación desde el sistema central

Primero verifica alcance IP y después la aplicación:

```bash theme={"system"}
ping "<IP_DEL_PINPAD>"
curl --header "Connection: close" "http://<IP_DEL_PINPAD>:<PUERTO>/health"
```

Una respuesta válida de la aplicación es:

```json theme={"system"}
{ "status": "UP", "service": "Alignet ECR" }
```

Si `ping` responde pero `GET /health` no, revisa el puerto, el firewall y que Pay-me PinPAD esté abierta. Algunos entornos bloquean ICMP; en ese caso, usa `GET /health` como prueba definitiva de la aplicación.

La [configuración inicial](/procesamiento-fisico/alignet-transit/configuracion#configurar-pay-me-pinpad) se realiza una vez por terminal e incluye la IP, el puerto, la verificación de conectividad y la inyección de llaves.

Todas las respuestas usan `Connection: close`: abre una conexión por petición y no reutilices keep-alive. Usa un timeout superior a aproximadamente 90 segundos en los POST y cubre los 12–15 segundos de la consulta a la pasarela.

## Trazabilidad

Por cada intento, registra únicamente información no sensible:

* `operationNumber`;
* `amount`, `currency` y `paymentMethod` enviados;
* código HTTP recibido;
* `success`, `resultCode`, `resultMessage` y `result.state` o `transaction.state` en cobro;
* `status`, `authorizationCode` y `completedAt` en cancelación o extorno, cuando existan;
* `transactionID` de autorización o `transactionId` y `authorizationCode` de consulta, cuando existan;
* fecha y hora del envío, la respuesta y las consultas;
* timeouts, pérdidas de conexión y reintentos de consulta;
* solicitud de cancelación, cierre visual y consultas posteriores;
* resultado de cancelación y evidencia del extorno CARD independiente, registrados por separado del cobro.

La autorización puede incluir `transactionID`, `paymentMethod`, `stateReason`, `processorResponse` y `lifecycle` dentro de `result`. La consulta devuelve `transaction` y no expone `processorResponse` ni `methodDetail` crudos. Consulta el [contrato por endpoint](/procesamiento-fisico/alignet-transit/respuesta-estados-y-codigos) y sanitiza las evidencias.

## Seguridad y protección de datos

* Mantén la red local controlada y restringe el puerto a los sistemas autorizados mediante segmentación y reglas de firewall.
* No expongas el puerto de Pay-me PinPAD a Internet.
* No incluyas nombres, documentos, placa u otros datos personales dentro de `operationNumber`.
* No registres PAN completo, CVV, PIN, PIN Block, Track 1, Track 2 ni datos EMV sensibles.
* Protege los logs y limita su acceso según la política de retención de tu organización.
* Conserva `operationNumber` y `authorizationCode` para conciliación y comprobantes.

La versión vigente documenta HTTP dentro de la red local y no define headers de autenticación para la interfaz entre el sistema central y Pay-me PinPAD. Consulta [Autenticación y control de acceso](/procesamiento-fisico/alignet-transit/autenticacion) antes de incorporar controles adicionales.


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