File: /var/www/middleware-citas-dev/FLUJO_PAGO.md
# Flujo de Pago - Integración Odoo + Toku
## Resumen
El usuario llena un formulario de cita en la página de Odoo, presiona el botón de pagar (un bloque de código insertado que envía todos los datos del formulario por query params a nuestro middleware) y desde acá se gestiona el pago con Toku y la creación de la cita en Odoo.
## Flujo paso a paso
### 1. Formulario en Odoo → `/toku-redirect`
- El usuario completa el formulario de postulación/cita en Odoo (datos del postulante, apoderado, nivel, etc.)
- Al presionar "Pagar", un bloque de código JS insertado en Odoo redirige al usuario a `/toku-redirect` con todos los datos del formulario como query params.
- La vista de "Redireccionando a Toku..." se muestra **inmediatamente**.
### 2. `buildPaymentUrl()` — Armar sesión de pago
- La vista hace un fetch AJAX a `/payment/build-url` pasando los mismos params.
- El controller recibe los datos, los valida, y llama a la API de Toku para crear un Checkout Session.
- Toku responde con la URL de pago.
- El frontend redirige al usuario a esa URL para que pague.
### 3a. Pago exitoso → `/pago-exitoso`
- Toku redirige al usuario de vuelta a `/pago-exitoso` con los datos del pago.
- El controller:
- Crea la cita asociada a los datos del formulario vía API en Odoo.
- Arma un PDF con el comprobante de pago para descarga.
- Muestra al usuario los datos de su pago y la confirmación de la cita.
### 3b. Pago fallido → `/pago-fallido`
- Toku redirige al usuario a `/pago-fallido` con el detalle del error.
- Se muestra el error al usuario.
## Rutas
| Ruta | Método | Descripción |
|------|--------|-------------|
| `/toku-redirect` | GET | Vista de carga + recibe params de Odoo |
| `/payment/build-url` | GET | AJAX: construye la URL de Checkout Session de Toku |
| `/pago-exitoso` | GET | Callback éxito: crea cita en Odoo + muestra comprobante |
| `/pago-fallido` | GET | Callback fallo: muestra error al usuario |