Widget "Prochaine action"
Continuez une commande DEUNA en attente via 3DS ou une autre action requise du client sur le Web, iOS, Android et React Native.
Sur cette page
Utilisez le widget "Prochaine action" lorsque l'une des commandes existantes nécessite qu'un client effectue une étape supplémentaire, telle qu'un défi 3DS ou un redirigement pris en charge. Réutilisez le jeton de commande original.
Flux de décision#
order_token; do not create another order.Voir l'expérience client#
Next Action fonctionne avec les widgets de paiement DEUNA comme avec les formulaires de paiement gérés par le marchand. Une fois le paiement envoyé par votre backend, ouvrez Next Action uniquement lorsque la réponse indique que le client doit effectuer une étape supplémentaire. Le widget présente alors le défi 3DS pris en charge ou la redirection vers un moyen de paiement alternatif (APM), puis communique le résultat au moyen de ses fonctions de rappel.
La démonstration suivante montre comment l’expérience se poursuit du checkout du marchand jusqu’à l’action post-paiement requise :
La vidéo illustre la transition présentée au client. Votre intégration doit toujours utiliser la réponse de paiement, les fonctions de rappel et le rapprochement côté backend décrits ci-dessous ; ne déduisez pas l’état final du paiement à partir de ce que le client voit dans le widget.
Ouvrez la "Prochaine 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"
)Paramètres#
| Paramètre | Plateformes | Obligatoire | Objectif |
|---|---|---|---|
orderToken | Tous | Oui | Token original pour la commande en attente d'action du client. |
callbacks | Tous | Oui | Prise en charge des gestionnaires de succès, d'erreur, de fermeture, d'événements et de redimensionnement conformément au contrat de callback de base. |
language | Tous | Non | Localiser l'expérience hébergée. |
mode | Réagir à l'initié | Oui | Choisir la présentation modale ou intégrée prise en charge. |
fraudCredentials | Native + React Native | Non | Uniquement pour une intégration de données de périphérique configurée. |
customUserAgent | iOS + Android | Non | Override de l'agent utilisateur WebView approuvé. |
domain | Tous | Non | Override de l'environnement contrôlé ; ne pas utiliser en production normale. |
Gérer toutes les situations#
| Résultat | Ce que cela signifie | Action correcte |
|---|---|---|
onSuccess | Étape côté client terminée. | Récupérer la commande originale et la rendre à son état actuel. |
onError | L'SDK ou le défi ont signalé une erreur normalisée. | Journaliser les métadonnées sécurisées, récupérer l'état, puis proposer une tentative possible. |
onClosed | Le client ou l'SDK ont fermé l'expérience. | Traiter comme ambigu jusqu'à ce que l'état côté serveur soit connu. |
| Délai d'attente ou interruption de l'application | Aucun résultat client fiable n'a atteint votre gestionnaire. | Réconcilier à partir du serveur ; ne pas soumettre automatiquement à nouveau. |
Exigences de redirection et de fenêtre contextuelle#
- Permettre à l'SDK d'ouvrir sa surface d'authentification externe prise en charge.
- Préserver l'état du cycle de vie de l'application pendant que le client quitte et revient.
- Sur le Web, ouvrir à partir d'une action du client et ne pas sandboxer le widget d'une manière qui bloque les fenêtres contextuelles ou la navigation de premier niveau.
- Sur React Native, maintenir le rendu SDK monté pendant que son contrôleur de redirection externe est actif.
- Sur iOS et Android, utiliser le composant modale ou intégré maintenu du SDK au lieu de recréer le pont WebView interne.
- Succès de la validation, du rejet, de l'annulation par le client, de l'expiration du délai par l'émetteur, de la perte de connexion et du retour depuis l'arrière-plan.
Présentation intégrée#
Le SDK Web prend en charge mode: 'target' plus target; iOS et Android exposent des composants de widget intégrés ; React Native utilise son DeunaWidget rendeuriseur. Prévoyez une hauteur initiale suffisante, réagissez aux modifications de taille et assurez-vous que l'hôte ne cache pas les contrôles de validation derrière une barre de navigation fixe ou un clavier sur écran.