Cómo crear la URL de la solicitud
La URL de solicitud —la URL que devolverá los resultados de un módulo adjunto— 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 dos 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
Cómo crear parámetros de solicitud
En general, los parámetros de la solicitud incluyen datos sobre la reserva, como el destino y las fechas de inicio y fin del viaje. Esta información se utiliza para generar recomendaciones para el módulo «attach». Algunos parámetros son opcionales en una solicitud, pero otros son imprescindibles para obtener 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 | Cadena de caracteres que especifica el estado de la reserva, lo que determina si se pueden aplicar las tarifas asociadas; si el estado de la reserva es «pendiente» o «fallida», no se aplicará ninguna tarifa asociada | confirmada | Sí |
bookingDateTime | Cadena de caracteres que indica la fecha de la reserva; incluye la fecha, la hora y la zona horaria en Formato ISO 8601 | 2024-08-29T05:54:02 Valor codificado: 2024-08-29T05%3A54%3A02 | Sí |
outboundEndDateTime | Cadena de caracteres que indica la llegada al destino; incluye la fecha, la hora y la zona horaria en formato ISO 8601 | 2024-08-29T05:54:02 Valor codificado: 2024-08-29T05%3A54%3A02 | Sí |
returnStartDateTime | Cadena de caracteres que indica la salida desde el destino; incluye la fecha, la hora y la zona horaria en formato ISO 8601 Nota: Si no se especifica, la duración predeterminada 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 realizó la reserva. >> Consulta aquí todos los detalles sobre la configuración regional | en_US | Sí |
currencyCode | Cadena proporcionada por Expedia que indica la moneda en la que se realizó la reserva | USD | Sí |
destinationTLA | Cadena de 3 caracteres que indica el código de aeropuerto de la Asociación Internacional de Transporte Aéreo (IATA) para el destino Nota: La URL de la solicitud debe incluir este parámetro (para reservas que incluyan un vuelo) O BIEN latitude y longitude (si no se incluye ningún vuelo) | LAX | Requisito condicional |
latitude y longitude | Valor de tipo flotante con hasta 12 decimales que especifica las coordenadas del destino del viaje Nota: La URL de la solicitud debe incluir este parámetro (si no hay ningún vuelo) O BIEN destinationTLA (para reservas que incluyan un vuelo) | latitud=40.7141667 &longitud=-74.0063889 | Requisito condicional |
signature | Una cadena alfanumérica de 27 caracteres que generarás a partir de una clave secreta que te proporcionamos | ||
| BcND1F7KElTyGtyUHeXHd2JJLFs informe | Sí | ||
numOfAdults | Número entero que indica el número de adultos en la reserva; mínimo 1 | 2 | — |
numOfChildren | Número entero que indica el número de niños que figuran en la reserva | 3 | — |
childAges | Comma-delimited matriz de enteros que especifica las edades de los niños que haya en la reserva; solo es obligatorio si se pasa el parámetro « numOfChildren » | 5,4,2 | Sí, si se aprueba la ley « numOfChildren » |
Hemos incluido algunos ejemplos para que te hagas una idea de los valores, tanto para viajes sencillos como para otros más complicados.
Crear la URL de la solicitud
Todas las URL de solicitud incluirán el dominio y el punto final, seguidos de los parámetros de la solicitud, y terminarán con la firma generada con la clave secreta.
Clave secreta
Una clave secreta es una cadena alfanumérica que comparten de forma segura Expedia y que se usa para generar una firma que verifica la transacción. Tendrá 36 caracteres y está asociado al partnerId.
Parámetros de dominio, de punto final y de solicitud
La URL de tu solicitud empieza por el dominio. Te recomendamos que mantengas el dominio Expedia en las URL de las solicitudes: protocol-agnostic: y //xsell.expedia.com/. La siguiente parte de la URL es la cadena de solicitud, que está formada por el punto final case-sensitive, /xsell-pwa.js? y los parámetros de solicitud. Recuerda que los parámetros de la solicitud deben ser UTF-8 percent-encoded.
Paso 1: Crea la cadena de solicitud
La cadena de solicitud incluye el punto final y los parámetros de solicitud (pero no el dominio). Debería quedar más o menos así.
/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 prefijo « / ») debe firmarse con un hash-based algoritmo de autenticación de mensajes (HMAC-SHA1) utilizando la clave secreta compartida por 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 de programación y marcos de trabajo. Las implementaciones disponibles son las siguientes:
Paso 3: Codifica la firma resultante
Codifica la firma binaria utilizando el Base64 Para las URL, que sustituye los caracteres « + » y « / » de la salida Base64 por « - » (guión) y « _ » (guión bajo), respectivamente, para que sean compatibles con las URL (véase RFC 4648 (para más información). Debería quedar algo así:
bj01fgT85mUiRmzxxSufSmlGpiITambién es importante tener en cuenta que hay que eliminar el relleno = (si lo hay) de la cadena codificada en Base64.
Paso 4: Crea 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 siempre debe ser el último parámetro de la URL de la solicitud 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
Añade al principio de la cadena resultante el protocolo (//, http:// o https://) y el dominio (te recomendamos //xsell.expedia.com para las URL de protocol-agnostic ).
//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
Tendrás que usar la URL de la solicitud final como el atributo JavaScript src en la página donde debe 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 la solicitud, ya estás listo para integrarla en el código de tu página.