This is an auto-generated translation

构建请求 URL

请求 URL(即从附加模块返回结果的 URL)由域、端点、请求参数和签名参数组成。此示例显示了 2 位成人于 2023 年 1 月 2 日从洛杉矶国际机场 (LAX) 出发,于 2023 年 1 月 12 日返回的已确认航班,该航班于 2022 年 11 月 12 日预订。

//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&currencyCode=USD&bookingDateTime=2022-11-12T12%3A32%3A15%2B08%3A00&bookingStatus=confirmed&signature=bj01fgT85mUiRmzxxSufSmlGpiI

构建请求参数

一般来说,请求参数包含有关已预订的详细信息,例如目的地以及行程的开始和结束日期。该信息用于为附件模块生成建议。请求中有些参数是可选的,但有些参数是返回结果所必需的。

Information

重要说明

为了安全起见,请确保所有参数值均为 percent-encoded UTF-8

可用请求参数

参数说明示例值必填
partnerId由 Expedia 提供的字符串值,用于在请求参数中标识您的组织。partnername_hotel_conf_overlay
bookingStatus指定预订状态的字符串值,该状态决定是否可以应用附加费率;如果预订状态为“待定”或“失败”,则不会应用附加费率。已确认
bookingDateTime指定预订日期的字符串值;包含日期、时间和时区,采用 ISO 8601 格式2024-08-29T05:54:02

编码值: 2024-08-29T05%3A54%3A02
outboundEndDateTime指定到达目的地的字符串值;包含 ISO 8601 格式的日期、时间和时区。2024-08-29T05:54:02

编码值: 2024-08-29T05%3A54%3A02
returnStartDateTime指定出发日期的字符串值;包含 ISO 8601 格式的日期、时间和时区 注意:如果未指定,则默认行程时长为 7 天2024-08-29T05:54:02

编码值: 2024-08-29T05%3A54%3A02
locale由 Expedia 提供的 5 个字符的字符串,指示预订时使用的语言。查看完整的本地化详情这里en_US
currencyCode由 Expedia 提供的字符串,指示预订时使用的货币。USD
destinationTLA表示目的地机场的国际航空运输协会 (IATA) 机场代码的 3 个字符字符串 (IATA)

注意:请求 URL 必须包含此参数(对于包含航班的预订)或 latitudelongitude(如果未包含航班)。
LAX有条件要求
latitudelongitude最多可包含 12 位小数的浮点值,用于指定行程目的地的坐标 注意:请求 URL 必须包含此参数(如果未包含航班)或 destinationTLA(对于包含航班的预订)。纬度=40.7141667
经度=-74.0063889
有条件要求
signature您将根据我们提供的密钥生成一个 27 个字符的字母数字字符串值 请参阅构建请求 URL了解更多信息BcND1F7KElTyGtyUHeXHd2JJLFs
numOfAdults整数,表示预订中的成人人数;最少 1 人。2
numOfChildren指定预订中儿童数量的整数3
childAgesComma-delimited 整数数组,指定预订中所有儿童的年龄;仅当传递 numOfChildren时才需要。5,4,2是的,如果传递了numOfChildren

我们列举了一些场景,以帮助您了解简单行程和更复杂行程的价值。

|

One-way 旅行示例

对于 one-way 行程,您无需将 returnStartDateTime作为结果参数的一部分包含在内。默认期限为 7 天。对于从芝加哥直飞拉斯维加斯的行程(one-way),出发时间为 2024 年 9 月 10 日下午 1 点,到达时间为当天下午 4 点,参数如下所示:

  • bookingDateTime: 2024-09-01T05:54:02
  • origin:ORD
  • destinationTLA:LAS
  • outboundEndDateTime: 2024-09-10T16:00:00

//xsell.expedia.com/xsell-pwa.js?partnerId=partner123&outboundEndDateTime=2024-09-10T12%3A55%3A00%2B08%3A00&destinationTLA=LAS&numOfAdults=2&locale=en_US&currencyCode=USD&bookingDateTime=2024-09-01T12%3A32%3A15%2B08%3A00&bookingStatus=confirmed&signature=bj01fgT85mUiRmzxxSufSmlGpiI

Round-trip 示例

如果请求预订往返于相同目的地、于 2024 年 9 月 14 日返回的 round-trip 航班,则应包含以下参数:

  • bookingDateTime: 2024-09-01T05:54:02
  • origin:ORD
  • destinationTLA:LAS
  • outboundEndDateTime: 2024-09-10T16:00:00
  • returnStartDateTime: 2024-09-14T18:00:00

//xsell.expedia.com/xsell-pwa.js?partnerId=partner123&outboundEndDateTime=2024-09-102T12%3A55%3A00%2B08%3A00&returnStartDateTime=2024-09-14T22%3A30%3A00%2B08%3A00&destinationTLA=LAS&numOfAdults=2&locale=en_US&currencyCode=USD&bookingDateTime=2024-09-01T12%3A32%3A15%2B08%3A00&bookingStatus=confirmed&signature=bj01fgT85mUiRmzxxSufSmlGpiI

