Next Actionウィジェット
DEUNAの保留中の注文を3DSまたはWeb、iOS、Android、およびReact Nativeで必要な顧客アクションを通じて継続します。
Next Actionは、既存の注文が、3DSチャレンジやリダイレクトなどのサポートされている追加ステップを完了する必要がある場合に、元の注文トークンを再利用して使用します。
意思決定フロー#
フロー図
01 · response
必要なアクションを検出
支払い応答または文書化された注文の状態を使用します。
02 · SDK
Next Actionを開く
元のトークンを渡す
order_token; do not create another order.03 · customer
課題を完了する
リダイレクト、ポップアップ、およびアプリのライフサイクル遷移を正常に動作させる
04 · backend
結果を確認する
注文を取得するか、検証されたウェーブブックを消費する
カスタマーエクスペリエンスを見る#
Next Action は、DEUNA の支払いウィジェットと加盟店独自の支払いフォームの両方で動作します。バックエンドが支払いを送信した後、レスポンスで顧客による追加手順が必要と示された場合にのみ Next Action を開いてください。ウィジェットは、対応する 3DS チャレンジまたは代替支払い方法 (APM) へのリダイレクトを表示し、コールバックを通じて結果を通知します。
次のデモでは、加盟店のチェックアウトから必要な支払い後のアクションへ、顧客体験がどのように続くかを示します。
このビデオは、顧客に表示される画面遷移を示します。統合では、以下で説明する支払いレスポンス、コールバック、バックエンドでの照合を引き続き使用してください。顧客がウィジェットで見た内容から最終的な支払いステータスを判断しないでください。
Next Actionを開く#
await DeunaSDK.initNextAction({
orderToken,
callbacks: {
onSuccess: () => verifyOriginalOrder(),
onError: (error) => recoverAfterVerification(error),
onClosed: () => recoverAfterVerification(),
},
});await deunaSDK.initNextAction({
orderToken,
mode: 'modal',
callbacks: {
onSuccess: verifyOriginalOrder,
onError: recoverAfterVerification,
onClosed: recoverAfterVerification,
},
});let callbacks = NextActionCallbacks()
callbacks.onSuccess = { _ in verifyOriginalOrder() }
callbacks.onError = { error in recoverAfterVerification(error) }
callbacks.onClosed = { _ in recoverAfterVerification(nil) }
deunaSDK.initNextAction(
orderToken: orderToken,
callbacks: callbacks,
language: "en"
)val callbacks = NextActionCallbacks().apply {
onSuccess = { verifyOriginalOrder() }
onError = { error -> recoverAfterVerification(error) }
onClosed = { recoverAfterVerification(null) }
}
deunaSDK.initNextAction(
context = this,
orderToken = orderToken,
callbacks = callbacks,
language = "en"
)パラメータ#
| パラメータ | プラットフォーム | 必須 | 目的 |
|---|---|---|---|
orderToken | すべて | はい | 顧客による処理を待っている注文の元のトークン |
callbacks | すべて | はい | 成功、エラー、クローズ、イベント、およびリサイズハンドラが、基本コールバック契約でサポートされている |
language | すべて | なし | ホスト環境をローカライズする |
mode | React Native | はい | モーダルまたはサポートされている埋め込み表示を選択する |
fraudCredentials | ネイティブ + React Native | なし | 設定されたデバイスデータ統合のみ |
customUserAgent | iOS + Android | なし | 承認されたWebViewユーザーエージェントのオーバーライド |
domain | すべて | なし | 制御された環境のオーバーライド; 通常のプロ덕ション環境では使用しない |
すべての結果を処理する#
| 結果 | その意味 | 適切なアクション |
|---|---|---|
onSuccess | 顧客向けのステップが完了する | 元の注文を取得し、現在の状態を表示します。 |
onError | SDKまたはチャレンジで正規化されたエラーが報告されました。 | 安全なメタデータを記録し、状態を取得し、適切な再試行を提供します。 |
onClosed | 顧客またはSDKが体験を終了しました。 | バックエンドの状態がわかれば、曖昧な状態として扱います。 |
| タイムアウトまたはアプリケーションの中断 | 信頼できるクライアントの結果がハンドラに到達しません。 | バックエンドから再調整し、自動的に再送信しないでください。 |
リダイレクトおよびポップアップの要件#
- SDKがサポートされている外部認証インターフェースを開くことを許可します。
- 顧客が離れる間、アプリケーションのライフサイクル状態を維持します。
- Webの場合、顧客の操作から開き、ウィジェットをサンドボックス化してポップアップやトップレベルのナビゲーションをブロックしないようにします。
- React Nativeの場合、外部リダイレクトコントローラがアクティブな間、SDKレンダラをマウントしたままにします。
- iOSおよびAndroidの場合、内部のWebViewブリッジを再作成するのではなく、維持されたSDKモダールまたは埋め込みコンポーネントを使用します。
- 成功したチャレンジ、拒否、顧客によるキャンセル、発行者タイムアウト、ネットワーク損失、およびバックグラウンドからの戻し。
組み込み表示#
Web SDK は以下のをサポートします mode: 'target' más target; iOS および Android は組み込みウィジェットコンポーネントを公開し、React Native はそれを使用します DeunaWidget レンダラー。十分な初期の高さを確保し、サイズ変更に対応し、ホストがチャレンジコントロールをステイッキーフッターや画面キーボードの背後に隠さないようにしてください。