Pular para o conteúdo principal
Nesta página

Use o Next Action quando um pedido existente requer que o cliente complete um passo adicional, como um desafio 3DS ou redirecionamento suportado. Reuse o token original do pedido.

Fluxo de decisão#

Diagrama de fluxo
1Create or submitpayment2-- Yes3Handle current orderstate4Open Next Actionwith same ordertoken5-- Error or close6Reconcile order onbackend7Retrieve statebefore retry8Fulfill only fromverified final state
ResultadoRevisão ou pendente
01 · response
Detecte a ação necessária
Use a resposta de pagamento ou o estado do pedido documentado.
02 · SDK
Abra o Next Action
Passar o token original order_token; do not create another order.
03 · customer
Concluir o desafio
Manter redirecionamentos, pop-ups e transições do ciclo de vida do aplicativo funcionando.
04 · backend
Verifique o resultado
Obter o pedido ou consumir um webhook verificado.

Veja a experiência do cliente#

O Next Action funciona com os widgets de pagamento da DEUNA e com formulários de pagamento próprios do estabelecimento. Depois que seu backend enviar o pagamento, abra o Next Action somente quando a resposta indicar que o cliente precisa concluir outra etapa. O widget apresenta o desafio 3DS compatível ou o redirecionamento para um método de pagamento alternativo (APM) e informa o resultado por meio dos callbacks.

O passo a passo a seguir mostra como a experiência continua do checkout do estabelecimento até a ação pós-pagamento necessária:

O Next Action apresenta a etapa que o cliente precisa concluir após o início do pagamento. Assista ao vídeo diretamente no YouTube se o player incorporado não estiver disponível.

O vídeo mostra a transição apresentada ao cliente. Sua integração ainda deve usar a resposta do pagamento, os callbacks e a reconciliação no backend descritos abaixo; não deduza o estado final do pagamento com base no que o cliente vê no widget.

Abra o Next Action#

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

Parâmetros#

ParâmetroPlataformasObrigatórioObjetivo
orderTokenTodosSimToken original para o pedido aguardando ação do cliente.
callbacksTodosSimSuporte para handlers de sucesso, erro, fechamento, evento e redimensionamento, conforme o contrato básico de callback.
languageTodosNãoLocaliza a experiência hospedada.
modeReagir nativoSimEscolher a apresentação modal ou integrada suportada.
fraudCredentialsNativo + React NativeNãoSomente para integração de dados de dispositivo configurada.
customUserAgentiOS + AndroidNãoOverride de agente de usuário WebView aprovado.
domainTodosNãoOverride de ambiente controlado; omitir no uso normal em produção.

Lidar com todas as situações#

ResultadoO que isso significaAção correta
onSuccessA etapa voltada para o cliente foi concluída.Obter o pedido original e renderizar a partir do seu estado atual.
onErrorO SDK ou desafio reportaram um erro normalizado.Registrar metadados seguros, obter o estado e, em seguida, oferecer uma tentativa elegível.
onClosedO cliente ou o SDK fecharam a experiência.Tratar como ambíguo até que o estado do backend seja conhecido.
Tempo limite ou interrupção do aplicativoNenhuma saída confiável do cliente foi alcançada pelo seu handler.Reconciliar a partir do backend; não submeter automaticamente novamente.

Requisitos de redirecionamento e pop-up#

  • Permitir que o SDK abra a superfície de autenticação externa suportada.
  • Preservar o estado do ciclo de vida do aplicativo enquanto o cliente sai e retorna.
  • No Web, abrir a partir de uma ação do cliente e não "sandboxing" o widget de forma a bloquear pop-ups ou navegação de nível superior.
  • No React Native, manter o renderizador do SDK montado enquanto o controlador de redirecionamento externo estiver ativo.
  • No iOS e Android, use o modal ou componente embutido mantido do SDK em vez de recriar a ponte WebView interna.
  • Teste de sucesso para desafio, rejeição, cancelamento do cliente, timeout do emissor, perda de rede e retorno do modo de fundo.

Interface integrada#

O SDK Web suporta mode: 'target' mais target; iOS e Android expõem componentes de widget integrados; React Native usa seu DeunaWidget renderizador. Reserve altura inicial suficiente, responda a mudanças de tamanho e garanta que o host não oculte os controles de desafio atrás de um rodapé fixo ou teclado na tela.