Salvar a forma de pagamento de um cliente quando ele usá-la para fazer um pagamento
Saiba como salvar a forma de pagamento do cliente ao confirmar um PaymentIntent ou Checkout Session.
Observação
A API Checkout Sessions também aceita salvar formas de pagamento quando usados pelos clientes para fazer pagamentos. Para saber mais, consulte o guia da API Checkout Sessions.
Use a API Payment Intents para salvar os dados de 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.
Transações com apresentação de cartão
Transações com apresentação de cartão, como pagamentos usando o Stripe Terminal, usam um processo diferente para salvar a forma de pagamento. Para obter mais informações, consulte a documentação do Terminal.
conformidade
Você é responsável por cumprir todas as leis, regulamentos e regras da bandeira em vigor ao salvar os dados de pagamento de um cliente. Esses requisitos geralmente se aplicam quando você quer salvar a forma de pagamento do cliente para uso futuro, como exibir a forma de pagamento de um cliente para ele no fluxo de checkout para uma compra futura ou cobrá-lo 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.
Quando salva uma forma de pagamento, você só pode usá-la para o uso específico incluído nos seus termos. Para cobrar uma forma de pagamento quando o cliente está offline e salvá-la como opção para compras futuras, não se esqueça de obter o consentimento do cliente para esse uso específico. Por exemplo, inclua a caixa de seleção “Salvar minha forma de pagamento para uso futuro” para coletar consentimento.
Para cobrar os clientes quando eles estiverem offline, certifique-se de que seus termos incluam 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 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.
Cuidado
As normas SCA exigem que você autentique o cliente antecipadamente se pretende receber novos pagamentos dele no futuro. Se o cliente não fizer a primeira autenticação, o banco pode recusar futuros pagamentos e exigir autenticação.
Configurar a StripeLado do servidor
Primeiro, cadastre-se para obter uma conta Stripe.
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.
A criação bem-sucedida retorna o objeto Customer. Você pode inspecionar o objeto para obter o id
do cliente e armazená-lo no seu banco de dados para recuperação posterior.
Veja esses clientes na página Clientes do Dashboard.
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 predominantes 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 Suporte a formas de pagamento para saber mais sobre os produtos e formas de pagamento aceitos, e nossa página de preços para ver as tarifas.
Criar pagamentoLado 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.
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 diversas 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.
Se você optar por usar um iframe e quiser aceitar Apple Pay ou Google Pay, o iframe deve ter o atributo de permissão definido como "payment *"
.
O endereço da página de checkout deve começar com https://
em vez de http://
para que sua integração funcione. Você pode testar a integração sem usar HTTPS, mas lembre-se de habilitar HTTPS quando estiver pronto para aceitar pagamentos em tempo real.
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 tiver configurado sua integração para aceitar pagamentos 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 pertinente no Payment Element.
Enviar o pagamento para a StripeLado do cliente
Use stripe.confirmPayment para concluir o pagamento utilizando os detalhes do Payment Element. Forneça um return_url a essa função para indicar para onde a Stripe deve redirecionar o usuário após a conclusão do pagamento. Seu usuário pode ser redirecionado primeiro para um site intermediário, como uma página de autorização bancária, antes de ser redirecionado para o return_
. Os pagamentos com cartão são redirecionados imediatamente para o return_
quando um pagamento é finalizado.
Se não quiser redirecionar pagamentos com cartão após a conclusão do pagamento, defina redirecionar como if_
. Isso somente redireciona os clientes que fazem checkout com formas de pagamento baseadas em redirecionamento.
Observação
stripe.
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 houver. 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_
corresponde a uma página no seu site que fornece o status do pagamento. Quando a Stripe redireciona o cliente para o return_
, nós fornecemos os seguintes parâmetros de consulta de URL:
Parâmetro | Descrição |
---|---|
payment_ | O identificador único do PaymentIntent . |
payment_ | O segredo do cliente do objeto PaymentIntent . |
Cuidado
Se você tiver ferramentas que rastreiam a sessão do cliente no navegador, pode ser necessário adicionar o domínio stripe.
à lista de exclusão de referenciadores. Os redirecionamentos fazem com que algumas ferramentas criem novas sessões, o que impede que você rastreie 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_
, 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_
, então você precisa usar sepa_
para consultar formas de pagamento salvas.
Conformidade
Você é responsável por cumprir todas as leis, regulamentos e regras de rede aplicáveis ao salvar os dados de pagamento de um cliente. Quando exibir formas de pagamento passadas ao seu cliente final para compras futuras, liste as formas de pagamento para as quais obteve consentimento do cliente para salvar os dados para esse uso futuro específico. Para diferenciar entre formas de pagamento vinculadas a clientes que podem e não podem ser apresentados ao seu cliente final como uma forma de pagamento salva para compras futuras, use o parâmetro allow_redisplay.
Quando estiver pronto para cobrar do cliente fora da sessão, use os IDs do cliente e do PaymentMethod para criar uma 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 Cliente.
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_
.