Salvar dados de pagamento durante o pagamento
Use a API Payment Intents para salvar os dados do pagamento de uma compra. São diversos casos de uso:
- Cobre um cliente por um pedido de e-commerce e armazene os dados para compras futuras.
- Inicie o primeiro pagamento de uma série de pagamentos recorrentes.
- Cobre um depósito e armazene os dados para cobrar o valor total depois.
conformidade
You’re responsible for your compliance with all applicable laws, regulations, and network rules when saving a customer’s payment details. These requirements generally apply if you want to save your customer’s payment method for future use, such as displaying a customer’s payment method to them in the checkout flow for a future purchase or charging them when they’re not actively using your website or app. Add terms to your website or app that state how you plan to save payment method details and allow customers to opt in.
When you save a payment method, you can only use it for the specific usage you have included in your terms. To charge a payment method when a customer is offline and save it as an option for future purchases, make sure that you explicitly collect consent from the customer for this specific use. For example, include a “Save my payment method for future use” checkbox to collect consent.
To charge them when they’re offline, make sure your terms include the following:
- 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 usada em um serviço de assinatura.
Não se esqueça de manter um registro por escrito da concordância do cliente com esses termos.
Configurar a StripeLado do servidor
Primeiro, crie uma conta Stripe ou entre.
Use nossas bibliotecas oficiais para acessar a API da Stripe no seu aplicativo:
Criar um CustomerLado do servidor
Para configurar um cartão para pagamentos futuros, vincule-a a um Customer. Crie um objeto Customer quando o cliente abrir uma conta na sua empresa. Os objetos Customer permitem a reutilização de formas de pagamento e o rastreamento em vários pagamentos.
Ativar formas de pagamento
Veja suas configurações de formas de pagamento e habilite as formas de pagamento que deseja aceitar. Você precisa de pelo menos uma forma de pagamento habilitada para criar um PaymentIntent.
Por padrão, a Stripe habilita cartões e outras formas de pagamento comuns que podem ajudar você a alcançar mais clientes, mas recomendamos ativar outras formas de pagamento que sejam relevantes para sua empresa e seus clientes. Consulte Opções de integração de formas de pagamento para saber mais sobre suporte a produtos e formas de pagamento, e nossa página de preços para ver as tarifas.
Criar um PaymentIntentLado do servidor
Observação
Se quiser renderizar o Payment Element antes de criar um PaymentIntent, consulte Coletar detalhes do pagamento antes de criar um Intent.
O objeto PaymentIntent representa sua intenção de recolher o pagamento de um cliente e rastreia tentativas de cobrança e alterações de estado ao longo do processo de pagamento.
Criar o PaymentIntent
Crie um PaymentIntent no seu servidor com um valor e uma moeda. Na versão mais recente da API, especificar o parâmetro automatic_payment_methods
é opcional porque a Stripe habilita sua funcionalidade por padrão. Você pode gerenciar formas de pagamento no Dashboard. A Stripe processa a devolução de formas de pagamento qualificadas com base em fatores como valor, moeda e fluxo de pagamento da transação.
Crie um PaymentIntent no seu servidor. Especifique um valor, uma moeda e um cliente. Na versão mais recente da API, especificar o parâmetro automatic_payment_methods
é opcional porque a Stripe habilita sua funcionalidade por padrão. Habilite setup_future_usage. As formas de pagamento configuradas no Dashboard são adicionadas automaticamente ao Payment Intent.
Se não quiser usar o Dashboard ou se preferir especificar as formas de pagamento manualmente, você pode listá-las usando o atributo payment_method_types
.
Observação
Sempre decida o valor a ser cobrado no lado do servidor, um ambiente confiável, e não no lado do cliente. Isso evita que clientes mal-intencionados escolham os próprios preços.
Recuperar o segredo do cliente
O PaymentIntent inclui um segredo do cliente que o lado do cliente usa para concluir com segurança o processo de pagamento. Você pode usar abordagens diferentes para enviar a senha do cliente ao lado do cliente.
Coletar dados de pagamentoLado do cliente
Colete dados de pagamento no cliente com o Payment Element. O Payment Element é um componente de IU que simplifica a coleta de dados de pagamento para uma ampla variedade de formas de pagamento.
O Payment Element contém um iframe que envia com segurança os dados de pagamento à Stripe por uma conexão HTTPS. Evite colocar o Payment Element dentro de outro iframe porque algumas formas de pagamento exigem redirecionamento para outra página para confirmação do pagamento.
If you do choose to use an iframe and want to accept Apple Pay or Google Pay, the iframe must have the allow attribute set to equal "payment *"
.
Para que sua integração funcione, o endereço da página de checkout deve começar com https://
em vez de http://
. Você pode testar sua integração sem usar HTTPS, mas lembre-se de ativá-la quando tudo estiver pronto para receber pagamentos no modo de produção.
O Payment Element renderiza um formulário dinâmico que permite ao cliente escolher uma forma de pagamento. Para cada forma de pagamento, o formulário solicita automaticamente que o cliente preencha todos os dados de pagamento necessários.
Personalizar a aparência
Personalize o Payment Element para corresponder ao design do seu site, passando o objeto appearance para options
ao criar o provedor do Elements
.
Solicitar endereços
Por padrão, o Payment Element coleta apenas os detalhes necessários do endereço de cobrança. Para coletar o endereço de cobrança completo (por exemplo, para calcular o imposto para mercadorias e serviços digitais) ou o endereço de entrega de um cliente, use o Address Element.
Solicitar token de comerciante do Apple Pay
Se você configurou sua integração para aceitar pagamentos pelo Apple Pay, recomendamos configurar a interface do Apple Pay para retornar um token de comerciante que habilite transações iniciadas por comerciante (MIT). Solicite o tipo de token de comerciante relevante no Payment Element.
Enviar o pagamento para a StripeLado do cliente
Use o stripe.confirmPayment para realizar o pagamento com os dados do Element Pagamento. Forneça um return_url a essa função para indicar aonde a Stripe deve enviar o usuário depois do pagamento. Seu usuário pode ser redirecionado primeiro para um local intermediário, como uma página de autorização do banco, antes de ser redirecionado para o return_url
. Após a conclusão de um pagamento com cartão, há um redirecionamento imediato para return_url
.
Se não quiser redirecionar para pagamentos com cartão após a conclusão do pagamento, defina redirecionar como if_required
. Isso redireciona somente os clientes que fazem checkout com formas de pagamento baseadas em redirecionamento.
Observação
stripe.confirmPayment
pode levar vários segundos para finalizar. Durante esse período, desative o formulário para impedir que seja reenviado e apresente um indicador de espera, como uma ampulheta. Se receber um erro, mostre-o ao cliente, reative o formulário e oculte o indicador de espera. Se o cliente tiver que executar etapas adicionais para finalizar o pagamento, como autenticação, o Stripe.js o orientará durante a execução.
Se o pagamento for bem-sucedido, o cartão será salvo no objeto Customer. Isso é indicado no campo customer do PaymentMethod. Nesse momento, associe o ID do objeto Customer à sua própria representação interna de um cliente, se existir. Dessa forma, você poderá usar o objeto PaymentMethod armazenado para receber pagamentos desse cliente no futuro sem que ele precise informar novamente os dados do pagamento.
Verifique se o return_url
corresponde a uma página no seu site que fornece o status do pagamento. Quando a Stripe redireciona o cliente para o return_url
, nós fornecemos os seguintes parâmetros de consulta de URL:
Parâmetro | Descrição |
---|---|
payment_intent | O identificador único do PaymentIntent . |
payment_intent_client_secret | O segredo do cliente do objeto PaymentIntent . |
Cuidado
Se você tiver ferramentas que acompanham a sessão do navegador do cliente, pode precisar adicionar o domínio stripe.com
à lista de exclusão dos indicadores. Os redirecionamentos fazem com que algumas ferramentas criem sessões, o que evita que você acompanhe a sessão completa.
Use um dos parâmetros de consulta para recuperar o PaymentIntent. Inspecione o status do PaymentIntent para decidir o que mostrar aos clientes. Você também pode anexar seus próprios parâmetros de consulta ao fornecer o return_url
, que persiste durante o processo de redirecionamento.
Cobrar mais tarde a forma de pagamento salvaLado do servidor
Aviso
bancontact
, ideal
e sofort
são formas de pagamento avulsas por padrão. Quando configurados para uso futuro, eles geram um tipo de forma de pagamento reutilizável sepa_debit
, então você precisa usar sepa_debit
para consultar formas de pagamento salvas.
Compliance
You’re responsible for your compliance with all applicable laws, regulations, and network rules when saving a customer’s payment details. When rendering past payment methods to your end customer for future purchases, make sure you’re listing payment methods where you’ve collected consent from the customer to save the payment method details for this specific future use. To differentiate between payment methods attached to customers that can and can’t be presented to your end customer as a saved payment method for future purchases, use the allow_redisplay parameter.
Quando estiver pronto para cobrar do cliente fora da sessão, use os IDs do cliente e do PaymentMethod para criar um PaymentIntent. Para encontrar uma forma de pagamento para cobrar, liste as formas de pagamento associadas ao seu cliente. Este exemplo lista cartões, mas você pode listar qualquer tipo.) aceito.
Quando tiver os IDs de Customer e PaymentMethod, crie um PaymentIntent com o valor e moeda do pagamento. Outros parâmetros que precisam ser definidos para o pagamento fora de sessão:
- Defina off_session como
true
para indicar que o cliente não está em seu fluxo de checkout durante uma tentativa de pagamento e não pode executar uma solicitação de autenticação feita por um parceiro, como emissor de cartão, banco ou outra instituição de pagamento. Se, durante o fluxo de checkout, um parceiro solicitar autenticação, a Stripe solicitará isenções usando informações do cliente de uma transação na sessão anterior. Se as condições de isenção não forem atendidas, o PaymentIntent pode gerar um erro. - Defina o valor da propriedade confirm do PaymentIntent como
true
, para que a confirmação ocorra imediatamente após a criação do PaymentIntent. - Defina payment_method com o ID do PaymentMethod e customer com o ID do Customer.
Testar a integração
Use os detalhes de pagamento de teste e a página de redirecionamento de teste para verificar sua integração. Clique nas guias abaixo para ver os detalhes de cada forma de pagamento.
Teste a cobrança de um PaymentMethod de débito SEPA
Confirmar o PaymentIntent usando iDEAL, Bancontact ou Sofort, gera um débito automático SEPA PaymentMethod. O débito automático SEPA é uma forma de pagamento de notificação posterior que muda para um estado de processing
intermediário antes de mudar vários dias depois para um estado succeeded
ou requires_payment_method
.