Pagamentos em cartão com autenticação bancária
Crie uma integração mais simples com limitações regionais.
This integration supports businesses accepting only US and Canadian cards. It’s simpler up front, but does not scale to support a global customer base.
Como funciona a integração?
Qual a diferença entre esta integração e a global?
Growing or global businesses should use Stripe’s global integration to support bank requests for two-factor authentication and allow customers to pay with more payment methods.
Criar um formulário de checkoutLado do cliente
O Elements faz parte do Stripe.js e oferece componentes inseríveis na IU com o objetivo de coletar dados de cartão dos clientes. Esses componentes são hospedados pela Stripe e colocados em seu formulário de pagamento em iframes, para que os dados do cartão do cliente nunca se misturem com seu código.
Configurar a StripeLado do servidor
Use uma biblioteca oficial para fazer solicitações à API da Stripe pelo seu aplicativo:
Fazer um pagamentoLado do servidor
Configure um endpoint no seu servidor para receber a solicitação do cliente.
A Stripe usa um objeto PaymentIntent para representar sua intenção de coletar o pagamento de um cliente, acompanhando suas tentativas de cobrança e alterações no estado do pagamento durante todo o processo.
Sempre defina o valor a ser cobrado no servidor, que é um ambiente seguro, e não no cliente. Dessa forma, você evita que clientes mal-intencionados escolham os próprios preços.
Crie um endpoint HTTP para responder à solicitação do AJAX da etapa 1. Nesse endpoint, você decide quanto cobrar do cliente. Para criar um pagamento, crie um PaymentIntent usando o ID de PaymentMethod da etapa 1 com o código a seguir:
Aviso
If you set error_on_requires_action to true
when confirming a payment, Stripe automatically fails the payment if it requires two-factor authentication from the user.
Resposta da API Payment Intents
Quando você faz um pagamento com a API, a resposta inclui o status do PaymentIntent. Se o pagamento estiver correto, o status será succeeded
.
{ "id": "pi_0FdpcX589O8KAxCGR6tGNyWj", "object": "payment_intent", "amount": 1099, "charges": { "object": "list", "data": [ { "id": "ch_GA9w4aF29fYajT", "object": "charge", "amount": 1099, "refunded": false, "status": "succeeded", } ] }, "client_secret": "pi_0FdpcX589O8KAxCGR6tGNyWj_secret_e00tjcVrSv2tjjufYqPNZBKZc", "currency": "usd", "last_payment_error": null, "status": "succeeded", }
Se o pagamento for recusado, a resposta conterá um código e uma mensagem erro. Veja este exemplo de um pagamento recusado porque o cartão exigia autenticação de dois fatores.
{ "error": { "code": "authentication_required", "decline_code": "authentication_not_handled", "doc_url": "https://docs.stripe.com/error-codes#authentication-required", "message": "This payment required an authentication action to complete, but `error_on_requires_action` was set. When you're ready, you can upgrade your integration to handle actions at https://stripe.com/docs/payments/payment-intents/upgrade-to-handle-actions.", "payment_intent": { "id": "pi_1G8JtxDpqHItWkFAnB32FhtI", "object": "payment_intent", "amount": 1099, "status": "requires_payment_method", "last_payment_error": { "code": "authentication_required", "decline_code": "authentication_not_handled", "doc_url": "https://docs.stripe.com/error-codes#authentication-required", "message": "This payment required an authentication action to complete, but `error_on_requires_action` was set. When you're ready, you can upgrade your integration to handle actions at https://stripe.com/docs/payments/payment-intents/upgrade-to-handle-actions.", "type": "card_error" }, }, "type": "card_error" } }
Testar a integração
Há vários cartões que você pode usar no modo de teste para confirmar se a integração está pronta. Use-os com qualquer CVC, código postal e data de vencimento futura.
Número | Descrição |
---|---|
Finaliza e processa o pagamento imediatamente. | |
Sempre falha, com o código de recusa insufficient_ . | |
Exige autenticação, que nesta integração falha com o código de recusa authentication_ . |
Veja a lista completa de cartões de teste.
Atualizar sua integração para aceitar autenticação de cartões
Parabéns! Você finalizou uma integração de pagamento para pagamentos básicos no cartão. Observe que esta integração recusa os cartões que solicitam autenticação durante o pagamento.
Se começarem a aparecer pagamentos no Dashboard com a indicação Failed
, é recomendável fazer upgrade da integração superior. A integração global da Stripe aceita esses pagamentos, em vez de recusá-los automaticamente.