Primeros pasos con la API de actividades de XeniCómo reservar una actividadCómo buscar etiquetas y categorías de actividadesCómo cancelar una reserva de actividadCómo comprobar la disponibilidad de la actividadCómo obtener detalles de la actividadCómo recuperar los detalles de la reserva de actividadesCómo buscar actividades con filtrosCómo buscar destinos de actividadesAPI de alquiler de coches: introducciónAPI de alquiler de coches: comprensión de los campos de respuestaCómo reservar un alquiler de cochesCómo obtener detalles del vehículo de alquiler y complementos de equipoCómo recuperar o cancelar una reserva de alquiler de cochesCómo buscar autos de alquiler disponiblesCómo buscar ubicaciones de recogidaCómo utilizar los filtros de búsqueda de alquiler de cochesMejores prácticas de integración de API de ofertasPreguntas frecuentes sobre la API de ofertasPrimeros pasos con la API de ofertas de XeniReferencia de encabezados y parámetros de solicitud de API de ofertasOfertas API Monedas admitidas y localizaciónCómo mostrar ofertas en su aplicaciónCómo buscar ofertas de hoteles por ubicaciónCódigos de error de la API de vuelos y solución de problemasPrimeros pasos con la API de vuelos de XeniCómo reservar un vueloCómo comprobar la disponibilidad y el precio de los vuelosCómo confirmar o cancelar una reserva de vueloCómo recuperar las reglas de tarifas de un vueloCómo recuperar los detalles de la reserva de un vueloCómo buscar aeropuertos usando AutocompletarCómo buscar vuelosCómo utilizar filtros, clasificación y paginación de búsqueda de vuelosCómo comprobar la disponibilidad y el precio de las habitacionesCómo filtrar los resultados de los alquileres vacacionalesCómo obtener detalles, comodidades y accesibilidad de la propiedad del resortCómo mantener y confirmar una reserva de resortCómo liberar una retención de resortCómo recuperar los detalles de la reserva del resortCómo buscar complejos turísticos disponiblesCómo buscar destinos turísticosCómo buscar ubicaciones de alquiler vacacionalCómo buscar alquileres vacacionalesCómo utilizar filtros de búsqueda y clasificación de complejos turísticosComenzando con la API de Xeni ResortsAPI de Resorts: comprensión de los estados y políticas de las reservasPrimeros pasos con la API de alquileres vacacionalesPreguntas frecuentes sobre alquileres vacacionalesTipos de propiedades admitidas para alquileres vacacionalesComprensión de la búsqueda asincrónica para alquileres vacacionalesAutenticación y firmas APIReserva de hoteles: API directa y pago SSOManejo de errores, límites de tasas y mejores prácticasPrimeros pasos con la API de Xeni HotelesGestión de reservas: estado, recuperación y cancelaciónConfirmación de precios y ciclo de vida del tokenRecuperar detalles del hotel y disponibilidad de habitacionesBúsqueda de hoteles: ubicaciones, filtros y paginaciónBuscando HotelesGestión de sesiones e ID de correlaciónAutenticación API y obtención de claves API

Confirmación de precios y ciclo de vida del token

Última actualización: 2026-02-13

Confirmación de precios y ciclo de vida del token

Los precios de los hoteles son dinámicos: pueden cambiar entre el momento en que un huésped ve la disponibilidad y el momento en que decide reservar. El paso de confirmación de precios fija una tarifa y devuelve un nuevo token que es válido para reservar. Este artículo explica el flujo de dos tokens, por qué es importante y cómo manejar la caducidad de los tokens.

¿Por qué dos fichas?

El flujo de reserva utiliza dos tokens secuenciales:

  1. Token de disponibilidad: se obtiene del punto final Verificar disponibilidad. Identifica una configuración específica de habitación, tarifa y cama. Este token no es una garantía de precio.
  2. Token de precio: obtenido del punto final Confirmar precio (este artículo). Fija el precio exacto por hasta 10 minutos. Este es el token que utilizas para reservar.

Importante: No debes utilizar el token de disponibilidad directamente para reservar. Llame siempre primero al punto final de confirmación de precios para obtener un token de precio. Intentar reservar con un token de disponibilidad fallará.

Diagrama de flujo de tokens

Check Availability    ↓availabilitytoken  (identifies room/rate — price may change)    ↓Confirm Price    ↓pricingtoken  (locked price — valid for 10 minutes)    ↓SSO Checkout / Create Booking

*

Confirmar precio final

Punto final

GET /hotels/api/v2/properties/price?availability_token={token}&currency={currency}

Parámetros de consulta

XENIKBPH21
ParámetroTipo XENIKBPH16RequeridoDescripción
tokendedisponibilidadXENIKBPH 27stringEl availabilitytoken de rates[].beds[].availabilitytoken en la disponibilidad respuesta.
monedaXENIKBPH43 stringNoMoneda por el precio cotizado. Valor predeterminado: USD.

