Generar la firma y crear la URL de la solicitud
Lista de comprobación para generar la firma y crear la URL de la solicitud:
| Concepto | Valor | Notas |
|---|---|---|
| Clave secreta/privada | Para compartirlo con Expedia Group. | Una clave secreta es una cadena alfanumérica que comparten de forma segura Expedia Group y que se usa para generar una firma. Será una cadena de 36 caracteres y está asociada a PartnerId.Por ejemplo: 6f437404-261d-4beb-a7fc-43b92f694831. Nota:. Debes guardarlo en un lugar seguro y utilizarlo únicamente en server-side para generar la firma. La clave secreta no debería pasarse como parámetro al crear la URL. |
| Dominio | Dominio asociado | |
| Punto de conexión | /xsell-redirect-pwa? | Ten en cuenta también que nuestro punto final es case-sensitive, así que todos los nombres de los parámetros deben escribirse exactamente como aparecen en este documento. |
Step-by-step guía
Paso 1: Crea la URL de la solicitud de enlace directo a la página de resultados del alojamiento
Crea la URL de la solicitud de enlace directo a la página de resultados del alojamiento utilizando el dominio del socio en lugar del dominio Expedia que aparece en el ejemplo. Configura los parámetros de búsqueda y el código de seguimiento según la guía de enlaces directos.
>> Más información sobre los enlaces directos
URL de la solicitud de enlace directo:
https://expedia.com/go/hotel/search/Destination/2025-12-22/2025-12-25?mdpcid=Expedia-IE.DPS.Expedia.ExtFlightEmail-Xsell_CTA.Hotel&CityName=ORD&SortBy=distance&NumRoom=1&NumAdult1=3&NumChild1=2&Rm1child1age=9&Rm1child2age=6
Paso 2: Codifica la URL del enlace directo usando UTF-8
URL de enlace directo codificada:
https%3A%2F%2Fexpedia.com%2Fgo%2Fhotel%2Fsearch%2FDestination%2F2025-12-22%2F2025-12-25%3Fmdpcid%3DExpedia-IE.DPS.Expedia.ExtFlightEmail-Xsell_CTA.Hotel%26CityName%3DORD%26SortBy%3Ddistance%26NumRoom%3D1%26NumAdult1%3D3%26NumChild1%3D2%26Rm1child1age%3D9%26Rm1child2age%3D6
Paso 3: Añade todos los parámetros necesarios para activar las tasas de conexión
outboundEndDateTime(codificado) + originTLA + returnStartDateTime (codificado) + destinationTLA + bookingDateTime (codificado) + PartnerId +attachDL
Paso 4: Crea la URL para generar la firma (sin incluir el dominio)
Punto final + URL de enlace profundo codificada + outboundEndDateTime (codificada) + originTLA + returnStartDateTime (codificada) + destinationTLA + bookingDateTime (codificada) + PartnerId + attachDL
Ejemplo
/xsell-redirect-pwa?url=https%3A%2F%2Fexpedia.com%2Fgo%2Fhotel%2Fsearch%2FDestination%2F2025-12-22%2F2025-12-25%3Fmdpcid%3DExpedia-IE.DPS.Expedia.ExtFlightEmail-Xsell_CTA.Hotel%26CityName%3DORD%26SortBy%3Ddistance%26NumRoom%3D1%26NumAdult1%3D3%26NumChild1%3D2%26Rm1child1age%3D9%26Rm1child2age%3D6&outboundEndDateTime=2025-10-30T20%3A12%3A17.928020Z&destinationTLA=LAS&returnStartDateTime=2025-11-10T20%3A12%3A17.928020Z&originTLA=JFK&bookingDateTime=2025-07-25T20%3A12%3A17.928020Z&attachDL=true&PartnerId=new-pwa-xsell-testing-airnz
Paso 5: Firmar la solicitud/generar la firma
La cadena (URL) obtenida en el paso 4 debe firmarse mediante el algoritmo HMAC-SHA1 utilizando la clave secreta/privada compartida por Expedia Group. En la mayoría de las bibliotecas criptográficas, la firma resultante estará en formato binario, por lo que puede que tengas que decodificar la clave a su formato binario original.
Hay muchas implementaciones de esta función hash criptográfica definida en el RFC 2104 para varios lenguajes de programación y marcos de trabajo. La siguiente lista es una selección de las implementaciones disponibles:
- Java
- JavaScript
- C#
- Python
- Ruby
Paso 6: Codifica la firma binaria resultante
Codifica la firma binaria usando Base64 modificado para URL, que sustituye los caracteres « + » y « / » de la salida Base64 por « - » (guión) y « _ » (guión bajo), respectivamente, para que la URL sea segura (consulta el RFC 4648 para obtener más información). Debería quedar algo así:
bj01fgT85mUiRmzxxSufSmlGpiI
Además, es importante tener en cuenta que hay que eliminar el relleno = (si lo hay) de la cadena codificada en base64.
Paso 7: Crear la URL de la solicitud final
Crea la URL del enlace directo final tal y como se muestra a continuación:
Dominio + Punto final + URL de enlace profundo codificada + outboundEndDateTime (codificada) + originTLA + returnStartDateTime (codificada) + destinationTLA + bookingDateTime (codificada) + PartnerId + attachDL + signature
Ejemplo:
https://www.expedia.com/xsell-redirect-pwa?url=https%3A%2F%2Fexpedia.com%2Fgo%2Fhotel%2Fsearch%2FDestination%2F2025-12-22%2F2025-12-25%3Fmdpcid%3DExpedia-IE.DPS.Expedia.ExtFlightEmail-Xsell_CTA.Hotel%26CityName%3DORD%26SortBy%3Ddistance%26NumRoom%3D1%26NumAdult1%3D3%26NumChild1%3D2%26Rm1child1age%3D9%26Rm1child2age%3D6&outboundEndDateTime=2025-10-30T20%3A12%3A17.928020Z&destinationTLA=LAS&returnStartDateTime=2025-11-10T20%3A12%3A17.928020Z&originTLA=JFK&bookingDateTime=2025-07-25T20%3A12%3A17.928020Z&attachDL=true&PartnerId=new-pwa-xsell-testing-airnz&signature=3WQjtTHsSCRxrogs3xhY7edWfgE
Paso 8: Inserta la URL final en la ruta « post-booking » de la aerolínea (correo electrónicoe.g. )
Lista de comprobación
Asegúrate de lo siguiente:
- Firma
- La firma tiene el formato correcto (Base64), no hexadecimal.
- La firma se trata como un número entero (no como una cadena) al convertirla a la codificación Base64.
- Si hace falta, cambia «
+» por «-» en la firma (la codificación Base64 debería hacerlo automáticamente):m6y13j0747-x/h81wEzR9jE1fco= - Si hace falta, cambia «
/» por «_» en la firma (la codificación Base64 debería hacerlo automáticamente):m6y13j0747-x_h81wEzR9jE1fco=
- Si hace falta, cambia «
- Elimina el relleno «
=» (si lo hay) de la cadena codificada en Base64. - La firma tiene exactamente 27 caracteres.
- La clave secreta no es visible públicamente en el lado del cliente; solo debe usarse en el lado del servidor para generar la firma.
- Parámetros
- Todos los valores de los parámetros son percent-encoded UTF-8.
- Se han pasado todos los parámetros necesarios.
- Dominio y punto final
- «Endpoint» está bien
/xsell-redirect-pwa
- «Endpoint» está bien
- La URL de la solicitud final debe ser una combinación de dominio + punto final + enlace profundo codificado:
URL+outboundEndDateTime(codificado) +originTLA+returnStartDateTime(codificado) +destinationTLA+bookingDateTime(codificado) +PartnerId+attachDL+signature
Pruebas
Comprueba el módulo adjunto antes de la implementación en entorno de pruebas o producción.
Comprueba la URL de la solicitud final:
- La solicitud te redirigirá a la página de resultados de propiedades según los criterios de búsqueda que figuren en la URL del enlace profundo codificado.
Nota: La solución Expedia solo es compatible con entornos de producción. Los socios que quieran hacer pruebas en un entorno « pre-production » tendrán que redirigir su pre-production a Expedia's production.