リクエストURLの構築
リクエストURL(アタッチモジュールから結果を返すURL)は、ドメイン、エンドポイント、リクエストパラメータ、シグネチャパラメータで構成されます。この例では、2022年11月12日に予約された、2023年1月2日出発、2023年1月12日帰着のLAX行きフライト(大人2名様)を示しています。
//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 | リクエスト パラメータで組織を識別するために使用される、エクスペディアが提供する文字列値 | 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 | エクスペディアが提供する、予約が行われた言語を示す5文字の文字列。ロケールの詳細はこちら。 | en_US | 必須 |
currencyCode | エクスペディアが提供する、予約が行われた通貨を示す文字列 | JPY | 必須 |
destinationTla | 目的地の国際航空運送協会(IATA) )の空港コードを示す3文字の文字列 注:リクエストURLには、このパラメータ(フライトを含む予約の場合)または latitude 、longitude (フライトを含まない場合)のいずれかを含める必要があります。 | LAX | 条件付き |
latitude そして longitude | 旅行の目的地の座標を指定する小数点以下12桁までのフロート値 注:リクエストURLには、このパラメータ(フライトを含まない場合)またはdestinationTla (フライトを含む予約の場合)のいずれかを含める必要があります。 | 緯度=40.7141667 &longitude=-74.0063889 | 条件付き |
signature | 弊社が提供する秘密鍵に基づいて生成される27文字の英数字文字列値 リクエストURLの構築 を参照してください。 | BcND1F7KElTyGtyUHeXHd2JLFs | 必須 |
numOfAdults | 予約の大人の人数を示す整数。 | 2 | — |
numOfChildren | 予約の子供の数を指定する整数 | 3 | — |
childAges | Comma-delimited numOfChildren が渡された場合のみ必要です。 | 5,4,2 | numOfChildren 。 |
簡単な旅行と複雑な旅行の両方の値を理解するために、いくつかのシナリオを用意しました。
リクエストURLの作成
すべてのリクエストURLは、ドメインとエンドポイントに続いてリクエストパラメータを含み、秘密鍵で生成された署名で終わります。
シークレットキー
秘密鍵は、エクスペディアによって安全に共有される英数字の文字列で、トランザクションを検証する署名を生成するために使用されます。36文字の長さで、#に関連付けられます。partnerId.
ドメイン、エンドポイント、リクエストパラメータ
リクエストURLはドメインで始まります。リクエストURLにはExpediaドメインを使用することをお勧めしますprotocol-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) で署名する必要があります。ほとんどの暗号ライブラリでは、結果の署名はバイナリ形式になります。
この暗号ハッシュ関数は、RFC 2104 でコンピュータ言語やフレームワーク向けに定義されており、多くの実装があります。利用可能な実装は以下のとおりです:
ステップ3:結果の署名をエンコード
URL用に修正されたBase64 を使ってバイナリ署名をエンコードします。これはBase64出力の+
と/
の文字をそれぞれ-
(ハイフン)と_
(アンダースコア)に置き換えてURLセーフにします(追加情報はRFC 4648 を参照)。こんな感じです:
bj01fgT85mUiRmzxxSufSmlGpiI
また、Base64エンコードされた文字列からパディング=
(もしあれば)を削除することも重要です。
ステップ4: 最終リクエストURLの作成
ステップ3の署名を、ステップ1の文字列にsignature
パラメータとして追加します。署名は常に最終リクエスト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
結果の文字列には、プロトコル (//
ORhttp://
ORhttps://
) とドメイン (protocol-agnostic URLには//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コードの追加
最終的なリクエスト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を作成したら、ページコードに統合する準備ができました。