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
DoBookingdevuelve HTTP 200, pero el payload contiene un objetoError.- El mensaje indica explícitamente que las políticas de cancelación deben ejecutarse antes de realizar la reserva.
- La reserva no se crea y el campo
Roomspuede devolverse comonull.
Causa raíz más común
Diferencia de Token entre las solicitudes.
Ejemplo típico:
getBookingConditionsfue llamado con TOKEN_ADoBookingfue 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
getBookingConditionsse ejecutó con parámetros diferentes a los enviados enDoBooking(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
- Repita el flujo garantizando el siguiente orden:
- Availability/Search
getBookingConditionsDoBooking
- Garantice una consistencia total entre
getBookingConditionsyDoBooking:- Mismo Token
- Mismo HotelId
- Mismo RoomId
- Mismas fechas y ocupación
- En caso de realizar un retry de
DoBooking:- Ejecute nuevamente
getBookingConditionsutilizando el mismo Token del retry, inmediatamente antes de confirmar la reserva.
- Ejecute nuevamente
Cómo confirmarlo rápidamente en los logs
Compare los siguientes campos en ambas solicitudes:
TokenHotelIdRoomIdoRoomIds
Si el Token es diferente, la causa queda confirmada.
Recomendación de auditoría:
- Busque en los logs una solicitud de
getBookingConditionscon el mismo Token utilizado en elDoBookingque 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)
getBookingConditionsDoBooking
- 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
Comentarios enviados
Agradecemos su iniciativa, e intentaremos corregir el artículo