Developer Hub
This is an auto-generated translation

Generar firma y construir URL de solicitud

Lista de comprobación para generar la firma y construir la URL de solicitud:

ConceptoValorNotas
Clave secreta/privadaA compartir por Expedia Group.Una clave secreta es una cadena alfanumérica que se comparte de forma segura en Expedia Group y que se utiliza para generar una firma. Será una cadena de 36 caracteres de longitud y está asociada al PartnerId.

Por ejemplo 6f437404-261d-4beb-a7fc-43b92f694831

Nota: Debe guardarse en un lugar seguro y utilizarse sólo en el server-side para generar la firma. La clave secreta no debe pasarse como parámetro durante la construcción de la URL.
DominioDominio asociado
Punto de conexión/xsell-redirect-pwa?Ten en cuenta también que nuestro punto final es case-sensitive, por lo que todos los nombres de los parámetros deben escribirse exactamente como se indica en este documento.

Step-by-step guía

Paso 1: Construye la URL de solicitud de enlace profundo a la página de resultados del alojamiento

Construye la URL de solicitud de enlace profundo a la página de resultados del alojamiento utilizando el dominio del socio en lugar del dominio Expedia del ejemplo. Formatea los parámetros de búsqueda y el código de seguimiento según la guía de enlaces profundos aquí .

URL de solicitud de enlace profundo:

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 profundo utilizando UTF-8

URL codificada del enlace profundo:

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 habilitar las tarifas adjuntas

outboundEndDateTime(codificado) + originTLA + returnStartDateTime (codificado) + destinationTLA + bookingDateTime (codificado) + PartnerId +attachDL

Paso 4: Construye la URL para la generación de la firma (no incluyas el dominio)

Punto final + URL codificada Deeplink + 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 ser necesario descodificar la clave en su formato binario original.

Hay muchas implementaciones de esta función hash criptográfica definidas en el RFC 2104 para varios lenguajes y marcos informáticos. La siguiente lista es un subconjunto de las implementaciones disponibles:

  • Java
  • Javascript
  • C#
  • Python
  • Ruby

Paso 6: Codificar la firma binaria resultante

Codifica la firma binaria utilizando Base64 modificado para URLs, 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 información adicional). Debería tener un aspecto similar a éste:

bj01fgT85mUiRmzxxSufSmlGpiI

Además, es importante tener en cuenta que el relleno = (si existe) debe eliminarse de la cadena codificada en base64.

Paso 7: Construir la URL de solicitud final

Construye la URL final del enlace profundo como se muestra a continuación:

Dominio + Punto final + URL codificada Deeplink + 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: Incrusta la URL final en la ruta de la aerolínea post-booking (e.g. email)

Lista de comprobación

Asegúrate de lo siguiente:

  • Firma
    • La firma está en el formato correcto (Base64), no en hexadecimal.
    • La firma se trata como un entero (no como una cadena) al convertirla a la codificación Base64.
      • Sustituye +por -de la firma si es necesario (la codificación Base64 debería hacerlo automáticamente): m6y13j0747-x/h81wEzR9jE1fco=
      • Sustituye /por _de la firma si es necesario (la codificación Base64 debería hacerlo automáticamente): m6y13j0747-x_h81wEzR9jE1fco=
    • 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; sólo debe utilizarse en el lado del servidor para generar la firma.
  • Parámetros
    • Todos los valores de los parámetros son percent-encoded UTF-8.
    • Se pasan todos los parámetros necesarios.
  • Dominio y punto final
    • El punto final es correcto /xsell-redirect-pwa
  • La URL de la solicitud final debe ser una combinación de Dominio + Punto final + Deeplink codificado URL + outboundEndDateTime (codificado) + originTLA + returnStartDateTime (codificado) + destinationTLA + bookingDateTime (codificado) + PartnerId + attachDL + signature

Pruebas

Verifica el módulo attach antes de la implantación de prueba/producción.

Verifica la URL final de la petición:

  • La petición redirigirá a la página de resultados del alojamiento en función de los criterios de búsqueda de la URL codificada del enlace profundo.

Nota: La solución Expedia sólo es compatible con un entorno de producción. Los socios que deseen hacer pruebas en pre-production tendrán que dirigir su pre-production a Expedia's production.

¿Te ha resultado útil esta página?
¿Cómo podemos mejorar este contenido?
¡Gracias por ayudarnos a mejorar!