Construindo a URL de solicitação
A URL de solicitação — a URL que retornará resultados de um módulo de anexo — consiste em um domínio, um ponto de extremidade, parâmetros de solicitação e um parâmetro de assinatura. Este exemplo mostra um voo confirmado para LAX para 2 adultos, saindo em 2 de janeiro de 2023 e retornando em 12 de janeiro de 2023, reservado em 12 de novembro 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
Construindo parâmetros de solicitação
Em geral, os parâmetros da solicitação incluem detalhes sobre a reserva efetuada, como o destino e as datas de início e término da viagem. Essas informações são usadas para gerar recomendações para o módulo de anexo. Alguns parâmetros são opcionais em uma solicitação, mas alguns são necessários para retornar resultados.
Parâmetros de solicitação disponíveis
Parâmetro | Descrição | Exemplo do valor | Obrigatório |
---|---|---|---|
partnerId | Valor de sequência fornecido pela Expedia que é usado para identificar sua organização nos parâmetros de solicitação | partnername_hotel_conf_overlay | Sim |
bookingStatus | Valor de sequência de caracteres que especifica o status da reserva, que determina se as taxas de anexação podem ser aplicadas; se o status da reserva for pendente ou falhou, nenhuma taxa de anexação será aplicada | confirmado | Sim |
bookingDateTime | Valor de sequência de caracteres que especifica a data da reserva; inclui data, hora e fuso horário no formato ISO 8601 | 2024-08-29T05:54:02 Valor codificado: 2024-08-29T05%3A54%3A02 | Sim |
outboundEndDateTime | Valor de sequência de caracteres que especifica a chegada ao destino; inclui data, hora e fuso horário no formato ISO 8601 | 2024-08-29T05:54:02 Valor codificado: 2024-08-29T05%3A54%3A02 | Sim |
returnStartDateTime | Valor de sequência de caracteres que especifica a partida do destino; inclui data, hora e fuso horário no formato ISO 8601 Observação: se não for especificado, a duração padrão da viagem é de 7 dias | 2024-08-29T05:54:02 Valor codificado: 2024-08-29T05%3A54%3A02 | — |
locale | Sequência de 5 caracteres fornecida pela Expedia que indica o idioma em que a reserva foi feita. Veja todos os detalhes do local aqui. | en_US | Sim |
currencyCode | String fornecida pela Expedia que indica a moeda em que a reserva foi feita | US$ | Sim |
destinationTla | Sequência de 3 caracteres que indica o código do aeroporto da Associação Internacional de Transporte Aéreo (IATA) para o destino Observação: o URL da solicitação deve incluir este parâmetro (para reservas que incluem um voo) OU latitude e longitude (se nenhum voo estiver incluído) | LAX | Condicionalmente necessário |
latitude e longitude | Valor flutuante de até 12 casas decimais que especifica as coordenadas do destino da viagem Observação: a URL da solicitação deve incluir este parâmetro (se nenhum voo estiver incluído) OU destinationTla (para reservas que incluem um voo) | latitude=40.7141667 &longitude=-74.0063889 | Condicionalmente necessário |
signature | Valor de string alfanumérica de 27 caracteres que você gerará com base em uma chave secreta que fornecemos Consulte Construindo a URL da solicitação para obter mais informações | BcND1F7KElTyGtyUHeXHd2JJLFs | Sim |
numOfAdults | Número inteiro que especifica o número de adultos na reserva; mínimo 1 | 2 | — |
numOfChildren | Inteiro especificando o número de crianças na reserva | 3 | — |
childAges | Comma-delimited matriz de inteiros especificando as idades de quaisquer crianças na reserva; necessário somente se numOfChildren for passado | 5,4,2 | Sim, se numOfChildren for passado |
Incluímos alguns cenários para ajudar você a entender os valores de viagens simples e complicadas.
Construindo a URL da solicitação
Todos os URLs de solicitação incluirão o domínio e o ponto de extremidade seguidos pelos parâmetros de solicitação e terminarão com a assinatura gerada com a chave secreta.
Chave secreta
Uma chave secreta é uma sequência alfanumérica compartilhada com segurança pela Expedia e usada para gerar uma assinatura que verifica a transação. Ele terá 36 caracteres e está associado ao partnerId.
Parâmetros de domínio, ponto de extremidade e solicitação
O URL da sua solicitação começa com o domínio. Recomendamos que você mantenha o domínio Expedia para URLs de solicitação protocol-agnostic://xsell.expedia.com/
. A próxima seção da URL é a string de solicitação, que consiste no endpoint case-sensitive/xsell-pwa.js?
e os parâmetros da solicitação. Lembre-se de que os parâmetros da solicitação devem ser UTF-8 percent-encoded.
Etapa 1: construir a sequência de solicitação
A sequência de solicitação inclui o ponto de extremidade e os parâmetros da solicitação (mas não o domínio). Deveria ficar algo parecido com isto.
/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
Etapa 2: Assine a solicitação
A sequência obtida na Etapa 1 (incluindo a sequência principal/
) deve ser assinado com um Algoritmo de autenticação de mensagem hash-based (HMAC-SHA1) usando a chave secreta compartilhada pela Expedia. Na maioria das bibliotecas criptográficas, a assinatura resultante estará em formato binário.
Existem muitas implementações desta função hash criptográfica definidas no RFC 2104 para linguagens e estruturas de computador. As implementações disponíveis incluem:
Etapa 3: Codifique a assinatura resultante
Codifique a assinatura binária usando o modificado Base64 para URLs, que substitui o+
e/
caracteres da saída Base64 com-
(hífen) e_
(sublinhado), respectivamente, para torná-lo seguro para URL (consulte RFC 4648 para obter informações adicionais). Deve ficar parecido com isso:
bj01fgT85mUiRmzxxSufSmlGpiI
Também é importante observar que o preenchimento=
(se houver) deve ser removido da string codificada em Base64.
Etapa 4: Crie a URL de solicitação final
Anexe a assinatura da etapa 3 à sequência da etapa 1 como um parâmetro signature
. A assinatura deve ser sempre o último parâmetro da URL de solicitação 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
Adicione o protocolo (//
OU http://
OU https://
) e o domínio (recomendamos //xsell.expedia.com
para URLs protocol-agnostic) à string resultante.
//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
Etapa 5: adicione o código JavaScript
Você usará a URL da solicitação final como o atributo JavaScript src
na página onde o módulo deve aparecer. Por exemplo:
<<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>>
Depois de criar o URL de solicitação, você estará pronto para integrá-lo ao código da sua página.