Aceitar uma transferência bancária
Use a API Payment Intents para aceitar pagamentos por 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 restante no saldo em dinheiro do cliente. Você encontra mais detalhes sobre como a Stripe gerencia a reconciliação 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.
Configurar a StripeLado do servidor
Primeiro, você precisa de uma conta Stripe. Cadastre-se agora.
Use nossas bibliotecas oficiais para acessar a API da Stripe no seu aplicativo:
Crie ou recupere um CustomerLado do servidor
É necessário associar um objeto Customer para reconciliar o pagamento de cada transferência bancária. Se você já tem um objeto Customer, ignore esta etapa. Caso contrário, crie um objeto Customer.
Criar um PaymentIntentLado do servidor
Um PaymentIntent é um objeto que representa sua intenção de coletar o pagamento de um cliente, acompanhando todas as etapas do ciclo de vida do processo de pagamento. Crie um PaymentIntent no servidor, especificando o valor e a moeda que você deseja receber. Você também deve preencher o parâmetro customer da solicitação de criação de PaymentIntent. Sem esse cliente, as transferências bancárias não estão disponíveis no PaymentIntents.
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.
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.
Na confirmação, a Stripe automaticamente abre um modal para exibir os detalhes da transferência bancária para o seu cliente.
Enviar 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.
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.
Confirme se o PaymentIntent foi bem-sucedido
O status do PaymentIntent permanece requires_
até o recebimento dos fundos na conta bancária. Quando os fundos ficam disponíveis, o status do PaymentIntent muda de requires_
para succeeded
.
O endpoint de webhook precisa estar configurado para começar a receber o evento payment_
. Quando o PaymentIntent é parcialmente financiado, o status continua sendo requires_
.
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.
Cuidado
O Stripe CLI não aceita o acionamento de eventos da versão beta API, como payment_
.
Os eventos a seguir são enviados durante o fluxo de fundos do pagamento quando o status do PaymentIntent é atualizado.
Evento | Descrição | Próximas etapas |
---|---|---|
payment_ | Enviado durante a confirmação quando o saldo do cliente é insuficiente para reconciliar o PaymentIntent. O status do PaymentIntent muda para requires_ . | Oriente o cliente a enviar uma transferência bancária com o valor de amount_ . |
payment_ | 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 amount_ para finalizar o pagamento. Se quiser concluir o pagamento com os fundos parciais, atualize amount e confirme o PaymentIntent novamente. |
payment_ | O pagamento do cliente foi confirmado. | 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 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 sua integração
Teste a integração simulando o recebimento de uma transferência bancária na API, no Dashboard ou usando uma versão beta da Stripe CLI.
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_ | 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 em toda a 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.