認証シーケンス
次のシーケンス図は、3DS2認証処理について、特に3DS2フローにおけるGPaymentsの APIを使用した3DSリクエスターの役割に焦点を当てて各ステップを段階を追って示したものです。
備考
ActiveServerを統合するには、フロントエンドに3DS web adapterを、バックエンドに3DSリクエスターを実装する必要があります。
- 処理 1: 認証の初期化
- ステップ1~ステップ7
- 処理 2: 認証の実行
- フリクションレス・フロー: ステップ8~ステップ13、およびステップ14(F)
- チャレンジ・フロー: ステップ8~ステップ13、およびステップ14(C)~ステップ19(C)
- 処理 3: 認証結果の取得
- フリクションレス・フロー: ステップ15(F)~ステップ17(F)
- チャレンジ・フロー: ステップ20(C)~ステップ22(C)
認証の初期化用の情報を送信 ←3DSリクエスターの処理
- カード番号やカード会員の氏名など、決済ページで得られたカード会員情報が、3DS web adapterに送信されます。これは加盟店のフロントエンドシステムをシミュレートした簡潔なJavaScriptのコードです。
認証の初期化 ←3DSリクエスターの処理
- 3DS web adapterは決済ページから収集した情報を使用して3DSリクエスターへのPOSTリクエストを行い、3DSリクエスターに認証の初期化を要求します。
認証の初期化 (
/brw/init/{messageCategory}
) ←3DSリクエスターの処理- 3DSリクエスターはフロントエンドから情報を取得し、
/brw/init/{messageCategory}
へのPOST API呼び出しを行って認証を初期化します。 - ここで送信される重要なフィールドは
eventCallbackUrl
であり、ActiveServerがこのURLへのコールバックを行ってブラウザーの情報収集完了を通知できるようステップ8を開始するために必要です。
- 3DSリクエスターはフロントエンドから情報を取得し、
threeDSServerCallbackUrl
を応答/brw/init/{messageCategory}
からの正常な応答にはthreeDSServerCallbackUrl
とthreeDSServerTransID
が含まれています。
threeDSServerCallbackUrl
を応答 ←3DSリクエスターの処理- 3DSリクエスターは3DS web adapterに
threeDSServerCallbackUrl
を返します。
- 3DSリクエスターは3DS web adapterに
コールバック
iframe
を設置 ←3DSリクエスターの処理src
属性をthreeDSServerCallbackUrl
に設定した非表示のiframe
を挿入します。これにより、ActiveServerは3DSリクエスターに接続できる状態になります。ActiveServerは、このiframe
へのコールバックを行います。
ブラウザ情報の収集
- ActiveServerは
iframe
を使用してブラウザー情報を収集し、ACSが3DSメソッドデータを収集できるようにします。次に、ACSは、用意されたiframe
を使用して3DSメソッドデータを収集します。
- ActiveServerは
コールバック関数の呼び出し ←3DSリクエスターの処理
- 認証の初期化中、3DSメソッドが終了またはスキップされたときにACSが3DSリクエスターに通知できるよう、3DSリクエスターは
eventCallBackUrl
を送信します。 ステップ7で設置したiframe
からPOST要求がこのeventCallBackUrl
に行われます。 - 3DSリクエスターは、この要求を受け
iframe
内に必要なcallbackFn
含めたパラメーターと一緒にnotify-3ds-events.html
を表示します。notify_3ds_events.html
は表示後3ds-web-adater
に定義されたcallbackFn
を呼び出します。
- 認証の初期化中、3DSメソッドが終了またはスキップされたときにACSが3DSリクエスターに通知できるよう、3DSリクエスターは
認証の実行 ←3DSリクエスターの処理
callbackFn
は_on3DSMethodSkipped()
または_on3DSMethodFinished()
のいずれかであり、どちらもdoAuth()
を呼び出します。3DS web adapterはdoAuth()
を呼び出し、認証を実行するよう3DSリクエスターに要求します。_on3DSMethodSkipped
はブラウザの情報がなんらかの理由によってACSが取得できなかったことを意味します。なので、もしこのコールバック関数が呼ばれた場合加盟店は認証を続行しない選択をすることもできます。
認証の実行 (
/brw
)- 3DSリクエスターは
/brw
を呼び出して認証処理を開始します。
- 3DSリクエスターは
AReq/ARes
- 認証リクエスト(AReq)は、ディレクトリ・サーバーを介してActiveServerからACSに送信されます。ACSからは、認証結果を含む認証応答(ARes)がActiveServerに送信されます。
認証結果を応答
/brw
は、3DSリクエスターにtranStatus
を返します。
認証結果を応答 ←3DSリクエスターの処理
- 認証結果を3DS webアダプターに返します。
Info
返されたtransStatus
が"Y"の場合はステップ 14(F)
に、"C"の場合はステップ 14(C)
に進んでください。
フリクションレス・フローの場合¶
14(F). 結果の表示(フリクションレスの場合) ←3DSリクエスターの処理
- 認証結果の
transStatus
が"Y"の場合はauthSuccess()
が呼び出され、ページを/auth/result?transId
にリダイレクトします。
15(F). 認証結果を要求 (認証結果を表示するページが必要な場合) ←3DSリクエスターの処理
- ブラウザーが
transId
で3DSリクエスターに通知し、取引結果がリクエストに使用できる状態になります。
16(F). 認証結果を要求(/brw/result
)
- 3DSリクエスターは
/brw/result
を呼び出し、ActiveServerから結果を受信するように要求します。
17(F). ブラウザに結果を表示
- 結果画面が開き、認証結果が表示されます。
チャレンジフローの場合¶
14(C). iframe
の設置(チャレンジの場合)。
- 認証結果の
transStatus
が"C"である場合はstartChallenge()
が呼び出され、チャレンジ用のiframe
を挿入します。
15(C). HTMLの交換
- ACSは
iframe
内にチャレンジ画面を埋め込み、カード会員は認証チャレンジを実行します。
16(C). チャレンジ結果の判定
- ACSは、実行されたチャレンジが成功したかいなかを判定します。
17(C). RReq/RRes
- ACSは、ディレクトリ・サーバーを介してActiveServerに、認証結果を含む結果リクエスト(RReq)を送信します。ActiveServerは、結果応答(RRes)を使用して受信確認通知を送信します。
18(C). チャレンジ応答(最終的なCRes)
- ACSは、最終的なチャレンジ応答(CRes)を3DSリクエスターに送信します。
19(C). 3DSチャレンジを終了して結果画面を表示 ←3DSリクエスターの処理
- チャレンジが終了したため、3DSリクエスターはページを
/auth/result?transId
にリダイレクトします。
20(C). 認証結果を要求(認証結果を表示するページが必要な場合) ←3DSリクエスターの処理
- ブラウザーが
transId
で3DSリクエスターに通知し、取引結果がリクエストに使用できる状態になります。
21(C). 認証結果を要求(/brw/result
) ←3DSリクエスターの処理
- ステップ16(F)と同様に、3DSリクエスターは
/brw/result
からの結果受信を要求します。
22(C). ブラウザに結果を表示 ←3DSリクエスターの処理
- ブラウザーで結果画面が開き、認証結果が表示されます。
次のチャプター
下のフッターの次を選択して実装ガイドにアクセスし、ActiveServerを使用した加盟店の決済処理機能を組み込んでください。