メインコンテンツへスキップ
このページで

3DSの統合は、支払い状態のワークフローです。通常の手順で支払いを実行し、DEUNAからの応答を処理します。 pending_3ds、返送された次のアクションを表示し、最終的な決済ステータスの確認を待つ。

フロー図
processed or authorizedpending_3dsdenied, cancelled, orexpiredprocessed or authorizeddenied, cancelled, orexpired1Create payment2Payment status3Continue fulfillment4Present next_action5Stop payment flow6Shopper authenticateswith issuer7Webhook or Get order8Final payment status
例外または停止

1. 決済の作成#

以下のいずれかの決済パターンを使用:

  1. 注文を作成する際に 注文を作成、その後、[支払い方法]で支払う 決済を作成する.
  2. 、必要に応じて、シングルリクエスト 決済を作成する フローを使用する。

購入者、請求、注文、およびデバイスに関する完全な情報を送信します。これらの情報は、発行者が認証をスムーズに行えるかどうかを判断するのに役立ちます。

2. 決済応答の確認#

チャレンジに対応した応答は、以下の形式に従います:

JSON
{
  "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.statuspending_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 のリファレンスを参照してください。.

ブラウザへの直接統合

次の操作を自身で処理する場合:

  1. 返された url_challengeを使用してください。3DS URLを構築しないでください。
  2. 設定されたプレゼンテーションモードに従ってください。トップレベルのリダイレクトが必要な場合に、issuerページをiframeに強制しないでください。
  3. 成功、失敗、およびリダイレクトURLを保持してください。
  4. 閉じられたウィンドウ、コールバック、またはリダイレクトを、決済の成功を示す信号としてではなく、状態を取得するための信号として扱ってください。

ネイティブアプリ

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またはチャレンジ完了イベントではなく)が決済処理を制御します。