建立請求 URL
請求 URL (即從附加模組返回結果的 URL) 由網域、端點、請求參數以及簽名參數組成。此範例顯示一筆已確認的飛往洛杉磯國際機場 (LAX) 的航班,包含 2 名成人,出發日期為 2023 年 1 月 2 日,返程日期為 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¤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 | 由 3 個字元組成的字串,表示目的地國際航空運輸協會 (IATA) 機場代碼 注意:請求 URL 必須包含此參數 ( 適用於包含航班的預訂),或者 latitude 及longitude(若未包含航班) | LAX | 有條件地必須 |
latitude 以及 longitude | 最多 12 位小數的浮點數,用於指定行程目的地的座標注意:請求 URL 必須包含此參數 (若未包含航班),或destinationTLA(針對包含航班的預訂) | 緯度=40.7141667 &longitude=-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 以該網域開頭。我們建議您保留 Expedia 的網域,用於請求 URLprotocol-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¤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://) 及網域 (針對 protocol-agnostic 格式的網址,我們建議使用//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¤cyCode=USD&bookingDateTime=2024-04-12T12%3A32%3A15%2B08%3A00&bookingId=123ABC&bookingStatus=confirmed&signature=bj01fgT85mUiRmzxxSufSmlGpiI
步驟 5:加入 JavaScript 程式碼
請將最終的請求網址用作 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 後,您就可以將其整合到頁面程式碼中了。