- インテグレーションガイドライン
- 支払詳細の複数のソースの使用
支払詳細の複数のソースの使用
いくつかのQNB ALAHLI<<webServicesIntegration>> 呼び出し (たとえば Pay、Authorize、Refund、Capture、Save、 Initiate Authentication、Authenticate Payerなど) を行う場合、カードの詳細を提供する必要があります。これらの支払詳細は、いくつかの「ソース」を使用して指定できます。
サポートされるソース
- リクエストフィールド: リクエストで直接指定された支払詳細(カード番号、カードの有効期限、カードのセキュリティコードなど)
- セッション: 支払セッションに対して保管されている支払詳細。
- カードのトークン: トークンに対して安全なリポジトリに保存された支払詳細(<<tokenization>> を使用する場合)
優先ルール
カードの詳細(カード番号など)が 2 つ以上のソースに含まれているために 1 つのリクエストで複数回提供された場合、使用するソースは優先ルールによって決定されます。優先順位は以下のとおりです。
- <<webServicesIntegration>>リクエストフィールド
- セッション識別子
- カードのトークン
つまり、<<webServicesIntegration>>リクエストフィールドに含まれるデータは、トークンの詳細を上書きするセッションに対して保存されたデータを上書きします。
たとえば、Pay リクエストにセッション識別子(カード番号、カードの有効期限、および CSC を含む)とトークン(カード番号とカードの有効期限を含む)の両方を含めた場合、優先順位に基づいて、セッション識別子で指定されたカードの詳細が金融取引で使用されます。
例
支払詳細は、これらのソースのいずれかを使用するか、またはいくつかを組み合わせて指定できます。
トークンとセッションからの詳細による取引の実行
トークンに保存されたカード番号と有効期限、およびセッションに収集された CSC を使用して、Pay 操作を送信します。次のリクエストの例では、Pay リクエストでトークンとセッションの両方のソースを提供する方法を示します。
HTTP メソッド | PUT |
URL | https://qnbalahli.test.gateway.mastercard.com/api/rest/version/72/merchant/<merchant>/order/<orderId>/transaction/<transactionId> |
JSON |
{ "apiOperation": "PAY", "session": { "id": "SESSION000177777777777777777777" }, "sourceOfFunds": { "token": "9999999999999999" }, "order": { "amount": "34.00", "currency": "AUD" } } |
上記の JSON は次のことを想定しています。
- 「SESSION000177777777777777777777」という識別子を持つセッションが以前作成され、CSC が含まれています。
- 「9999999999999999」という識別子を持つトークンが以前保存され、カード番号と有効期限が含まれています。
新しい有効期限によるトークンの更新
Tokenization 操作を使用して、保存されたトークンで有効期限を更新します(が、カード番号は変更しません)。リクエスト URL で指定するトークンは、更新するトークンを識別します。この同じトークンを支払詳細のソースとして指定すると、以前保存された詳細が再利用されます。つまり、カード番号を再取得する必要はありません。リクエストの [Card Details] セクションで新しい有効期限を提供した場合、その値はトークンに保存済みの有効期限を上書きします(「優先ルール」を参照)。
次のリクエストの例では、Tokenization 操作で支払詳細とトークンの両方のソースを提供する方法を示します。
HTTP メソッド | PUT |
URL | https://qnbalahli.test.gateway.mastercard.com/api/rest/version/72/merchant/<merchant>/token/9999999999999999 |
JSON |
{ "sourceOfFunds": { "provided": { "card": { "expiry": { "month": "05", "year": "13" }, "number": "5123456789012346" } }, "type": "CARD" } } |
上記の JSON は次のことを想定しています。
- 「9999999999999999」という ID を持つトークンが以前保存され、カード番号と有効期限が含まれています。
この操作の結果、トークン「9999999999999999」の有効期限は 05/13 になります(カード番号は変更されません)。