建置請求 URL
請求 URL (將從附加模組傳回結果的 URL) 由網域、端點、請求參數和簽章參數組成。此範例顯示,已確認 2022 年 11 月 12 日預訂的飛往洛杉磯國際機場的航班,可供 2 名成人乘坐,出發日期為 2023 年 1 月 2 日,返回日期為 2023 年 1 月 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¤cyCode=USD&bookingDateTime=2022-11-12T12%3A32%3A15%2B08%3A00&bookingStatus=confirmed&signature=bj01fgT85mUiRmzxxSufSmlGpiI
建構請求參數
一般來說,請求參數包括有關預訂的詳細信息,例如目的地以及行程開始和結束日期。此資訊用於為附加模組產生建議。有些參數在請求中是可選的,但有些參數是傳回結果所必需的。
可用的請求參數
參數 | 說明 | 範例值 | 必填 |
---|---|---|---|
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 個字元的字串 注意:請求 URL 必須包含此參數 (對於包含航班的預訂) 或 latitude 和 longitude (如果不包含航班) | LAX | 有條件要求 |
latitude 和 longitude | 指定旅行目的地座標的最多 12 位小數的浮點值 注意:請求 URL 必須包含此參數 (如果不包含航班) 或 destinationTla (對於包含航班的預訂) | 緯度=40.7141667 &經度=-74.0063889 | 有條件要求 |
signature | 您將根據我們提供的密鑰生成由 27 個字元組成的字母數字字串值 請參閱構建請求 URL 以了解更多信息 | BcND1F7KElTyGtyUHeXHd2JJLFs | 是 |
numOfAdults | 整數,指定預訂中的成人人數;最小值為 1 | 2 | — |
numOfChildren | 指定預訂兒童人數的整數 | 3 | — |
childAges | Comma-delimited 整數數組,指定預訂中任何兒童的年齡;僅當傳遞 numOfChildren 時才需要 | 5,4,2 | 是的,如果傳遞了numOfChildren |
我們提供了一些場景來幫助您了解簡單和更複雜的行程的價值。
建置請求 URL
所有請求 URL 都將包含網域和端點,後面跟著請求參數,並以使用金鑰產生的簽章結尾。
金鑰
金鑰是 Expedia 安全共享的字母數字字串,用於產生驗證交易的簽章。它的長度為 36 個字符,並且與 partnerId 相關聯。
域、端點和請求參數
您的請求 URL 以網域名稱開頭。我們建議您保留請求 URL protocol-agnostic 的 Expedia 網域://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¤cyCode=USD&bookingDateTime=2022-11-12T12%3A32%3A15%2B08%3A00&bookingStatus=confirmed
第 2 步:簽署請求
從步驟 1 獲得的字串 (包括前導/
) 應簽署hash-based 訊息認證演算法(HMAC-SHA1)使用 Expedia 共享的金鑰。在大多數加密庫中,產生的簽章都是二進位格式。
這個加密哈希函數有很多實現,定義在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¤cyCode=USD&bookingDateTime=2022-11-12T12%3A32%3A15%2B08%3A00&bookingStatus=confirmed&signature=bj01fgT85mUiRmzxxSufSmlGpiI
將協定 (//
或 http://
或 https://
) 和網域 (我們建議將 //xsell.expedia.com
用於 protocol-agnostic URL) 新增到結果字串的前面。
//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
步驟 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¤cyCode=USD&bookingDateTime=2022-11-12T12%3A32%3A15%2B08%3A00&bookingStatus=confirmed&signature=bj01fgT85mUiRmzxxSufSmlGpiI"></script>>
建立請求 URL 後,您就可以將其整合到頁面程式碼中。