Salvar um cartão sem autenticação do banco
Colete os dados do cartão e faça a cobrança do cliente mais tarde.
A Stripe permite que você colete detalhes dos cartões e cobre o cliente posteriormente. Em algumas regiões, os bancos exigem uma segunda forma de autenticação, como a inserção de um código enviado para o celular. Essa etapa adicional diminui a conversão quando o cliente não está usando o site ou aplicativo, porque ele não está disponível para autenticar a compra.
If you primarily do business in the US and Canada, banks don’t require authentication, so you can follow this simpler integration. This integration will be non-compliant in countries that require authentication for saving cards (for example, India) so building this integration means that expanding to other countries or adding other payment methods will require significant changes. Learn how to save cards that require authentication.
Conformidade
Você é responsável por sua conformidade com todas as leis, regulamentos e regras de rede aplicáveis ao salvar os dados de pagamento de um cliente. Por exemplo, se você quiser salvar a forma de pagamento para uso futuro, como cobrar quando não estiver usando seu site ou aplicativo. Adicione termos ao seu site ou aplicativo que definam como você planeja salvar os dados da forma de pagamento e permitir que os clientes aceitem. Se quiser cobrar deles quando estiverem offline, verifique se seus termos incluem o seguinte:
- A concordância do cliente para que você inicie um pagamento ou uma série de pagamentos em nome dele para transações específicas.
- O momento e a frequência previstos para os pagamentos (por exemplo, se são cobranças de parcelas agendadas, pagamentos de assinatura ou recargas não agendadas).
- Como você determina o valor do pagamento.
- Sua política de cancelamento, se a forma de pagamento for para um serviço de assinatura.
Não se esqueça de manter um registro por escrito da concordância do cliente com esses termos.
Coletar dados do cartãoDo lado do cliente
Antes de iniciar este guia, você precisa de uma conta Stripe. Inscreva-se aqui.
Crie uma página de checkout para coletar os detalhes dos cartões de seus clientes. Use o Stripe Elements, uma biblioteca de IU que ajuda você a gerar formulários de pagamento personalizados. Para começar a usar o Elements, inclua a biblioteca Stripe.js com o script a seguir na sua página de checkout.
<script src="https://js.stripe.com/v3/"></script>
Sempre carregue o Stripe.js diretamente de js.stripe.com para manter a conformidade com PCI. Não insira o script em um pacote nem hospede sua própria cópia.
Para aproveitar melhor as funções avançadas contra fraude da Stripe, inclua este script em todas as páginas do seu site e não apenas na página de checkout. A inclusão do script em cada página permite que a Stripe detecte comportamentos suspeitos que podem indicar fraude durante a navegação do site pelos usuários.
Adicione o Elements à sua página
Para coletar com segurança dados dos cartões dos clientes, o Stripe Elements cria componentes de IU hospedados pela Stripe. Os componentes são colocados no seu formulário de pagamentos, de forma que você não precisa criá-los diretamente. Para estabelecer onde os componentes serão inseridos, crie elementos DOM vazios (contêineres) com IDs exclusivos no formulário de pagamento.
<input id="cardholder-name" type="text"> <!-- placeholder for Elements --> <div id="card-element"></div> <div id="card-result"></div> <button id="card-button">Save Card</button>
Em seguida, crie uma instância do objeto Stripe, fornecendo sua chave de API publicável como o primeiro parâmetro. Depois, crie uma instância do objeto Elements e use-a para montar um elemento card
no DOM.
O elemento card
simplifica o formulário de pagamento e minimiza o número de campos obrigatórios, inserindo um campo de entrada flexível que coleta com segurança todos os dados necessários do cartão.
Do contrário, combine os Elements cardNumber
, cardExpiry
e cardCvc
para criar um formulário de cartão flexível, com vários campos.
Observação
Sempre colete um código postal para aumentar as taxas de aceitação de cartão e reduzir fraudes.
The single line Card Element automatically collects and sends the customer’s postal code to Stripe. If you build your payment form with split Elements (Card Number, Expiry, CVC), add a separate input field for the customer’s postal code.
const stripe = Stripe(
); const elements = stripe.elements(); const cardElement = elements.create('card'); cardElement.mount('#card-element');'pk_test_TYooMQauvdEDq54NiTphI7jx'
Um Stripe Element contém um iframe que envia com segurança os dados de pagamento para a Stripe por uma conexão HTTPS. O endereço da página de checkout também deve iniciar com https://
, e não http://
, para que sua integração funcione.
Você pode testar sua integração sem usar HTTPS. Habilite-o quando estiver pronto para aceitar pagamentos no modo de produção.
const cardholderName = document.getElementById('cardholder-name'); const cardButton = document.getElementById('card-button'); const resultContainer = document.getElementById('card-result'); cardButton.addEventListener('click', async (ev) => { const {paymentMethod, error} = await stripe.createPaymentMethod({ type: 'card', card: cardElement, billing_details: { name: cardholderName.value, }, } ); if (error) { // Display error.message in your UI. resultContainer.textContent = error.message; } else { // You have successfully created a new PaymentMethod resultContainer.textContent = "Created payment method: " + paymentMethod.id; } });
Envie o ID do PaymentMethod resultante ao seu servidor.
Configurar a StripeLado do servidor
Use nossas bibliotecas oficiais para acessar a API da Stripe no seu aplicativo:
Salvar o cartãoLado do servidor
Salve o cartão anexando o PaymentMethod a um cliente. Você pode usar o objeto Customer para armazenar outras informações sobre o cliente, como detalhes de envio e e-mail.
Se você já tem um cliente, pode anexar o PaymentMethod ao objeto.
Nesse momento, associe o ID do cliente e o ID da forma de pagamento à sua representação interna de um cliente, se houver.
Cobrar o cartão salvoLado do servidor
Quando estiver tudo pronto, obtenha os IDs do cliente e da forma de pagamento para fazer a cobrança. Para isso, armazene os IDs no seu banco de dados ou use o ID do cliente para consultar as formas de pagamento disponíveis desse cliente.
Use os IDs da forma de pagamento e do cliente para criar um novo PaymentIntent. Defina error_on_requires_action como verdadeiro para recusar pagamentos que exigem ações adicionais do cliente, como a autenticação de dois fatores.
Quando uma tentativa de pagamento falha, a solicitação também falha com um código de status HTTP 402 e um erro da Stripe. É preciso notificar o cliente para que ele acesse novamente seu aplicativo (enviando um e-mail, por exemplo) para finalizar o pagamento. Verifique o código do Erro indicado pela biblioteca da API da Stripe ou confira o last_payment_error.decline_code do PaymentIntent para entender por que o emissor do cartão recusou o pagamento.
Gerenciar erros do cartão
Notify your customer that the payment failed and direct them to the payment form you made in Step 1 where they can enter new card details. Send that new PaymentMethod ID to your server to attach to the Customer object and make the payment again.
Você também pode criar um PaymentIntent e salvar um cartão, tudo isso em uma única chamada de API, se já tiver criado um cliente.
Setting setup_future_usage to on_
indicates to Stripe that you wish to save the card for later, without triggering unnecessary authentication.
Testar a integração
Stripe provides test cards you can use in test mode to simulate different cards’ behavior. Use these cards with any CVC, postal code, and expiry date in the future.
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 recusa com o código authentication_ . |
Atualize sua integração para aceitar autenticação de cartões
Essa integração recusa cartões que exigem autenticação durante o pagamento. Se começarem a aparecer pagamentos no Dashboard com a indicação Failed
, é recomendável passar para uma integração superior. A integração global da Stripe aceita esses pagamentos, em vez de recusá-los automaticamente.