Widget Next Action
Continue um pedido pendente da DEUNA através do 3DS ou de outra ação necessária do cliente na Web, iOS, Android e React Native.
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#
order_token; do not create another order.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 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(),
},
});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"
)Parâmetros#
| Parâmetro | Plataformas | Obrigatório | Objetivo |
|---|---|---|---|
orderToken | Todos | Sim | Token original para o pedido aguardando ação do cliente. |
callbacks | Todos | Sim | Suporte para handlers de sucesso, erro, fechamento, evento e redimensionamento, conforme o contrato básico de callback. |
language | Todos | Não | Localiza a experiência hospedada. |
mode | Reagir nativo | Sim | Escolher a apresentação modal ou integrada suportada. |
fraudCredentials | Nativo + React Native | Não | Somente para integração de dados de dispositivo configurada. |
customUserAgent | iOS + Android | Não | Override de agente de usuário WebView aprovado. |
domain | Todos | Não | Override de ambiente controlado; omitir no uso normal em produção. |
Lidar com todas as situações#
| Resultado | O que isso significa | Ação correta |
|---|---|---|
onSuccess | A etapa voltada para o cliente foi concluída. | Obter o pedido original e renderizar a partir do seu estado atual. |
onError | O SDK ou desafio reportaram um erro normalizado. | Registrar metadados seguros, obter o estado e, em seguida, oferecer uma tentativa elegível. |
onClosed | O 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 aplicativo | Nenhuma 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.