Flujo de pago
El canal externo gestiona el pago por su cuenta (pasarela propia). beTickets actúa como backend de inventario y fulfillment: recibe la notificación del pago y ejecuta el cierre de la orden.
Flujo B2B
- El widget gestiona selección de asientos y carrito.
- El host escucha
onOrderUpdate(order)y habilita su botón de pago cuando hay items. - El host llama
instance.startCheckout()o inicia su propio flujo de pago. - El canal procesa el pago con su pasarela.
- El canal notifica el resultado a beTickets con
confirm-payment. - beTickets cierra la orden: asientos vendidos, tickets enviados por email.
Endpoint de confirmación de pago
http
POST /sales-channel/v1/{salesChannelSlug}/{lang}/orders/{orderToken}/confirm-payment
Authorization: Bearer {access_token}
Content-Type: application/json
{
"transaction_id": "ext_12345",
"amount": 125.50,
"payment_method": "card"
}| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
transaction_id | string | Sí | Referencia de la pasarela del canal (para auditoría) |
amount | number | Sí | Importe cobrado. Debe coincidir con total_amount de la orden |
payment_method | string | No | Descripción del método: card, transfer, etc. |
Respuesta en caso de éxito:
json
{
"success": true,
"data": {
"order_id": 123,
"status": "completed"
},
"message": "Pago confirmado correctamente"
}Qué ejecuta este endpoint
Idéntico al webhook de Redsys interno:
- Valida que el
amountdeclarado coincide con el total de la orden (tolerancia ±0.01€). - Transacción DB:
- Orden →
completed,order_tokenanull. - Crea registro
OrderPaymentcon la referencia externa. - Session seats →
sold. - Order items →
confirmed. - Suscribe al comprador a la lista del evento (si procede).
- Orden →
- Post-pago (no bloquea la respuesta):
- Canjea tarjetas regalo aplicadas.
- Activa y envía tarjetas regalo compradas.
- Genera PDFs de tickets y los envía por email al comprador.
Idempotencia
Si la orden ya está en estado completed, el endpoint devuelve 200 sin reejecutar el proceso.
Errores posibles
| HTTP | Descripción |
|---|---|
401 | Bearer token inválido o expirado |
403 | El token no corresponde al salesChannelSlug de la URL |
404 | Orden no encontrada para ese canal y orderToken |
422 | Importe no coincide, orden en estado inválido, o validación fallida |
Endpoint de pago directo taquilla
http
POST /portal/{salesChannelSlug}/{lang}/orders/{orderToken}/completeUso exclusivo de taquilla física (efectivo/tarjeta física). No aplica al canal web externo.