Pagamentos em cartão com autenticação bancária
Crie uma integração mais simples com limitações regionais.
Esta integração funciona para empresas que só aceitam cartões dos EUA e do Canadá. Ela é inicialmente mais simples, mas não permite atender clientes globais no futuro.
Como funciona essa integração
Os bancos em regiões como a Europa e a Índia geralmente exigem autenticação de dois fatores para confirmar uma compra. Se você opera principalmente nos Estados Unidos e no Canadá, ignorar a autenticação do cartão pode simplificar sua integração, pois os bancos raramente a solicitam nessas regiões.
Quando o banco exige autenticação, esta integração básica imediatamente recusa o pagamento (como uma recusa de cartão), em vez de gerenciar a autenticação para finalizar o pagamento de forma assíncrona. A vantagem é que o pagamento é aprovado ou recusado imediatamente, e a confirmação acontece no servidor, de forma que você pode seguir para as ações pós-pagamento imediatamente sem um webhook.
Como se compara à integração global
| Recurso | Esta integração | Integração global |
|---|---|---|
| Formulário de pagamento personalizado | ✔ | ✔ |
| Dados sensíveis nunca chegam ao seu servidor | ✔ | ✔ |
| Funciona para seus clientes nos EUA e Canadá | ✔ | ✔ |
| Recusa pagamentos com dados do cartão incorretos ou sem fundos | ✔ | ✔ |
| Recusa pagamentos com solicitações de autenticação bancária | ✔ | |
| Funciona para seus clientes globais | ✔ | |
| Gerencia automaticamente pagamentos no cartão que exigem autenticação bancária | ✔ | |
| Webhooks são recomendados para tarefas pós-pagamento | ✔ | |
| Fácil de expandir para outras formas de pagamento (por exemplo, débito bancário) | ✔ |
Empresas em crescimento ou que já são multinacionais devem usar a integração global da Stripe para aceitar solicitações de autenticação de dois fatores e permitir que o cliente use mais formas de pagamento.
Criar um formulário de checkoutLado do cliente
O Elements, parte do Stripe.js, oferece componentes inseríveis na IU com o objetivo de coletar dados de cartão dos clientes. A Stripe os hospeda e os coloca 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, decida 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
Se você configurar error_on_requires_action como true ao confirmar um pagamento, a Stripe recusa automaticamente o pagamento se ele solicitar autenticação de dois fatores do usuário.
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
A Stripe fornece vários cartões de teste que você pode usar em uma área restrita para assegurar que essa integração esteja pronta. Use-os com qualquer CVC, código postal e data de validade 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
A integração dos seus pagamentos com cartões básicos está concluída. Esta integração recusa cartões que exigem autenticação durante o pagamento.
Se você começar a ver pagamentos no Dashboard listados como Failed, será necessário atualizar sua integração. A integração global da Stripe processa esses pagamentos em vez de recusá-los automaticamente.