Como funcionam os PaymentIntents e os SetupIntents
Veja como os objetos PaymentIntents e SetupIntents se encaixam dentro do processo de pagamento.
Pagamentos que envolvem processos assíncronos podem ser mais desafiadores de controlar. Um exemplo é quando o usuário precisa concluir a transação por meio da autenticação 3D Secure.
Fluxos de pagamento assíncronos são desafiadores de administrar, pois envolvem interações com o cliente que ocorrem fora da sua aplicação. Os objetos Intenções de pagamento e SetupIntents tornam esse gerenciamento mais simples ao acompanhar o andamento do fluxo por meio de uma state machine.
Quando o PaymentIntent é criado, seu status é requires_
1 até que uma forma de pagamento seja vinculada.
Recomendamos que você crie o PaymentIntent assim que souber o valor a ser cobrado para que a Stripe possa registrar todas as tentativas de pagamento.
Depois que o cliente informa os dados de pagamento, o PaymentIntent está pronto para ser confirmado.
Na maioria das integrações, esse estado é ignorado porque os dados da forma de pagamento são informados ao mesmo tempo em que o pagamento é confirmado.
Se o pagamento exigir ações adicionais, como autenticação com 3D Secure, o PaymentIntent terá um status de requires_
1.
Após a execução das ações exigidas, o PaymentIntent muda para processing
para formas de pagamento assíncronas, como débitos bancários. Esses tipos de formas de pagamento podem levar até alguns dias para serem processados. Outras formas de pagamento, como cartões, são processadas mais rapidamente e não entram no status processing
.
Se você autoriza e captura fundos separadamente, seu PaymentIntent pode mudar para requires_
. Nesse caso, a tentativa de capturar os fundos o move para processing
.
Um PaymentIntent com status “succeeded” significa que o fluxo de pagamento a que pertence foi concluído.
Os fundos estão na sua conta e você pode executar o pedido. Quando for necessário reembolsar o cliente, use a API Refunds.
Se a tentativa de pagamento falhar (por exemplo, o pagamento foi recusado), o status do PaymentIntent volta a ser requires_
para que o pagamento possa ser repetido.
Você pode cancelar um PaymentIntent a qualquer momento antes que ela fique em um estado processing
2 ou succeeded
. O cancelamento invalida o PaymentIntent para futuras tentativas de pagamento e não pode ser desfeito. Se houver fundos retidos, o cancelamento os libera.
PaymentIntents também podem ser automaticamente transferidos para o estado canceled
depois de terem sido confirmados muitas vezes.
1 Versões do API anteriores a 2019-02-11 mostram requires_
em vez de requires_
e requires_
em vez de requires_
.
2 Você pode cancelar um PaymentIntent no estado processing
quando a forma de pagamento associada for conta bancária dos EUA. No entanto, ele pode falhar devido a uma janela de tempo de cancelamento limitada e variável.