Account Information API
サイトをご利用の旅行者のアカウント情報を使用して本人確認を行ってください
アカウント情報APIには 、各旅行者に関する詳細情報が含まれています。エクスペディアの担当者は、この情報を使用して、購入、ロイヤルティ の利用、キャンセルなどに関する旅行者の一意の識別子を確認いたします。この一意の識別子は、お客様の要件やセキュリティ基準に応じて、クレジットカード番号(ペイメント・カード・インダストリー(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 | ユーザーがマーケティングメールの受信を承諾しているかどうか | 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 | 旅行者の連絡先情報(住所、メールアドレス、電話番号など) | — | — |
address | 旅行者の住所(通り名、市、州または県、郵便番号を含む)。以下の項目にネストされています。 contactInfo | — | — |
streetAddress | 旅行者の住所;以下にネストされています address | 123 Main St. | — |
city | 旅行者の住所の都市名;以下にネストされています address | Boston | — |
state | 旅行者の住所の状況;以下にネストされています address | MA | — |
country | 旅行者の住所の国;以下にネストされています address | USA | — |
postalCode | 旅行者の住所の郵便番号;以下にネストされています address | 02112 | — |
taxProvince | 旅行者が税金を納める州または県。以下の項目にネストされています。 address | MA | — |
email | 旅行者のメールアドレス;以下にネストされています 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(JWTが発行された時刻:issued-at:)を確認し、現在時刻との差が5分以内であることを確認してください。(トークンは 5 分後に失効します)。 - 次に、秘密鍵を取得して JWE 暗号鍵を復号化します。
- その後、復号化された RSK、JWE 初期化ベクトル、JWE 認証タグを使用して、JWE 暗号文パラメーターを復号化し、それを検証できます。