Aceitar uma transferência bancária
Na primeira vez em que você aceita um pagamento por transferência bancária de um cliente, a Stripe gera uma conta bancária virtual para o cliente, que pode ser compartilhada diretamente com ele. Todos os pagamentos futuros por transferência bancária deste cliente são enviados para essa conta bancária. Em alguns países, a Stripe também fornece um número de referência de transferência exclusivo que seu cliente deve incluir em cada transferência para facilitar a correspondência entre a transferência e os pagamentos pendentes. Alguns países têm limites para a quantidade de números de contas bancárias virtuais que você pode criar gratuitamente.
Você encontra uma visão geral das etapas comuns ao aceitar um pagamento por transferência bancária no seguinte diagrama de sequência:
Gerenciar pagamentos a menor e a maior
Com pagamentos por transferência bancária, é possível que o cliente envie a você mais ou menos do que o valor do pagamento esperado. Se o cliente enviar muito pouco, a Stripe financiará parcialmente um Payment Intent em aberto. As faturas não são parcialmente financiadas e permanecem abertas até que os fundos recebidos cubram o valor total da fatura.
Se o cliente enviar mais do que o esperado, a Stripe tentará reconciliar os fundos recebidos com um pagamento em aberto e manter o valor em excesso no saldo do cliente. Mais detalhes sobre como a Stripe gerencia a reconciliação estão disponíveis na seção de reconciliação da nossa documentação.
Gerenciar vários pagamentos ou faturas em aberto
Você pode ter vários pagamentos ou faturas em aberto que podem ser pagos com transferência bancária. Na configuração padrão, a Stripe tenta reconciliar automaticamente a transferência bancária usando informações como o código de referência da transferência ou o valor transferido.
Você mesmo pode desativar a reconciliação automática e reconciliar manualmente pagamentos e faturas. É possível sobrepor o comportamento de reconciliação automática por cliente, definindo o modo de reconciliação como manual.
Configure a StripeLado do servidor
Primeiro, você precisa de uma conta Stripe. Inscreva-se agora.
Use nossas bibliotecas oficiais para acessar a API da Stripe no seu aplicativo:
Crie ou recupere um CustomerLado do servidor
Você deve associar um objeto Customer para reconciliar cada pagamento por transferência bancária. Se tiver um objeto Customer, ignore essa etapa. Caso contrário, crie um objeto Customer.
Crie e confirme um PaymentIntentLado do servidor
Um PaymentIntent é um objeto que representa sua intenção de receber pagamento de um cliente e acompanha o ciclo de vida do processo de pagamento durante cada etapa. Crie e confirme um PaymentIntent no servidor, especificando o valor e a moeda que você deseja receber.
Oriente o cliente a finalizar uma transferência bancáriaLado do cliente
Quando o saldo do cliente não é suficiente para cobrir o valor da solicitação, o PaymentIntent mostra o status requires_action
. A resposta tem um campo next_action
com o valor de type
de display_bank_transfer_instructions
. O hash next_action[display_bank_transfer_instructions]
contém informações a serem exibidas ao cliente para que ele finalize a transferência bancária.
Observação
No modo de produção, a Stripe fornece a cada cliente um conjunto único de dados de transferência bancária. Por outro lado, a Stripe oferece dados de transferência bancária inválidos a todos os clientes no modo de teste. Ao contrário do modo de produção, esses dados inválidos podem não ser únicos.
Confirme se o PaymentIntent foi bem-sucedido
O status do PaymentIntent permanece requires_action
até o recebimento dos fundos na conta bancária. Quando os fundos ficam disponíveis, o status do PaymentIntent muda de requires_action
para succeeded
.
Você precisa configurar seu endpoint webhook para começar a receber o evento payment_intent.partially_funded
.
Você pode adicionar um webhook no Dashboard.
Como alternativa, use a API Webhook Endpoints para começar a receber o evento payment_intent.partially_funded
.
A Stripe envia os eventos a seguir durante o fluxo de financiamento do pagamento quando atualizamos o PaymentIntent.
Evento | Descrição | Próximas etapas |
---|---|---|
payment_intent.requires_action | Enviado durante a confirmação quando o saldo do cliente é insuficiente para reconciliar o PaymentIntent. O status do PaymentIntent muda para requires_action . | Oriente o cliente a enviar uma transferência bancária com o valor de amount_remaining . |
payment_intent.partially_funded | O cliente enviou uma transferência bancária que foi aplicada ao PaymentIntent, mas não foi suficiente para finalizar o pagamento. Isso pode ocorrer quando o cliente transfere um valor insuficiente (por engano ou dedução de tarifas pelo banco) ou quando um saldo remanescente do cliente é aplicado a esse PaymentIntent. PaymentIntents com fundos parciais não são refletidos no saldo da conta até que o pagamento seja finalizado. | Oriente o cliente a enviar outra transferência bancária com o novo valor de amount_remaining para finalizar o pagamento. Se quiser finalizar o pagamento com os fundos parciais, atualize amount e confirme novamente o PaymentIntent. |
payment_intent.succeeded | O pagamento do cliente foi bem-sucedido. | Execute o pedido de mercadorias ou serviços do cliente. |
Cuidado
Quando você altera o valor de um PaymentIntent parcialmente financiado, os fundos são devolvidos ao saldo do cliente. Se houver outros PaymentIntents abertos, a Stripe os financia automaticamente. Se o cliente estiver configurado para reconciliação manual, você precisará aplicar os fundos novamente.
Recomendamos usar webhooks para confirmar que a cobrança foi bem-sucedida e notificar o cliente de que o pagamento está concluído.
Exemplo de código
Ver pagamentos pendentes no Dashboard
Para ver todos os PaymentIntents de transferências bancárias pendentes no Dashboard, aplique o filtro Aguardando fundos ao Status.
Teste a integração
Você pode testar sua integração ao simular a entrada de uma transferência bancária usando o Dashboard ou uma solicitação de HTTP.
Com o Dashboard
Para simular uma transferência bancária usando o Dashboard, navegue até a página do cliente no Dashboard. Em Formas de pagamento, clique em Adicionar e selecione Financiar saldo em dinheiro (somente no modo de teste).
Com a API da Stripe
Você pode simular uma transferência bancária usando uma chamada de API.
Gerenciar problemas temporários de disponibilidade
Os seguintes códigos de erro indicam problemas temporários com a disponibilidade da forma de pagamento:
Código | Descrição | Tratamento |
---|---|---|
payment_method_rate_limit_exceeded | Foram realizadas solicitações em excesso em sequência para esta forma de pagamento, que tem limites mais rígidos do que as limitações de fluxo amplas da API. | Esses erros podem persistir para várias solicitações de API quando muitos dos seus clientes tentam usar a mesma forma de pagamento, como durante uma venda em andamento no seu site. Nesse caso, peça para seus clientes escolherem uma forma de pagamento diferente. |
Cuidado
Se você prevê um uso intenso em geral ou devido a um evento que está por vir, entre em contato conosco assim que tiver conhecimento.