这是自动生成的译文

生成签名并构建请求 URL

生成签名和构建请求 URL 的检查清单:

条目来源备注
密钥/私钥由 Expedia Group 分享。密钥是一个 36 个字符的字母数字字符串,用于生成签名。它与……有关partnerId。
例子:6f437404-261d-4beb-a7fc-43b92f694831。
注意: 将密钥保存在安全的地方,并且仅在 server-side 上使用它来生成签名。它不应该作为参数在 URL 构建过程中传递。
领域合作伙伴领域您网站的域名元素。
端点/xsell-redirect-pwa?请注意,我们的端点是 case-sensitive,因此所有参数名称必须与本文档中所示的拼写完全一致。

Step-by-step 指南

步骤 1:构建指向房源结果页面的深度链接请求 URL

使用合作伙伴域名代替示例中的 Expedia 域名,构建指向房产结果页面的深度链接请求 URL。根据深度链接指南格式化搜索参数和跟踪代码。

请求 URL 参数

参数类型必填说明样本值
partnerId字符串Y由 Expedia Group 提供。partnername-POS-Ext-Flight-Conf-EmailDL
url字符串Y按照深度链接指南,使用合作伙伴域名、搜索参数和跟踪代码创建酒店结果页面的深度链接请求 URL。请确保已包含跟踪代码 (mdpcid),并且输出参数的值正确为 URL-encoded。
>> 阅读深度链接指南
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符合 ISO 8601 标准的日期字符串表示形式。Y请注明行程抵达目的地的日期和时间。根据 ISO 8601 标准,它应该只包含日期、时间和时区。

该参数值需要进行编码。
2025-10-30T20%3A12%3A17.928020Z
originTla字符串(3 个字母)Y指定行程出发地的 IATA 机场代码。LAS
returnStartDateTime符合 ISO 8601 标准的日期字符串表示形式。仅往返需要请指定从目的地返回的日期和时间。根据 ISO 8601 标准,它可以只包含日期、时间和时区。

该参数值需要进行编码。
2025-11-10T20%3A12%3A17.928020Z
destinationTla字符串(3 个字母)Y指定行程目的地的 IATA 机场代码。JFK
bookingDateTime符合 ISO 8601 标准的日期字符串表示形式。Y请注明预订日期和时间。根据 ISO 8601 标准,它可以只包含日期、时间和时区。

该参数值需要进行编码。
2025-07-25T20%3A12%3A17.928020Z
bookingStatus字符串如未提供相关信息,我们将默认预订已确认。此参数的有效值为:confirmed、pending或failed
**注意:**折扣率仅在bookingStatus为confirmed时适用。
confirmed
attachDL布尔值Y将该值设置为 true 可启用折扣附加费率。true
signature字符串Y由合作伙伴根据 Expedia Group 提供的密钥生成 server-side。这个字符串的长度正好是 27 个字符。对生成的二进制签名进行编码。BcND1F7KElTyGtyUHeXHd2JJLFs

注意: 请求参数区分大小写。大小写错误会导致程序出错。

深度链接请求 URL:

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

步骤 2:使用 UTF-8 对深度链接 URL 进行编码

编码后的深度链接 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

步骤 3:添加所有必需参数以启用附加速率

outboundEndDateTime(已编码)+ originTLA + returnStartDateTime(已编码)+ destinationTLA + bookingDateTime(已编码)+ partnerid +attachDL

步骤 4:构建用于生成签名的 URL(不要包含域名)

endpoint+ 已编码的深度链接 url + outboundEndDateTime(已编码)+ originTLA + returnStartDateTime(已编码)+ destinationTLA + bookingDateTime(已编码)+ partnerid +attachDL

示例

/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

注意:请将 Expedia替换为您的品牌名称

步骤五:签署请求/生成签名

应使用 Expedia Group 共享的秘密/私钥,通过 HMAC-SHA1 算法对从步骤 4 获得的字符串(URL)进行签名。在大多数加密库中,生成的签名将采用二进制格式,因此可能需要将密钥解码为其原始二进制格式。

RFC 2104 中定义了这种加密哈希函数,并针对多种计算机语言和框架进行了多种实现。以下列表仅列出部分可用实现:

  • Java
  • Javascript
  • C#
  • Python
  • Ruby

步骤 6:对生成的二进制签名进行编码

使用修改后的 Base64URL 对二进制签名进行编码,将 Base64URL 输出中的 +和 /字符分别替换为 -(连字符)和 _(下划线),以使 URL 安全(有关更多信息,请参阅 RFC 4648)。签名长度必须正好是 27 个字符。

示例

bj01fgT85mUiRmzxxSufSmlGpiI

9Wzh3Er5-ob35Hbxbk1ltyYHex4

FeW_4NNu4ITpGaSt1KZl-vLb9PI

此外,需要注意的是,应从 Base64URL 编码字符串中删除填充 =(如果有)。

步骤 7:构建最终请求 URL

使用以下元素构建最终的深度链接 URL:

domain+ endpoint + 编码后的深度链接 url + outboundEndDateTime(已编码)+ originTLA + returnStartDateTime(已编码)+ destinationTLA + bookingDateTime(已编码)+ partnerid + attachDL +signature

示例

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

步骤 8:将最终 URL 嵌入到航空公司 post-booking 路径中

核对清单

在嵌入到 post-booking 路径(例如电子邮件)之前,请检查以下元素。

签名

  • 以 Base64URL 格式(非十六进制)表示。
  • 转换为 Base64URL 编码时,将其视为整数(而非字符串):替换+和-和/和_如有必要。例如:m6y13j0747-x_h81wEzR9jE1fco=。
  • 去除填充物=(如果有的话)来自 Base64URL 编码字符串。
  • 正好 27 个字符长。
  • 客户端不公开可见密钥。

参数

域和端点

  • 正确值是/xsell-redirect-pwa。
  • 最终请求 URL 应为以下各项的组合:domain +endpoint + 编码深度链接url+outboundEndDateTime(已编码)+originTLA +returnStartDateTime(已编码)+destinationTLA +bookingDateTime(已编码)+partnerid +attachDL + signature

测试

在测试/生产部署之前,请确认模块已正确附加。根据编码后的深度链接 URL 中的搜索条件,请求应重定向到房源结果页面。

笔记: Expedia 解决方案仅支持生产环境。如果你想在 pre-production 中进行测试,你需要将你的 pre-production 域名指向 Expedia 的生产域名。

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