3DS 決済フロー
保留中の認証処理、次のアクションの提示、および最終的な決済ステータスの確認を行います。
3DSの統合は、支払い状態のワークフローです。通常の手順で支払いを実行し、DEUNAからの応答を処理します。 pending_3ds、返送された次のアクションを表示し、最終的な決済ステータスの確認を待つ。
1. 決済の作成#
以下のいずれかの決済パターンを使用:
購入者、請求、注文、およびデバイスに関する完全な情報を送信します。これらの情報は、発行者が認証をスムーズに行えるかどうかを判断するのに役立ちます。
2. 決済応答の確認#
チャレンジに対応した応答は、以下の形式に従います:
{
"order": {
"order_id": "75029759-4a64-42cd-b0b6-9f12777707b7",
"status": "pending",
"payment": {
"data": {
"id": "75029759-4a64-42cd-b0b6-9f12777707b7",
"method_type": "credit_card",
"status": "pending_3ds",
"next_action": {
"action": "authorization_3ds",
"authorization_3ds": {
"version": "2.2.0",
"url_challenge": "https://api.deuna.io/transactions/next-action/...",
"three_ds_flow_id": "0f5a8f52-7f95-4a1f-9ee8-e92946547ea9"
}
}
}
}
}
}以下のフィールドを真実のデータソースとして使用してください。
| フィールド | 意味 | アクション |
|---|---|---|
order.payment.data.status | pending_3ds これは認証が完了していないことを意味します。 | 決済を保留し、次のアクションを表示する。 |
order.payment.data.next_action.action | 必要な顧客の行動を特定します。 | 処理 authorization_3ds DEUNA SDKまたは戻りチャレンジデータを使用して。 |
order.payment.data.next_action.authorization_3ds.url_challenge | 認証体験用の一時的なDEUNA URL。 | 接続をサポートするプレゼンテーションモードでのみ開きます。 |
order.payment.data.next_action.authorization_3ds.three_ds_flow_id | 認証フローを関連付ける。 | トラブルシューティングのために保持する。決済の証明として使用しないでください。 |
互換性のために、一部の統合では、上位レベルの authorization_3ds オブジェクトも受信できる。新しい実装では、 next_action.
3. 次の操作を実行#
Web SDK
使用する initNextAction(...) DEUNAがサポートするモーダル、iframe、またはリダイレクトの動作を管理したい場合に。詳細は、 Web SDK のリファレンスを参照してください。.
ブラウザへの直接統合
次の操作を自身で処理する場合:
- 返された
url_challengeを使用してください。3DS URLを構築しないでください。 - 設定されたプレゼンテーションモードに従ってください。トップレベルのリダイレクトが必要な場合に、issuerページをiframeに強制しないでください。
- 成功、失敗、およびリダイレクトURLを保持してください。
- 閉じられたウィンドウ、コールバック、またはリダイレクトを、決済の成功を示す信号としてではなく、状態を取得するための信号として扱ってください。
ネイティブアプリ
DEUNAがサポートするSDKまたは、安全なシステムブラウザ/ウェブビューを使用してください。購入者がアプリに戻った際に、リダイレクト/ディープリンクを設定し、決済コンテキストを復元してください。
4. 最終決済ステータスの確認#
認証が有効な間、決済は pending_3dsの状態です。認証成功は、承認のみを許可しますが、決済が完了したことを意味しません。
以下の両方を使用してください:
- 確認済み DEUNAのウェブフック 非同期でのステータス変更に対応するため; および
- 注文を取得 顧客が返品した場合、またはシステムが不確実な結果を処理する必要がある場合。
| 結果 | 意味 | 履行アクション |
|---|---|---|
processed | 購入完了 | ビジネスの検証が完了したら、履行を実行してください。 |
authorized | 決済は承認済みですが、決済は実行されていません。 | 決済戦略に従ってください。決済が完了したとみなさないでください。 |
pending_3ds | 認証がまだ完了していません。 | 待機し、履行を実行したり、自動的に再試行したりしないでください。 |
processing または authorizing | 決済処理が完了していません。 | 継続的な照合 |
denied, cancelled、または expired | 決済が完了しませんでした。 | 適切な場合にのみ、復旧可能な状態を表示し、新しい試行を開始してください。 |
詳細は 決済ワークフロー & ステータス を参照してください。
5. 無障害な認証処理の実現#
スムーズな認証は、結果を返すとは限りません。 pending_3ds 発行者が認証を行い、承認プロセスを同じリクエスト内で継続できるようにするため。したがって、お客様のコードは、どちらの結果にも対応する必要があります。
- 即時的な最終的な、または進行中の支払いステータス; または
pending_3dsさらにauthorization_3ds次のアクション。
3DS の評価が完了したかどうかを判断するために、チャレンジ URL の存在は必須ではありません。
6. タイムアウトと再試行#
発行元のチャレンジ期間は異なります。DEUNAは、設定された認証期間内(現在のサービスでは最大10分)まで、支払いを保持できます。期限が経過すると、支払いは失敗として報告され、購入者は新しい支払いを試行する必要があります。 pending_3ds 設定された認証期間内であれば、現在のサービスは最大10分間有効です。有効期限が経過すると、決済は失敗状態に移行し、購入者は新しい決済を試す必要があります。
- 失効したチャレンジURLを再利用しないでください。
- Не создавайте повторные попытки оплаты, пока первая оплата не будет разрешена.
- 利用可能な最終ステータスと
allow_retry標準化されたエラーガイダンスを使用してから、再度試行する前に。 - ルーティングが別の互換性のある接続を選択した場合、既存の認証結果を再利用するかどうかは、DEUNAが決定します。
7. 認証情報を安全に解釈する#
DEUNAの管理者は、プロトコルのバージョン、フロータイプ、ECI、認証結果、およびネットワークトランザクション識別子などの3DSの結果を技術的に表示できます。これらは、サポート、集計、および紛争分析に使用できます。
商人のログに、生の暗号文、完全な認証応答、またはチャレンジHTMLを保存または公開しないでください。 決済ステータス(ECIまたはチャレンジ完了イベントではなく)が決済処理を制御します。