Gere a assinatura e construa a URL da solicitação.
Lista de verificação para gerar a assinatura e construir a URL da solicitação:
| Item | Origem | Observações |
|---|---|---|
| Chave secreta/privada | Para ser compartilhado por Expedia Group. | Uma chave secreta é uma sequência alfanumérica de 36 caracteres usada para gerar uma assinatura. Está associado ao partnerId. Exemplo: 6f437404-261d-4beb-a7fc-43b92f694831. Nota: Guarde a chave secreta em um local seguro e use-a apenas no server-side para gerar a assinatura. Não deve ser passado como parâmetro durante a construção da URL. |
| Domínio | Domínio do parceiro | O elemento domínio do seu site. |
| Ponto de extremidade | /xsell-redirect-pwa? | Observe que nosso endpoint é case-sensitive, portanto, todos os nomes de parâmetros devem ser escritos exatamente como mostrado neste documento. |
Guia Step-by-step
Passo 1: Construa a URL de solicitação de link direto para a página de resultados propriedade
Construa a URL de solicitação de link direto para a página de resultados propriedade usando o domínio do parceiro em vez do domínio da Expedia no exemplo. Formate os parâmetros de pesquisa e o código de rastreamento conforme o guia de deeplink.
Parâmetros da URL de solicitação
| Parâmetros | Tipo | Obrigatório | Descrição | Valor de amostra |
|---|---|---|---|---|
partnerId | Sequência | Y | A ser fornecido por Expedia Group. | partnername-POS-Ext-Flight-Conf-EmailDL |
url | Sequência | Y | Crie a URL de solicitação de deeplink para a página de resultados do hotel usando o domínio do parceiro, os parâmetros de pesquisa e o código de rastreamento, seguindo o guia de deeplink. Certifique-se de que o código de rastreamento (mdpcid) esteja incluído e que o valor do parâmetro de saída seja URL-encoded corretamente. >> Leia o guia de deeplink | 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 | Representação em formato de string de uma data, seguindo o padrão ISO 8601. | Y | Especifique a data e a hora de chegada da viagem ao destino. Deve incluir apenas a data, a hora e o fuso horário, de acordo com a norma ISO 8601. O valor desse parâmetro precisa ser codificado. | 2025-10-30T20%3A12%3A17.928020Z |
originTla | Sequência (3 letras) | Y | Especifique o código do aeroporto de origem da viagem: IATA. | LAS |
returnStartDateTime | Representação em formato de string de uma data, seguindo o padrão ISO 8601. | Necessário apenas para viagens de ida e volta. | Especifique a data e a hora de retorno da viagem a partir do destino. De acordo com a norma ISO 8601, pode incluir apenas a data, a hora e o fuso horário. O valor desse parâmetro precisa ser codificado. | 2025-11-10T20%3A12%3A17.928020Z |
destinationTla | Sequência (3 letras) | Y | Especifique o código do aeroporto de destino da viagem: IATA. | JFK |
bookingDateTime | Representação em formato de string de uma data, seguindo o padrão ISO 8601. | Y | Especifique a data e a hora da reserva efetuada. De acordo com a norma ISO 8601, pode incluir apenas a data, a hora e o fuso horário. O valor desse parâmetro precisa ser codificado. | 2025-07-25T20%3A12%3A17.928020Z |
bookingStatus | Sequência | Caso não seja fornecido, assumiremos que a reserva está confirmada. | Os valores válidos para este parâmetro são: confirmed, pendingou failedNota: As taxas com desconto aplicam-se apenas quando o bookingStatusé confirmed. | confirmed |
attachDL | Booleano | Y | Defina o valor como verdadeiro para ativar as taxas de adesão com desconto. | true |
signature | Sequência | Y | Gerado server-side pelo parceiro com base em uma chave secreta fornecida por Expedia Group. O comprimento dessa sequência é exatamente 27 caracteres. Codifique a assinatura binária resultante. | BcND1F7KElTyGtyUHeXHd2JJLFs |
Nota: Os parâmetros de solicitação diferenciam maiúsculas de minúsculas. O uso incorreto de maiúsculas e minúsculas resultará em erro.
URL de solicitação de deeplink:
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
Etapa 2: Codifique o URL do deeplink usando UTF-8
URL de deeplink 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
Etapa 3: Adicione todos os parâmetros necessários para habilitar as taxas de conexão.
outboundEndDateTime(codificado) + originTLA + returnStartDateTime (codificado) + destinationTLA + bookingDateTime (codificado) + partnerid +attachDL
Etapa 4: Construir URL para geração de assinatura (não incluir domínio)
endpoint+ link direto codificado url + outboundEndDateTime (codificado) + originTLA + returnStartDateTime (codificado) + destinationTLA + bookingDateTime (codificado) + partnerid +attachDL
Exemplo
/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: Substitua Expediapela sua marca
Etapa 5: Assinar a solicitação/gerar a assinatura
A string (URL) obtida na Etapa 4 deve ser assinada usando o algoritmo HMAC-SHA1 com a chave secreta/privada compartilhada por Expedia Group. Na maioria das bibliotecas criptográficas, a assinatura resultante estará em formato binário, podendo ser necessário decodificar a chave para seu formato binário original.
Existem diversas implementações dessa função hash criptográfica definidas na RFC 2104 para várias linguagens e frameworks de computador. A lista a seguir é um subconjunto das implementações disponíveis:
- Java
- JavaScript
- C#
- Python
- Ruby
Etapa 6: Codifique a assinatura binária resultante
Codifique a assinatura binária usando Base64URL modificado, que substitui os caracteres +e /da saída Base64URL por - (hífen) e _ (sublinhado), respectivamente, para tornar a URL segura (consulte RFC 4648 para obter informações adicionais). A assinatura deve ter exatamente 27 caracteres.
Exemplos
bj01fgT85mUiRmzxxSufSmlGpiI
9Wzh3Er5-ob35Hbxbk1ltyYHex4
FeW_4NNu4ITpGaSt1KZl-vLb9PIAlém disso, é importante observar que o preenchimento = (se houver) deve ser removido da string codificada em Base64URL.
Etapa 7: Construindo a URL de solicitação final
Construa a URL final do deeplink com estes elementos:
domain+ endpoint + deeplink codificado url + outboundEndDateTime (codificado) + originTLA + returnStartDateTime (codificado) + destinationTLA + bookingDateTime (codificado) + partnerid + attachDL +signature
Exemplo
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
Etapa 8: Incorpore o URL final no caminho post-booking da companhia aérea.
Lista de verificação
Antes de incorporar o conteúdo no caminho post-booking (como em um e-mail), verifique os seguintes elementos.
Assinatura
- Em formato Base64URL (não hexadecimal).
- Tratado como um número inteiro (e não uma string) ao converter para a codificação Base64URL: Substituir
+com-e/com_se necessário. Por exemplo:m6y13j0747-x_h81wEzR9jE1fco=. - Remover o acolchoamento
=(se houver) da string codificada em Base64URL. - Com exatamente 27 caracteres.
- A chave secreta não é visível publicamente no lado do cliente.
Parâmetros
- Os valores são percent-encoded UTF-8
>> Leia sobre a codificação percentual de UTF-8. - Todos os parâmetros necessários foram passados.
Domínio e ponto final
- O valor correto é
/xsell-redirect-pwa. - O URL da solicitação final deve ser uma combinação de
domain+endpoint+ link direto codificadourl+outboundEndDateTime(codificado) +originTLA+returnStartDateTime(codificado) +destinationTLA+bookingDateTime(codificado) +partnerid+attachDL+signature
Testes
Verifique se o módulo está anexado antes da implantação em ambiente de teste/produção. A solicitação deve redirecionar para a página de resultados propriedade com base nos critérios de pesquisa no URL de link direto codificado.
Observação: A solução Expedia suporta apenas um ambiente de produção. Se você deseja realizar testes em pre-production, precisará apontar seu domínio pre-production para o domínio de produção da Expedia.