Developer Hub
此為系統自動產生的翻譯

產生簽名並建立請求 URL

生成簽名及建構請求 URL 的檢查清單:

項目備註
私鑰由以下人士分享:Expedia Group.秘密金鑰是一串由 Expedia Group 安全共享的字母數字字串,用於產生簽名。這將是一串長度為 36 個字元的字串,且與 . 相關聯PartnerId

例如6f437404-261d-4beb-a7fc-43b92f694831

注意: 應將其存放在安全處所,且僅限於 server-side 上用於生成簽名。私密金鑰不應 在建構 URL 時作為參數傳遞。
網域合作夥伴網域
端點/xsell-redirect-pwa?另請注意,我們的端點為 case-sensitive,因此所有參數名稱的拼寫都必須與本文件中所示完全一致。

Step-by-step 指南

步驟 1:建立指向旅宿結果頁面的深度連結請求網址

請參照範例,將 Expedia 網域替換為合作夥伴網域,以建立指向旅宿結果頁面的深度連結請求網址。請依照深度連結指南的說明,格式化搜尋參數與追蹤代碼。

>> 了解深度連結

深度連結請求網址:

https://expedia.com/go/hotel/search/Destination/2025-12-22/2025-12-25?mdpcid=Expedia-IE.DPS.Expedia.ExtFlightEmail-Xsell_CTA.Hotel&CityName=ORD&SortBy=distance&NumRoom=1&NumAdult1=3&NumChild1=2&Rm1child1age=9&Rm1child2age=6

步驟 2:使用 # 對深度連結網址進行編碼 UTF-8

已編碼的深度連結網址:

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

步驟 3:附加所有必要的參數以啟用附加率

outboundEndDateTime(已編碼) +originTLA +returnStartDateTime (已編碼) +destinationTLA +bookingDateTime (已編碼) +PartnerId +attachDL

步驟 4:建立用於簽名生成的 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

步驟 5:簽署請求/產生簽名

應使用 HMAC-SHA1 演算法,並採用由 Expedia Group. 在大多數加密函式庫中,生成的簽名會以二進位格式呈現,因此可能需要將金鑰解碼回其原始的二進位格式。

RFC 2104 中定義了此加密雜湊函數的許多實作,適用於多種電腦語言與框架。以下清單是現有實作方案中的一部分:

  • Java
  • JavaScript
  • C#
  • Python
  • Ruby

步驟 6:對生成的二進位簽名進行編碼

使用針對 URL 修改過的 Base64 對二進位簽名進行編碼,該方法會將 Base64 輸出中的+/ 字元,分別替換為-(連字號)和_(底線),使 URL 變為保險箱 (更多資訊請參閱 RFC 4648)。它應該看起來像這樣:

bj01fgT85mUiRmzxxSufSmlGpiI

此外,必須注意的是,應從 base64 編碼字串中移除填充字元=(若有)。

步驟 7:建立最終的請求 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:將最終網址嵌入航空公司的 post-booking 路徑中 (e.g. 電子郵件)

清單

請確保以下事項:

  • 簽名
    • 簽名格式正確 (Base64),而非十六進位。
    • 在轉換為 Base64 編碼時,簽名會被視為整數 (而非字串)。
      • 如有必要,請將簽名中的+ 替換為-(Base64 編碼應會自動執行此操作):m6y13j0747-x/h81wEzR9jE1fco=
      • 如有必要,請將簽名中的/ 替換為_(Base64 編碼應會自動執行此操作):m6y13j0747-x_h81wEzR9jE1fco=
    • 從 Base64 編碼字串中移除「=」的填充字元 (如有)。
    • 簽名長度正好是 27 個字元。
    • 私密金鑰在客戶端不可見;它應僅在伺服器端用於產生簽名。
  • 參數
    • 所有參數值皆為 percent-encoded UTF-8中搜尋。
    • 所有必需的參數均已傳入。
  • 網域與端點
    • 終點是正確的 /xsell-redirect-pwa
  • 最終請求 URL 應由網域 + 端點 + 編碼後的深度連結組合而成:URL +outboundEndDateTime(編碼後)+originTLA +returnStartDateTime(編碼後)+destinationTLA +bookingDateTime(編碼後)+PartnerId +attachDL + signature

測試

在進行測試/生產環境部署之前,請先驗證附加模組。

請確認最終的請求 URL:

  • 該請求將根據編碼的深度連結 URL 中的搜尋條件,重新導向至旅宿結果頁面。

註: Expedia 解決方案僅支援生產環境。希望在「pre-production」中進行測試的合作夥伴,需將其 pre-production 指向 Expedia 的正式環境。

這個頁面對您有幫助嗎?
我們能如何改善內容?
感謝您協助我們進行改善!