Solicitud de ejemplo

GET /hotels/api/v2/properties/price?availabilitytoken=eyJhbGciOiJIUzI1NiJ9.room101...&currency=USDAuthorization: {signature}x-correlation-id: {correlationid}Content-Type: application/json

Ejemplo de respuesta

JSON
{
  "data": {
    "total_price": 891.08,
    "base_price": 756,
    "taxes": 95.08,
    "fees": 40,
    "currency": "USD",
    "pricingtoken": "eyJhbGciOiJIUzI1NiJ9.pricingfinal..."
  }
}

Campos de respuesta

XEN IKBPH61TipoXENIKBPH66
CampoDescripción
preciototal númeroFinal precio total incluyendo todos los impuestos y tarifas.
basepr hielonúmeroHabitación tasa antes de impuestos y tasas.
impuestos snúmeroImpuesto monto.
honorariosX ENIKBPH101númeroServicio y reserva tarifas.
moneda cadenaMoneda código para el citado precio.
pricingtokenXE NIKBPH_121__stringEl token a usar para la reserva. Este es un nuevo token, diferente del token de disponibilidad que envió.

Punto clave: El pricingtoken en la respuesta es un token nuevo y diferente del availabilitytoken que proporcionaste en la solicitud. Debe utilizar este nuevo pricing_token para el paso de pago o reserva de SSO.

*

Ciclo de vida y vencimiento del token

Token de disponibilidad- Fuente: rates[].beds[].availability_token de la respuesta de disponibilidad.

  • Validez: De corta duración. La disponibilidad y los precios pueden cambiar en cualquier momento.
  • Uso: Pasar únicamente al punto final de confirmación de precios.
  • Recomendación: Confirmar el precio tan pronto como el huésped seleccione una habitación. No almacene en caché los tokens de disponibilidad durante períodos prolongados.

Ficha de precios

  • Fuente: pricing_token de la respuesta de confirmación de precios.
  • Vigencia: 10 minutos desde el momento de su emisión.
  • Uso: Pase a la URL de pago de SSO o al punto final de creación de reservas.
  • Al vencimiento: Si el token vence antes de que el huésped complete el pago, debes repetir la verificación de disponibilidad y la confirmación de precio para obtener un nuevo token.

Manejo de tokens caducados

Si un token de precio ha caducado (más de 10 minutos desde la confirmación), la reserva o el pago fallarán. Maneja esto con gracia:

  1. Realice un seguimiento de cuándo se emitió el token de precio (almacene una marca de tiempo junto a él).
  2. Antes de generar una URL de pago, verifique si el token todavía se encuentra dentro de su ventana de 10 minutos.
  3. Si caducó, vuelva a ejecutar de forma transparente la verificación de disponibilidad y la confirmación del precio antes de presentar el enlace de pago.
  4. Informar al huésped si el precio ha cambiado entre confirmaciones.

Ejemplo: verificación de vencimiento del token (JavaScript)

function isPricingTokenValid(tokenIssuedAt) {  const TENMINUTESMS = 10  60  1000;  return (Date.now() - tokenIssuedAt) < TENMINUTESMS;}

// Before booking:if (!isPricingTokenValid(session.priceLockedAt)) { // Re-run availability check → confirm price → get new token const availability = await checkAvailability(hotelId, dates, occupancy); const pricing = await confirmPrice(availability.token); session.pricingToken = pricing.pricingToken; session.priceLockedAt = Date.now();}

*

Cambios de precio entre pasos

Es posible que el precio confirmado difiera de la tarifa inicial mostrada durante la búsqueda de hotel o verificación de disponibilidad. Esto puede suceder debido a:

  • Precios dinámicos: las tarifas se ajustan según la demanda en tiempo real.
  • Fluctuaciones de moneda: si se muestran los precios en una moneda no predeterminada.
  • Inventario limitado: es posible que la tarifa mostrada originalmente se haya agotado, lo que da como resultado un nivel de tarifa diferente.

Muestre siempre el precio confirmado desde el punto final de fijación de precios como el precio final que pagará el huésped. La respuesta de confirmación de precios es la fuente de la verdad.

*

Resumen: qué almacenar en cada paso

PasoValores a Tienda
Verificar Disponibilidadroom.id, rates[].beds[].availabilitytoken, propertyid
Confirmar Preciopricingtoken, totalprice, marca de tiempo de cuando se emitió el token emitido
SSO PagoUtilice el pricingtoken + room.id + propertyid para construir el URL

*

_Próximo artículo: Reservar hoteles mediante SSO Checkout
_

¿Te resultó útil este artículo?