O que você precisa fazer
Nada além do que já faz.elements.submit(...) conclui a autenticação do cartão para você quando o pagamento exige. Você não
coleta nenhum campo adicional no seu formulário de checkout e não orquestra a autenticação.
buyer e os products que você passa para
POST /v2/transactions. Mantenha esses dados completos e
corretos e a autenticação terá tudo de que precisa.
O que você recebe de volta
submit(...) resolve quando o pagamento chega a um desfecho, tendo havido autenticação ou não. Leia
status no resultado:
succeeded— o pagamento foi aprovado.processing— o pagamento ainda está sendo resolvido. Aguarde o webhook.failed,refused,canceled,timed_out— a tentativa não passou. Mostre a mensagem retornada e deixe o comprador tentar de novo.
Se o comprador for interrompido
O comprador pode recarregar a página ou sair no meio do pagamento. Retome a mesma transaction em vez de iniciar uma nova tentativa de checkout:Autenticação de cartão após um reload
Um pagamento que aguardava autenticação de cartão (3DS pré-cobrança) estava vinculado à sessão de Element que capturou o cartão, e um reload inicia uma nova sessão.resume() se auto-corrige:
monte um CardElement e chame resume(). O SDK pede que o comprador reinsira o cartão no element
montado, retokeniza, comprova que é o mesmo cartão, substitui o desafio obsoleto e conclui a
autenticação — resolvendo num resultado terminal. Sem nova tentativa de checkout, sem nova transaction
e sem ramificação extra no seu código.
O cartão reinserido precisa ser o mesmo da tentativa original — um cartão diferente é recusado.
manualReentry: true para
receber status: "requires_reentry" em vez do auto-heal, e então chamar resume() de novo após
recoletar o cartão. Veja a referência do SDK.

