Skip to content

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

  1. El widget gestiona selección de asientos y carrito.
  2. El host escucha onOrderUpdate(order) y habilita su botón de pago cuando hay items.
  3. El host llama instance.startCheckout() o inicia su propio flujo de pago.
  4. El canal procesa el pago con su pasarela.
  5. El canal notifica el resultado a beTickets con confirm-payment.
  6. 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"
}
CampoTipoRequeridoDescripción
transaction_idstringReferencia de la pasarela del canal (para auditoría)
amountnumberImporte cobrado. Debe coincidir con total_amount de la orden
payment_methodstringNoDescripció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:

  1. Valida que el amount declarado coincide con el total de la orden (tolerancia ±0.01€).
  2. Transacción DB:
    • Orden → completed, order_token a null.
    • Crea registro OrderPayment con la referencia externa.
    • Session seats → sold.
    • Order items → confirmed.
    • Suscribe al comprador a la lista del evento (si procede).
  3. 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

HTTPDescripción
401Bearer token inválido o expirado
403El token no corresponde al salesChannelSlug de la URL
404Orden no encontrada para ese canal y orderToken
422Importe no coincide, orden en estado inválido, o validación fallida

Endpoint de pago directo taquilla

http
POST /portal/{salesChannelSlug}/{lang}/orders/{orderToken}/complete

Uso exclusivo de taquilla física (efectivo/tarjeta física). No aplica al canal web externo.