Multi-destination 旅行示例

对于包含多个目的地的行程,我们建议只发送第一段行程的数据。

第一赛段:芝加哥至拉斯维加斯

  • bookingDateTime: 2024-09-01T05:54:02
  • origin:ORD
  • destinationTLA:LAS
  • outboundEndDateTime: 2024-09-10T16:17:00
  • returnStartDateTime: 2024-09-12T13:27:00(第二赛段开始日期和时间)

第二段行程:拉斯维加斯至旧金山(非必需)

  • origin:LAS
  • destinationTLA旧金山
  • StartDateTime: 2024-09-12T13:27:00
  • outboundEndDateTime: 2024-09-15T16:10:00

第三段行程:旧金山至芝加哥(非必经)
  • origin旧金山
  • destinationTLA:ORD
  • StartDateTime: 2024-09-15T16:15:00
  • outboundEndDateTime: 2024-09-19T20:22:00

//xsell.expedia.com/xsell-pwa.js?partnerId=partner123&outboundStartDateTime=2024-09-10T11%3A05%3A00&outboundEndDateTime=2024-09-10T16%3A17%3A00&origin=ORD&destinationTLA=LAS&outboundStartDateTime=2024-09-12T13%3A27%3A00&outboundEndDateTime=2024-09-12T16%3A10%3A00&origin=LAS&destinationTLA=SFO&outboundStartDateTime=2024-09-14T16%3A15%3A00&outboundEndDateTime=2024-09-14T20%3A22%3A00&origin=SFO&destinationTLA=ORD&bookingDateTime=2024-09-01T05:54:02

构建请求 URL

所有请求 URL 都将包含域名和端点,后跟请求参数,并以使用密钥生成的签名结尾。

密钥

密钥是一个字母数字字符串,由 Expedia 安全地共享,用于生成验证交易的签名。它将包含 36 个字符,并且与 partnerId 相关联。

Warning

注意

请将您的私钥保存在安全的地方,并且仅用于生成签名。不要在构建 URL 时将密钥作为参数传递。

域、端点和请求参数

您的请求 URL 以域名开头。我们建议您将 Expedia 域名保留用于请求 URL protocol-agnostic://xsell.expedia.com/。URL 的下一部分是请求字符串,它包含 case-sensitive 端点。/xsell-pwa.js?以及请求参数。请记住,请求参数应为 UTF-8 percent-encoded.

步骤 1:构建请求字符串

请求字符串包含端点和请求参数(但不包括域名)。它应该看起来像这样。

/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&currencyCode=USD&bookingDateTime=2022-11-12T12%3A32%3A15%2B08%3A00&bookingStatus=confirmed

步骤二:签署请求

从步骤 1 获得的字符串(包括前导字符串)/) 应该用 a 签名hash-based 消息认证算法使用 Expedia 共享的密钥进行 (HMAC-SHA1)。在大多数加密库中,生成的签名将采用二进制格式。

这种加密哈希函数有许多实现方式,定义在…… RFC 2104适用于计算机语言和框架。可用的实现方式包括:

步骤 3:对生成的签名进行编码

使用修改后的二进制签名对二进制签名进行编码。 Base64对于 URL,它取代了+/Base64 输出的字符-(连字符)和_(下划线),分别使其 URL 安全(参见RFC 4648(更多信息)。它应该看起来像这样:

bj01fgT85mUiRmzxxSufSmlGpiI

还需要注意的是,衬垫=(如果有的话)应从 Base64 编码字符串中删除。

步骤 4:构建最终请求 URL

将步骤 3 中的签名作为 signature 参数附加到步骤 1 中的字符串。签名应该始终是最终请求 URL 的最后一个参数。

//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&currencyCode=USD&bookingDateTime=2022-11-12T12%3A32%3A15%2B08%3A00&bookingStatus=confirmed&signature=bj01fgT85mUiRmzxxSufSmlGpiI

在生成的字符串前面加上协议(//http://https://)和域名(我们建议 protocol-agnostic URL 使用 //xsell.expedia.com)。

//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&currencyCode=USD&bookingDateTime=2024-04-12T12%3A32%3A15%2B08%3A00&bookingId=123ABC&bookingStatus=confirmed&signature=bj01fgT85mUiRmzxxSufSmlGpiI

步骤 5:添加 JavaScript 代码

您将使用最终请求 URL 作为模块应显示的页面上的 JavaScript src 属性。例如:

<<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&currencyCode=USD&bookingDateTime=2022-11-12T12%3A32%3A15%2B08%3A00&bookingStatus=confirmed&signature=bj01fgT85mUiRmzxxSufSmlGpiI"></script>>

创建请求 URL 后,就可以将其集成到页面代码中了。

您觉得这个页面有用吗?
我们该如何改进这些内容?
感谢您帮助我们改进!