Salvar a forma de pagamento de um cliente sem fazer pagamento
Saiba como salvar uma forma de pagamento e cobrá-la mais tarde.
A API Checkout Sessions em setup
mode permite que você salve os detalhes de pagamento de um cliente sem um pagamento inicial. Isso é útil se você quiser fazer onboarding dos clientes agora, configurá-los para pagamentos e cobrá-los usando a API Payment Intents no futuro, quando estiverem offline.
Use esta integração para configurar pagamentos recorrentes ou criar pagamentos avulsos de valores a serem definidos mais tarde, talvez depois de o cliente receber seu serviço.
Transações com cartão presente
As transações com cartão presente, como , as que recolhem os dados do cartão por meio do Stripe Terminal, usam um processo diferente para salvar as formas de pagamento.
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.
Ao salvar 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 um cliente quando ele estiver off-line, 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.
Observação
Se você precisar usar a confirmação manual do lado do servidor ou se sua integração exigir a apresentação de formas de pagamento separadamente, consulte nosso guia alternativo .
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 clienteLado do servidor
Para configurar uma forma de pagamento para pagamentos futuros, você deve anexá-la a um Customer. Crie um objeto Customer
quando seu cliente criar uma conta com sua empresa. Os objetos Customer
permitem reutilizar formas de pagamento e rastrear vários pagamentos.
Usar o modo de configuraçãoLado do servidor
Crie uma sessão de Checkout com mode=setup.
Anexe a forma de pagamento a um clienteLado do servidor
Se você não criou a Checkout Session com um cliente existente, use o ID do PaymentMethod para attach a forma de pagamento para um cliente.
Caso contrário, a forma de pagamento será automaticamente vinculada ao cliente que você forneceu ao criar a Checkout Session.
Recuperar a forma de pagamentoLado do servidor
Depois que um cliente concluir com êxito sua sessão de Checkout, trate o Webhook checkout.session.completed. Recupere o objeto Session no Webhook e faça o seguinte:
- Obtenha o valor da chave setup_intent, que é a ID do SetupIntent criada durante a Checkout Session.
- Use a ID SetupIntent para recuperar o objeto SetupIntent. O objeto retornado contém um payment_method ID que você pode anexar a um cliente na próxima etapa.
Saiba mais sobre configuração de Webhooks.
Cobrar a forma de pagamento mais tardeLado do servidor
Depois de anexar o PaymentMethod a um cliente, você pode fazer um pagamento off-session usando um PaymentIntent:
- Defina customer como o ID do cliente e payment_method como o ID da forma de pagamento.
- Defina off_session para
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 um emissor de cartão, banco ou outra instituição de pagamento. Se, durante o seu fluxo de checkout, um parceiro solicitar autenticação, o Stripe Authentication solicita isenções usando informações do cliente de uma transação anterior on-session. Se as condições para isenção não forem atendidas, o PaymentIntent poderá resultar em um erro. - Defina o valor do PaymentIntent’s confirma a propriedade do PaymentIntent como
true
, o que faz com que a confirmação ocorra imediatamente quando você cria o PaymentIntent.
Se uma tentativa de pagamento falhar, a solicitação também falhará com um código de status HTTP 402 e o status do PaymentIntent será requires_payment_method. Notifique o cliente para retornar ao seu aplicativo (por exemplo, enviando um e-mail ou uma notificação no aplicativo) e direcione o cliente para uma nova Checkout Session para selecionar outra forma de pagamento.