Error: The rooms cannot be booked without executing the cancellation policies first.

Creada por Marcello Magalhães, Modificado el Mié., 2 Sep. a las 10:49 A. M. por Marcello Magalhães

Mensaje de error

The rooms cannot be booked without executing the cancellation policies first.

¿Qué significa este error?

Esta respuesta indica que la confirmación de la reserva fue bloqueada porque las políticas de cancelación no fueron ejecutadas ni registradas para el mismo intento de reserva.

En el flujo de reserva de hoteles, la confirmación (DoBooking) depende de un paso anterior que valida y registra las políticas de cancelación (getBookingConditions). Este registro queda asociado al Token utilizado en el intento de reserva.

Si DoBooking se envía con un Token que no tiene este registro, el sistema interpreta que las políticas de cancelación no fueron ejecutadas y devuelve el error.

Síntomas más comunes

  1. DoBooking devuelve HTTP 200, pero el payload contiene un objeto Error.
  2. El mensaje indica explícitamente que las políticas de cancelación deben ejecutarse antes de realizar la reserva.
  3. La reserva no se crea y el campo Rooms puede devolverse como null.

Causa raíz más común

Diferencia de Token entre las solicitudes.

Ejemplo típico:

  • getBookingConditions fue llamado con TOKEN_A
  • DoBooking fue llamado con TOKEN_B

Aunque el hotel y la habitación sean los mismos, el registro de las políticas de cancelación queda asociado al Token. Si el Token no es exactamente el mismo, la validación falla.

Otras posibles causas

  • getBookingConditions se ejecutó con parámetros diferentes a los enviados en DoBooking (hotel, habitación, fechas, ocupación).
  • El Token expiró debido al tiempo transcurrido entre las etapas.
  • Reintentos en paralelo o múltiples pestañas del navegador provocaron un cambio de Token durante el flujo de reserva.
  • Se reutilizó un Token antiguo almacenado en la sesión o en la caché del integrador.

Cómo resolverlo

  1. Repita el flujo garantizando el siguiente orden:
    • Availability/Search
    • getBookingConditions
    • DoBooking
  2. Garantice una consistencia total entre getBookingConditionsDoBooking:
    • Mismo Token
    • Mismo HotelId
    • Mismo RoomId
    • Mismas fechas y ocupación
  3. En caso de realizar un retry de DoBooking:
    • Ejecute nuevamente getBookingConditions utilizando el mismo Token del retry, inmediatamente antes de confirmar la reserva.

Cómo confirmarlo rápidamente en los logs

Compare los siguientes campos en ambas solicitudes:

  • Token
  • HotelId
  • RoomIdRoomIds

Si el Token es diferente, la causa queda confirmada.

Recomendación de auditoría:

  • Busque en los logs una solicitud de getBookingConditions con el mismo Token utilizado en el DoBooking que falló.
  • Si no existe, el flujo omitió esta etapa o el Token fue cambiado.

Prevención

  • No reutilice un Token entre diferentes intentos de reserva.
  • Evite procesos en paralelo durante el checkout (dos confirmaciones ejecutándose simultáneamente).
  • Al cambiar la selección de habitación, las fechas o la ocupación, genere un nuevo Token y vuelva a ejecutar getBookingConditions.
  • Estandarice el almacenamiento del Token en el integrador, sobrescribiendo siempre el valor anterior en la sesión del usuario.

Qué enviar a Soporte cuando necesite ayuda

Para realizar un análisis completo, envíe:

  • ClientReference
  • Token utilizado en DoBooking
  • Requests y responses de:
    • Availability/Search (donde se generó el Token)
    • getBookingConditions
    • DoBooking
  • Hora aproximada de la prueba y entorno (producción/homologación)

¿Le fue útil este artículo?

¡Qué bueno!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Díganos cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
La verificación de CAPTCHA es obligatoria.

Comentarios enviados

Agradecemos su iniciativa, e intentaremos corregir el artículo