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 | Origen | Notas |
|---|---|---|
| Clave secreta / privada | Para compartirlo con Expedia Group. | Una clave secreta es una cadena alfanumérica de 36 caracteres que se usa para generar una firma. Está relacionado con el partnerId. Ejemplo: 6f437404-261d-4beb-a7fc-43b92f694831. Nota: Guarda la clave secreta en un lugar seguro y úsala solo en server-side para generar la firma. No se debe pasar como parámetro al crear la URL. |
| Dominio | Dominio asociado | El elemento «domain» de tu página web. |
| Punto de conexión | /xsell-redirect-pwa? | Ten en cuenta 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 profundos.
Parámetros de la URL de la solicitud
| Parámetros | Tipo | Campo obligatorio | Descripción | Valor de muestra |
|---|---|---|---|---|
partnerId | Cadena | Y | Lo va a proporcionar Expedia Group. | partnername-POS-Ext-Flight-Conf-EmailDL |
url | Cadena | Y | Crea la URL de solicitud de enlace directo para la página de resultados del hotel utilizando el dominio del socio, los parámetros de búsqueda y el código de seguimiento, siguiendo la guía de enlaces directos. Asegúrate de que el código de seguimiento (mdpcid) esté incluido y de que el valor del parámetro de salida sea el correcto: URL-encoded.>> Lee la guía sobre enlaces profundos | url = https%3A%2F%2Fexpedia.com%2Fgo%2Fhotel%2Fsearch%2FDestination%2F2025-12-22%2F2025-12-25%3FMDPCID%3DExpedia-IE.DPS.en_IE.confemail.attachDL.Flight%26CityName%3DORD%26SortBy%3Ddistance%26NumRoom%3D1%26NumAdult-Room1%3D3%26NumChild-Room1%3D2%26Room1-Child1Age%3D9%26Room1-Child2Age%3D6 |
outboundEndDateTime | Representación como cadena de una fecha según la norma ISO 8601. | Y | Indica la fecha y la hora de llegada del viaje al destino. Solo debe incluir la fecha, la hora y la zona horaria según la norma ISO 8601. Hay que codificar el valor de este parámetro. | 2025-10-30T20%3A12%3A17.928020Z |
originTla | Cadena (3 letras) | Y | Indica el código del aeropuerto de origen del viaje: IATA. | LAS |
returnStartDateTime | Representación como cadena de una fecha según la norma ISO 8601. | Solo es necesario para los viajes de ida y vuelta | Indica la fecha y la hora de vuelta del viaje desde el destino. Solo puede incluir la fecha, la hora y la zona horaria según la norma ISO 8601. Hay que codificar el valor de este parámetro. | 2025-11-10T20%3A12%3A17.928020Z |
destinationTla | Cadena (3 letras) | Y | Indica el código del aeropuerto de IATA, el destino del viaje. | JFK |
bookingDateTime | Representación como cadena de una fecha según la norma ISO 8601. | Y | Indica la fecha y la hora de la reserva. Solo puede incluir la fecha, la hora y la zona horaria según la norma ISO 8601. Hay que codificar el valor de este parámetro. | 2025-07-25T20%3A12%3A17.928020Z |
bookingStatus | Cadena | Si no se indica lo contrario, damos por hecho que la reserva está confirmada. | Los valores válidos para este parámetro son: confirmed, pendingo failed. Nota:. Las tarifas con descuento solo se aplican cuando bookingStatuses confirmed. | confirmed |
attachDL | Booleano | Y | Establece el valor en «true» para activar las tarifas de conexión con descuento. | true |
signature | Cadena | Y | server-side generado por el socio a partir de una clave secreta facilitada por Expedia Group. Esta cadena tiene exactamente 27 caracteres. Codifica la firma binaria resultante. | BcND1F7KElTyGtyUHeXHd2JJLFs |
Nota: Los parámetros de solicitud de distinguen entre mayúsculas y minúsculas. Si no respetas las mayúsculas y minúsculas, te saldrá un error.
URL de la solicitud de enlace directo:
https://expedia.com/go/hotel/search/Destination/2025-12-22/2025-12-25?MDPCID=Expedia-IE.DPS.en_IE.confemail.attachDL.Flight&CityName=ORD&SortBy=distance&NumRoom=1&NumAdult-Room1=3&NumChild-Room1=2&Room1-Child1Age=9&Room1-Child2Age=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.en_IE.confemail.attachDL.Flight%26CityName%3DORD%26SortBy%3Ddistance%26NumRoom%3D1%26NumAdult-Room1%3D3%26NumChild-Room1%3D2%26Room1-Child1Age%3D9%26Room1-Child2Age%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)
endpoint+ enlace directo codificado url + outboundEndDateTime (codificado) + originTLA + returnStartDateTime (codificado) + destinationTLA + bookingDateTime (codificado) + 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-airnzNota: Sustituye « Expedia » por tu marca
Paso 5: Firmar la solicitud/generar la firma
La cadena (URL) que has obtenido en el paso 4 debe firmarse con 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, así que puede que tengas que decodificar la clave para recuperarla en 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 utilizando Base64URL modificado, que sustituye los caracteres « + » y « / » de la salida de Base64URL por « - » (guión) y « _ » (guión bajo), respectivamente, para que la URL sea segura (consulta el RFC 4648 para obtener más información). La firma debe tener exactamente 27 caracteres.
Ejemplos
bj01fgT85mUiRmzxxSufSmlGpiI
9Wzh3Er5-ob35Hbxbk1ltyYHex4
FeW_4NNu4ITpGaSt1KZl-vLb9PIAdemás, es importante tener en cuenta que hay que eliminar el relleno = (si lo hay) de la cadena codificada en Base64URL.
Paso 7: Crear la URL de la solicitud final
Crea la URL definitiva del enlace directo con estos elementos:
domain+ endpoint + enlace profundo codificado url + outboundEndDateTime (codificado) + originTLA + returnStartDateTime (codificado) + destinationTLA + bookingDateTime (codificado) + 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 « post-booking » de la aerolínea
Lista de comprobación
Antes de insertarlo en una ruta de « post-booking » (como un correo electrónico), comprueba los siguientes elementos.
Firma
- En formato Base64URL (no hexadecimal).
- Se trata como un número entero (no como una cadena) al convertirlo a la codificación Base64URL: sustituye
+por-y/por_si es necesario. Por ejemplo:m6y13j0747-x_h81wEzR9jE1fco=. - Elimina el relleno «
=» (si lo hay) de la cadena codificada en Base64URL. - Tiene exactamente 27 caracteres.
- La clave secreta no es visible públicamente en el lado del cliente.
Parámetros
- Los valores son percent-encoded UTF-8
>> Lee sobre la codificación «UTF-8 ». - Se han pasado todos los parámetros necesarios.
Dominio y punto final
- El valor correcto es
/xsell-redirect-pwa. - La URL de la solicitud final debe ser una combinación de
domain+endpoint+ enlace profundo codificadourl+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 de producción. La solicitud debería redirigirte a la página de resultados del alojamiento según los criterios de búsqueda que aparecen en la URL del enlace profundo codificado.
Nota: La solución Expedia solo es compatible con entornos de producción. Si quieres hacer pruebas en pre-production,, tendrás que redirigir tu dominio pre-production al dominio de producción Expedia's.