Account Information API
あなたのサイトを利用する旅行者のアカウント情報を確認します。
アカウント情報APIには、各旅行者の詳細情報が含まれています。エクスペディアの担当者は 、このIDを使用して、購入、ロイヤルティ の交換、キャンセルなどで旅行者固有のIDを確認します。この一意の識別子は、お客様の要件やセキュリティ基準に応じて、クレジットカード番号(Payment Card Industry (PCI) 識別子)または電子メールアドレスや ロイヤルティ アカウント番号などのnon-PCI識別子にすることができます。
詳しくは共通データと回答 をご覧ください。
アカウント情報の取得
POST /user/v1/account でロイヤルティ会員やカード名義人のアカウント情報を取得するために、次のフィールドを使用します。
ヘッダー
| フィールド | 説明 | サンプル値 | フィールドタイプ | 必須/必須ではない |
|---|---|---|---|---|
partnerId | エクスペディアがが提供する、ビジネスの一意の識別子 | 貴社のブランド | 文字列 (最大 20 文字) | 必須 |
Authorization | エクスペディアが権限サーバーから受信したアクセス トークン (チームで検証) | 標準 JSON Web トークン (JWT) | 文字列 (標準 JWT 長) | — |
Authorization2 | エクスペディアから送信された JSON Web トークン (JWT) (署名とクレームは貴社側で検証) | 標準 JWT | 文字列 (標準 JWT 長) | — |
リクエスト
membershipId,loyaltyAccountNumber,cardNumber,email のいずれかを必須パラメータとして設定する必要があります。アカウントマネージャーはお客様のご要望に基づき、最適な方法をご提案いたします。
注:cardNumber を識別子として使用する場合は、以下のcardDetails とbillingAddress の表も確認する必要があります。他のパラメータはこのデータを必要としません。
| フィールド | 説明 | フィールドタイプ | 必須/必須ではない |
|---|---|---|---|
requestId | 取引リクエストの一意の識別子 | 文字列 | 必須 |
membershipId | 旅行者固有の識別子 | 文字列 | はい、オプション1 |
loyaltyAccountNumber | 旅行者のロイヤルティアカウント番号 (programAccountNumber とも呼ばれます); ロイヤルティの操作にmembershipId 以外の識別子が必要な場合にのみ入力します。 | 文字列 | はい、オプション2 |
programId | 旅行者が所属するロイヤルティプログラムの識別子、またはロイヤルティプログラムに関連するティア名 | 文字列 | — |
cardNumber | 旅行者のクレジットカード番号(暗号化) | 文字列 | はい、オプション3 |
email | お客様のEメールアドレス | 文字列 | はい、オプション4 |
レスポンス
| フィールド | 説明 | フィールドタイプ | 必須/必須ではない |
|---|---|---|---|
status | 取引ステータス (値 : Approved、Declined) | 文字列 | 必須 |
requestId | 取引リクエストの一意の識別子 (リクエストペイロードから) | 文字列 | 必須 |
programAccount | ロイヤルティ プログラム・アカウントの詳細; 入れ子になったフィールドについてはprogramAccount のテーブルを参照してください。 | — | |
languageId | サイトが閲覧可能な言語。詳細はロケール詳細ページ をご覧ください。 | 文字列 | — |
optInForMarketingEmail | ユーザーがマーケティングEメールをオプトインしているかどうか | Boolean (ブール型) | — |
channelType | サイトが最適化されているプラットフォーム (値 : WEB、MOBILE、TABLET) | 文字列 | — |
users | ネストされたフィールドについては、users テ ーブルを参照してください。 | — | |
cardDetails | 取引に使用されたクレジットカードの詳細。ネストされたフィールドについては、cardDetails テーブルを参照してください(入力された場合、ネストされた項目の一部は暗号化される必要があります)。 | — |
programAccount
| フィールド | 説明 | サンプル値 | 必須/必須ではない |
|---|---|---|---|
programId | 旅行者が所属するロイヤルティプログラムの識別子、またはロイヤルティプログラムに関連するティア名 | Aventura Gold | 必須 |
accountName | プログラム名 (programId と異なる場合) | Aventura | — |
loyaltyAccountNumber | 旅行者のロイヤルティアカウント番号 (programAccountNumber とも呼ばれます); ロイヤルティの操作にmembershipId 以外の識別子が必要な場合にのみ入力します。 | 1234567 | — |
lastFourDigitsOfCreditCard | 旅行者が予約に使用したクレジットカードの下4桁 | 0000 | — |
loyaltyConversionRatio | 支払いにおける獲得ポイント率 (例 : $1 = 1 ポイント) | — | |
loyaltyAccountBalance | 旅行者が獲得したロイヤルティポイントの現在の残高 | 2003 | 必須 |
cardDetails
| フィールド | 説明 | フィールドタイプ | 必須/必須ではない |
|---|---|---|---|
cardNumber | 旅行者のクレジットカード番号(暗号化) | 文字列 | 必須 |
cardType | 使用カードの種類(暗号化) | 文字列 | 必須 |
expirationDate | MM/YYYY形式のカードの有効期限(暗号化されています。) | 文字列 | 必須 |
billingAddress | ネストされたフィールドについては、billingAddress テーブルを参照してください。 | — |
billingAddress
| フィールド | 説明 | フィールドタイプ | 必須/必須ではない |
|---|---|---|---|
firstAddressLine | 請求先住所の1行目(暗号化) | 文字列 | 必須 |
secondAddressLine | 請求先住所の2行目 | 文字列 | — |
thirdAddressLine | 請求先住所の3行目 | 文字列 | — |
city | 請求先住所の市区町村要素 | 文字列 | — |
province | 請求先住所の都道府県要素 | 文字列 | — |
countryCode | 請求先住所の国要素 | 文字列 | — |
postalCode | 請求先住所の郵便番号要素(暗号化) | 文字列 | 必須 |
ユーザー
| フィールド | 説明 | サンプル値 | 必須/必須ではない |
|---|---|---|---|
userId | 旅行者固有の識別子。 membershipId | 必須 | |
name | 旅行者の姓名 | — | — |
firstName | 旅行者のファーストネーム。 name | Bob | 必須 |
middleName | 旅行者のミドルネーム。 name | Robert | — |
lastName | 旅行者の姓。 name | Jones | 必須 |
contactInfo | 旅行者の連絡先(住所、Eメール、電話番号など | — | — |
address | 旅行者の住所(番地、市町村、都道府県、郵便番号を含む)。 contactInfo | — | — |
streetAddress | 旅行者の住所。 address | 123 Main St. | — |
city | 旅行者の市区町村の住所。 address | Boston | — |
state | 旅行者の住所の州。 address | MA | — |
country | 旅行者の住所の国。 address | USA | — |
postalCode | 旅行者の住所の郵便番号。 address | 02112 | — |
taxProvince | 旅行者が納税する州または県。 address | MA | — |
email | 旅行者のEメールアドレス。 contactInfo | brjones@somewhere.com | — |
contactNumber | 旅行者の電話番号。 contactInfo | 555-555-5555 | — |
userType | 旅行者がシングル(プライマリ)ユーザーであるか、組織に所属しているか | — | |
dateOfBirth | 旅行者の生年月日 | — |
クレジットカードの暗号化と復号化
検証のために旅行者識別子としてcardNumber を使用する場合、一部の情報を暗号化する必要があります。エクスペディ アでは、クレジットカード情報を暗号化および復号化するために、industry-standard JWE (JSON Web Encryption)技術、すなわち公開鍵と秘密鍵のペアを使用した非対称暗号化を使用して、PCI情報を安全に取り扱う必要があります。
暗号化のユースケース
以下で暗号化を行う必要があります。
- お願いします:
cardNumber - 応答してください:
cardDetails
リクエストパラメーターでは、貴社が 2048 ビットの CA (認証局) 署名 RSA (Rivest Shamir Adleman) 秘密鍵証明書を設定し、エクスペディアと共有する必要があります。次に、エクスペディアでは貴社の公開鍵を使って、JWE と RSA で cardNumber フィールドを暗号化します。
レスポンスパラメーターでは、エクスペディアが 2048 ビットの CA 署名 RSA 秘密鍵を設定し、対応する公開鍵証明書を共有し、貴社と共有します。その後、貴社でエクスペディアの公開鍵を使用して、JWE と RSA で cardDetails の各要素を暗号化します。
暗号化プロセスの手順は以下のとおりです。
暗号化 (ステップ別)
ステップ 1 : 公開証明書を取得して RSA 2048 公開鍵を取得します。
- 256 ビット長のランダ ムな対象鍵 (RSK) を生成します。
- RSA-OAEP-256 アルゴリズムを使用し、RSA 2048 公開鍵で RSK を暗号化します。
ステップ 2 : 96 ビット長のランダム初期化ベクトル (IV) を生成します。
ステップ 3 : RSK、IV、アルゴリズム A256GCM を使用して平文データを暗号化し、暗号文と認証タグデータを作成します。
ステップ 4 : 暗号文を Base64URL でエンコードして Base64URL (JWE 暗号文) を生成します。
ステップ 5 : 認証タグ、IV、RSK、JWE ヘッダー JSON を Base64URL でエンコードして以下を生成します。
- 認証タグデータ : Base64URL (JWE 認証タグ)
- IV : Base64URL (JWE 初期化ベクトル)
- RSK : Base64URL (JWE の暗号化された鍵)
- JWE ヘッダー JSON : Base64URL (UTF8 (JWE ヘッダー))
次に、ピリオド ('.') で区切られた、Base64URL でエンコードされたパーツから成るコンパクトなフォーマットに JWE オブジェクトをシリアル化して以下を生成します。
Base64URL (UTF8) (JWE ヘッダー) || '.' || Base64URL (JWE の暗号化された鍵) || '.' || Base64URL (JWE 初期化ベクトル) || '.' || Base64URL (JWE 暗号文) || '.' || Base64URL (JWE 認証タグ)
リクエスト内のカード番号の復号化
エクスペディアでは、リクエストのcardNumber を暗号化します。復号化パスは暗号化パスを逆さまにしたものです。
- 暗号化されたJWEを受信したら、JWEの最初のセクションであるJOSEヘッダをデコードして、アルゴリズム、暗号化、
keyId(alg、enc、kid)を特定する必要があります。 - その後、
iat(issued-at: JWTが発行された時間)を検証し、現在の時間と5分以上異なっていないことを確認します。(トークンは 5 分後に失効します)。 - 次に、秘密鍵を取得して JWE 暗号鍵を復号化します。
- その後、復号化された RSK、JWE 初期化ベクトル、JWE 認証タグを使用して、JWE 暗号文パラメーターを復号化し、それを検証できます。