Pasarela de pagos (Bold)

Integración con Bold

La plataforma usa Bold como pasarela de pago para transacciones en línea. Bold procesa tarjetas de crédito y débito. La integración se realiza mediante la API de Bold, con el módulo src/lib/bold.ts en app_reservas.

Ambientes

AmbienteVariableUso
SandboxBOLD_API_KEY_SANDBOXPruebas. No procesa pagos reales.
ProducciónBOLD_API_KEYPagos reales. Controlado por BOLD_ENV.

La variable BOLD_ENV (default: "sandbox") controla qué clave se usa.

Flujo de pago

  1. Al crear una reserva con método "online", el sistema genera un payment intent en Bold.
  2. El payment intent retorna un checkout_url donde el cliente ingresa sus datos de tarjeta.
  3. Si el pago es exitoso, Bold dispara un webhook hacia /api/pagos/webhook.
  4. El webhook valida la firma (BOLD_WEBHOOK_SECRET), actualiza el estado del pago y confirma la reserva.
  5. Si la pasarela no responde en el timeout (8s), se genera un mensaje de fallback y la reserva queda pendiente de pago.

Webhook de pagos

El endpoint POST /api/pagos/webhook en app_reservas:

  • Recibe notificaciones de Bold sobre cambios de estado de pago.
  • Valida la firma del webhook para prevenir requests falsos.
  • Actualiza el registro del pago en Strapi.
  • Cambia el estado de la reserva a "confirmada" si el pago fue exitoso.

Estados de pago

  • Pendiente: payment intent creado, esperando que el cliente pague.
  • Completado: pago exitoso confirmado por webhook.
  • Fallido: el pago fue rechazado o expiró.
  • Reembolsado: se procesó un reembolso total o parcial.

Consulta de estado

El estado de un pago se puede consultar vía API: GET /api/pagos/{reference_id}/estado. Esto es útil para verificar el estado actualizado de un pago desde el frontend o desde el panel administrativo.

Manejo de errores

Si la pasarela de pago no responde (timeout de 8 segundos), el sistema:

  • La reserva se crea normalmente (no se pierde).
  • Se registra un campo pago_error con el mensaje de fallback.
  • El checkout_url queda en null.
  • Se ofrece al cliente la opción de coordinar el pago por WhatsApp.

¿Te fue útil esta guía?