Construir la URL de solicitud
La URL de solicitud -la URL que devolverá los resultados de un módulo de adjuntar- consta de un dominio, un punto final, parámetros de solicitud y un parámetro de firma. Este ejemplo muestra un vuelo confirmado a LAX para 2 adultos con salida el 2 de enero de 2023 y regreso el 12 de enero de 2023 que se reservó el 12 de noviembre de 2022.
//xsell.expedia.com/xsell-pwa.js?partnerId=partner123&outboundEndDateTime=2023-01-02T12%3A55%3A00%2B08%3A00&returnStartDateTime=2023-01-12T22%3A30%3A00%2B08%3A00&destinationTla=LAX&numOfAdults=2&locale=en_US¤cyCode=USD&bookingDateTime=2022-11-12T12%3A32%3A15%2B08%3A00&bookingStatus=confirmed&signature=bj01fgT85mUiRmzxxSufSmlGpiI
Construir parámetros de solicitud
En general, los parámetros de solicitud incluyen detalles sobre la reserva efectuada, como el destino y las fechas de inicio y fin del viaje. Esta información se utiliza para generar recomendaciones para el módulo de acoplamiento. Algunos parámetros son opcionales en una petición, pero otros son necesarios para devolver resultados.
Parámetros de solicitud disponibles
Parámetro | Descripción | Valor de muestra | Campo obligatorio |
---|---|---|---|
partnerId | Valor de cadena proporcionado por Expedia que se utiliza para identificar a tu organización en los parámetros de la solicitud | partnername_hotel_conf_overlay | Sí |
bookingStatus | Valor de cadena que especifica el estado de la reserva, que determina si se pueden aplicar tarifas adjuntas; si el estado de la reserva es pendiente o fallido, no se aplicarán tarifas adjuntas | confirmada | Sí |
bookingDateTime | Valor de cadena que especifica la fecha de la reserva; incluye fecha, hora y zona horaria en formato ISO 8601 | 2024-08-29T05:54:02 Valor codificado: 2024-08-29T05%3A54%3A02 | Sí |
outboundEndDateTime | Valor de cadena que especifica la llegada al destino; incluye fecha, hora y zona horaria en formato ISO 8601 | 2024-08-29T05:54:02 Valor codificado: 2024-08-29T05%3A54%3A02 | Sí |
returnStartDateTime | Valor de cadena que especifica la salida del destino; incluye fecha, hora y zona horaria en formato ISO 8601 Nota: Si no se especifica, la duración por defecto del viaje es de 7 días | 2024-08-29T05:54:02 Valor codificado: 2024-08-29T05%3A54%3A02 | — |
locale | Cadena de 5 caracteres proporcionada por Expedia que indica el idioma en el que se hizo la reserva. Consulta todos los detalles de la localización aquí. | en_US | Sí |
currencyCode | Cadena proporcionada por Expedia que indica la moneda en la que se hizo la reserva | USD | Sí |
destinationTla | Cadena de 3 caracteres que indica el código de aeropuerto de la Asociación de Transporte Aéreo Internacional (IATA) ) para el destino Nota: La URL de la solicitud debe incluir este parámetro (para reservas que incluyan un vuelo) O latitude y longitude (si no se incluye ningún vuelo) | LAX | Condicionalmente necesario |
latitude y longitude | Valor flotante de hasta 12 decimales que especifica las coordenadas del destino del viaje Nota: La URL de la solicitud debe incluir este parámetro (si no se incluye ningún vuelo) O destinationTla (para reservas que incluyan un vuelo) | latitud=40.7141667 &longitude=-74.0063889 | Condicionalmente necesario |
signature | Valor de cadena alfanumérica de 27 caracteres que generarás basándote en una clave secreta que te proporcionaremos Consulta Construir la URL de solicitud para más información | BcND1F7KElTyGtyUHeXHd2JJLFs | Sí |
numOfAdults | Número entero que especifica el número de adultos de la reserva; mínimo 1 | 2 | — |
numOfChildren | Número entero que especifica el número de hijos de la reserva | 3 | — |
childAges | Comma-delimited matriz de enteros que especifica las edades de los niños de la reserva; sólo se requiere si se pasa numOfChildren | 5,4,2 | Sí, si se aprueba numOfChildren |
Hemos incluido algunos supuestos para ayudarte a comprender los valores tanto de los viajes sencillos como de los más complicados.
Construir la URL de solicitud
Todas las URL de solicitud incluirán el dominio y el punto final, seguidos de los parámetros de solicitud, y terminarán con la firma generada con la clave secreta.
Clave secreta
Una clave secreta es una cadena alfanumérica que Expedia comparte de forma segura y que se utiliza para generar una firma que verifica la transacción. Tendrá 36 caracteres, y está asociado a la etiqueta #.partnerId.
Dominio, punto final y parámetros de la solicitud
La URL de tu petición empieza por el dominio. Te recomendamos que mantengas el dominio Expedia para las URL de petición protocol-agnostic://xsell.expedia.com/
. La siguiente sección de la URL es la cadena de petición, que consiste en el punto final case-sensitive /xsell-pwa.js?
y los parámetros de la petición. Recuerda que los parámetros de la solicitud deben ser UTF-8 percent-encoded.
Paso 1: Construye la cadena de solicitud
La cadena de solicitud incluye el punto final y los parámetros de la solicitud (pero no el dominio). Debería tener este aspecto.
/xsell-pwa.js?partnerId=partner123&outboundEndDateTime=2023-01-02T12%3A55%3A00%2B08%3A00&returnStartDateTime=2023-01-12T22%3A30%3A00%2B08%3A00&destinationTla=LAX&numOfAdults=2&locale=en_US¤cyCode=USD&bookingDateTime=2022-11-12T12%3A32%3A15%2B08%3A00&bookingStatus=confirmed
Paso 2: Firma la solicitud
La cadena obtenida en el paso 1 (incluido el encabezamiento /
) debe firmarse con un algoritmo de autenticación de mensajes (HMAC-SHA1) utilizando la clave secreta compartida por hash-based Expedia. En la mayoría de las bibliotecas criptográficas, la firma resultante estará en formato binario.
Hay muchas implementaciones de esta función hash criptográfica definidas en el RFC 2104 para lenguajes y marcos informáticos. Las implementaciones disponibles incluyen:
Paso 3: Codificar la firma resultante
Codifica la firma binaria utilizando la versión modificada de Base64 para URL, que sustituye los caracteres +
y /
de la salida Base64 por -
(guión) y _
(guión bajo), respectivamente, para hacerla segura para URL (consulta RFC 4648 para obtener información adicional). Debería tener un aspecto similar a éste:
bj01fgT85mUiRmzxxSufSmlGpiI
También es importante tener en cuenta que el relleno =
(si existe) debe eliminarse de la cadena codificada en Base64.
Paso 4: Construye la URL de la solicitud final
Añade la firma del paso 3 a la cadena del paso 1 como parámetro signature
. La firma debe ser siempre el último parámetro de la URL de la petición final.
//xsell.expedia.com/xsell-pwa.js?partnerId=partner123&outboundEndDateTime=2023-01-02T12%3A55%3A00%2B08%3A00&returnStartDateTime=2023-01-12T22%3A30%3A00%2B08%3A00&destinationTla=LAX&numOfAdults=2&locale=en_US¤cyCode=USD&bookingDateTime=2022-11-12T12%3A32%3A15%2B08%3A00&bookingStatus=confirmed&signature=bj01fgT85mUiRmzxxSufSmlGpiI
Antepone el protocolo (//
O http://
O https://
) y el dominio (recomendamos //xsell.expedia.com
para las URL protocol-agnostic ) a la cadena resultante.
//xsell.expedia.com/xsell-pwa.js?partnerId=partner123&outboundStartDateTime=2024-10-22T11%3A55%3A00%2B08%3A00&outboundEndDateTime=2024-10-22T13%3A55%3A00%2B08%3A00&returnStartDateTime=2024-10-30T20%3A30%3A00%2B08%3A00&returnEndDateTime=2024-10-30T22%3A30%3A00%2B08%3A00&destinationTla=LAX&numOfAdults=2&locale=en_US¤cyCode=USD&bookingDateTime=2024-04-12T12%3A32%3A15%2B08%3A00&bookingId=123ABC&bookingStatus=confirmed&signature=bj01fgT85mUiRmzxxSufSmlGpiI
Paso 5: Añade el código JavaScript
Utilizarás la URL de la solicitud final como atributo JavaScript src
en la página donde deba aparecer el módulo. Por ejemplo:
<<script src="//xsell.expedia.com/xsell-pwa.js?partnerId=partner123&outboundEndDateTime=2023-01-02T12%3A55%3A00%2B08%3A00&returnStartDateTime=2023-01-12T22%3A30%3A00%2B08%3A00&destinationTla=LAX&numOfAdults=2&locale=en_US¤cyCode=USD&bookingDateTime=2022-11-12T12%3A32%3A15%2B08%3A00&bookingStatus=confirmed&signature=bj01fgT85mUiRmzxxSufSmlGpiI"></script>>
Una vez que hayas creado la URL de solicitud, estás listo para integrarla en el código de tu página.