Saltar al contenido principal
En esta página

Utilice el Widget de Acción Siguiente cuando un pedido existente requiere que el cliente complete un paso adicional, como un desafío 3DS o una redirección. Reutilice el token de pedido original.

Flujo de decisión#

Diagrama de flujo
1Create or submitpayment2-- Yes3Handle current orderstate4Open Next Actionwith same ordertoken5-- Error or close6Reconcile order onbackend7Retrieve statebefore retry8Fulfill only fromverified final state
ResultadoRevisión o pendiente
01 · response
Detecte la acción requerida
Utilice la respuesta de pago o el estado del pedido documentado.
02 · SDK
Abra el Widget de Acción Siguiente
Pase el original order_token; do not create another order.
03 · customer
Completar el desafío
Mantener funcionando los redireccionamientos, ventanas emergentes y transiciones del ciclo de vida de la aplicación.
04 · backend
Verifica el resultado
Obtener el pedido o consumir un webhook verificado.

Ver la experiencia del cliente#

Next Action funciona tanto con los widgets de pago de DEUNA como con formularios de pago propios del comercio. Después de que tu backend envíe el pago, abre Next Action solo cuando la respuesta indique que el cliente debe completar otro paso. El widget presenta el desafío 3DS compatible o la redirección a un método de pago alternativo (APM), y comunica el resultado mediante sus callbacks.

El siguiente recorrido muestra cómo continúa la experiencia desde el checkout del comercio hasta la acción posterior al pago requerida:

Next Action presenta el paso que el cliente debe completar después de iniciar el pago. Ver el video directamente en YouTube si el reproductor integrado no está disponible.

El video muestra la transición que experimenta el cliente. Tu integración debe seguir usando la respuesta del pago, los callbacks y la conciliación del backend que se describen a continuación; no deduzcas el estado final del pago a partir de lo que el cliente ve en el widget.

Abra el Widget de Acción Siguiente#

await DeunaSDK.initNextAction({
  orderToken,
  callbacks: {
    onSuccess: () => verifyOriginalOrder(),
    onError: (error) => recoverAfterVerification(error),
    onClosed: () => recoverAfterVerification(),
  },
});

Parámetros#

ParámetroPlataformasRequeridoPropósito
orderTokenTodosSíToken original del pedido pendiente de acción del cliente.
callbacksTodosSíSoporte para los manejadores de éxito, error, cierre, evento y redimensionamiento según el contrato base de callback.
languageTodosNoLocaliza la experiencia alojada.
modeReaccionar nativoSíSeleccionar la presentación modal o integrada compatible.
fraudCredentialsNativo + React NativeNoSolo para una integración de datos de dispositivo configurada.
customUserAgentiOS + AndroidNoOverride de agente de usuario de WebView aprobado.
domainTodosNoOverride del entorno controlado; omitir en el uso normal de producción.

Manejar cada resultado#

ResultadoQué significaAcción correcta
onSuccessSe ha completado el paso para el cliente.Obtener el pedido original y renderizarlo desde su estado actual.
onErrorEl SDK o el desafío informan de un error normalizado.Registrar metadatos seguros, obtener el estado y, a continuación, ofrecer un reintento válido.
onClosedEl cliente o el SDK han cerrado la experiencia.Considerar como ambiguo hasta que se conozca el estado del backend.
Tiempo de espera o interrupción de la aplicaciónNo se ha alcanzado un resultado fiable del cliente.Reconciliar desde el backend; no volver a enviar automáticamente.

Requisitos de redireccionamiento y ventanas emergentes#

  • Permitir que el SDK abra la superficie de autenticación externa compatible.
  • Mantener el estado del ciclo de vida de la aplicación mientras el cliente abandona y regresa.
  • En Web, abrir desde una acción del cliente y no "sandboxear" el widget de forma que bloquee ventanas emergentes o la navegación de nivel superior.
  • En React Native, mantener el renderizador del SDK montado mientras está activa su control de redirección externo.
  • En iOS y Android, utilizar el modal o componente integrado del SDK en lugar de recrear el puente de WebView interno.
  • Probar desafíos exitosos, rechazo, cancelación del cliente, tiempo de espera del emisor, pérdida de red y retorno desde el fondo.

Presentación integrada#

El SDK de Web soporta mode: 'target' más target; iOS y Android exponen componentes de widget integrados; React Native utiliza su DeunaWidget renderizador. Reservar suficiente altura inicial, responder a los cambios de tamaño y asegurarse de que el host no oculte los controles del desafío detrás de un pie de página pegado o un teclado en pantalla.