Construindo a URL da solicitação
A URL de solicitação — a URL que retornará os resultados de um módulo de anexação — consiste em um domínio, um endpoint, parâmetros de solicitação e um parâmetro de assinatura. Este exemplo mostra um voo confirmado para LAX para 2 adultos, com partida em 2 de janeiro de 2023 e retorno 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 anexação. Alguns parâmetros são opcionais em uma solicitação, mas outros 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 string fornecido pela Expedia que é usado para identificar sua organização nos parâmetros da solicitação. | partnername_hotel_conf_overlay | Sim |
bookingStatus | Valor de texto que especifica o status da reserva, o qual determina se as tarifas adicionais podem ser aplicadas; se o status da reserva for pendente ou falhou, nenhuma tarifa adicional será aplicada. | confirmado | Sim |
bookingDateTime | Valor de texto que especifica a data da reserva; inclui data, hora e fuso horário no formato ISO 8601</a> | 2024-08-29T05:54:02 Valor codificado: 2024-08-29T05%3A54%3A02 | Sim |
outboundEndDateTime | Valor de texto 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 texto que especifica a partida do destino; inclui data, hora e fuso horário no formato ISO 8601 Nota: 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 os detalhes completos da localização aqui. | en_US | Sim |
currencyCode | Sequência 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) (IATA) para o destino. Observação: o URL da solicitação deve incluir este parâmetro (para reservas que incluem um voo) OU latitudee longitude (se nenhum voo estiver incluído) | LAX | Condicionalmente exigido |
latitude e longitude | Valor decimal com até 12 casas decimais que especifica as coordenadas do destino da viagem Observação: o 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 exigido |
signature | Valor de string alfanumérico de 27 caracteres que você irá 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 a quantidade de adultos na reserva; mínimo 1. | 2 | — |
numOfChildren | Número inteiro que especifica a quantidade de crianças na reserva. | 3 | — |
childAges | Comma-delimited Matriz de inteiros que especifica as idades de quaisquer crianças na reserva; necessária apenas se numOfChildrenfor passado | 5,4,2 | Sim, se numOfChildrenfor passado |
Incluímos alguns cenários para ajudar você a entender os valores tanto para viagens simples quanto para viagens mais complexas.
Construindo a URL da solicitação
Todas as URLs de requisição incluirão o domínio e o endpoint, seguidos pelos parâmetros da requisição, e terminarão com a assinatura gerada com a chave secreta.
Chave secreta
Uma chave secreta é uma sequência alfanumérica compartilhada de forma segura pela Expedia e usada para gerar uma assinatura que verifica a transação. Terá 36 caracteres e está associado a partnerId.
Domínio, ponto de extremidade e parâmetros de 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.
Passo 1: Construir a string de solicitação
A string de solicitação inclui o endpoint e os parâmetros da solicitação (mas não o domínio). Deverá ficar mais ou menos assim.
/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 o caractere inicial)/) deve ser assinado com um hash-based algoritmo de autenticação de mensagens (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 dessa função hash criptográfica definidas em 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 a versão modificada. Base64 para URLs, que substitui o+ e/ caracteres da saída Base64 com- (hífen) e_ (sublinhado), respectivamente, para torná-lo seguro para URLs (veja RFC 4648 (para informações adicionais). Deverá ficar semelhante a isto:
bj01fgT85mUiRmzxxSufSmlGpiIÉ importante notar também que o acolchoamento= (se houver) deve ser removido da string codificada em Base64.
Etapa 4: Construir a URL de solicitação final
Anexe a assinatura da etapa 3 à string na etapa 1 como um parâmetro signature. A assinatura deve sempre ser o último parâmetro da URL da requisiçã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
Passo 5: Adicione o código JavaScript
Você usará o 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 a URL de solicitação, você estará pronto para integrá-la ao código da sua página.