Developer Hub
This is an auto-generated translation

產生簽名並建立請求 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 (請勿包含網域)

終端點 + 編碼後的深度連結 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:簽署請求/產生簽名

應使用從步驟 4 獲得的字串 (URL),並採用 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 中的搜尋條件,重新導向至旅宿結果頁面。

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

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