aceite pagamentos usando cobranças e transferências separadas
use cobranças e transferências separadas para aceitar pagamentos.
Crie cobranças e transferências separadas para transferir fundos de um pagamento para várias contas conectadas ou quando um usuário específico não for conhecido na hora do pagamento. A cobrança em sua conta da plataforma está desvinculada das transferências para suas contas conectadas. Com esse tipo de cobrança:
- Você cria uma cobrança na conta da sua plataforma e transfere fundos para suas contas conectadas. O pagamento aparece como cobrança na sua conta, e também há transferências para contas conectadas (valor determinado por você), que são retiradas do saldo da sua conta.
- Você pode transferir os fundos para diferentes contas conectadas.
- Você é o merchant of record, e o saldo de sua conta é debitado pelos custos das tarifas, reembolsos e estornos da Stripe.
Esse tipo de cobrança ajuda os marketplaces a dividir os pagamentos entre várias partes. Por exemplo, uma plataforma de entrega de restaurantes que divide os pagamentos entre o restaurante e o entregador.
Observação
A segregação de fundos é um recurso de visualização privada que mantém os fundos de pagamento em um estado de retenção protegido antes de você transferi-los para contas conectadas. Isso evita que os fundos alocados sejam usados para operações não relacionadas à plataforma. Entre em contato com seu gerente da conta Stripe para solicitar acesso.
Criar uma sessão do CheckoutLado do servidor
Uma Checkout Session controla o que o seu cliente vê no formulário de pagamento, como itens de linha, o valor e a moeda do pedido, bem como formas de pagamento aceitáveis. Adicione um botão de checkout ao seu site para chamar um endpoint do lado do servidor e criar uma Sessão do Checkout.
No seu servidor, crie uma sessão do Checkout e redirecione o cliente para o URL retornado na resposta.
| Parâmetro | Valor | Obrigatório? | Descrição |
|---|---|---|---|
| line_items | Uma lista de itens que o cliente está comprando. | Exigido condicionalmente | Esse atributo representa os itens que o cliente está comprando. Os itens são exibidos na página de checkout hospedada pela Stripe. |
| payment_intent_data[transfer_group] | Uma sequência de caracteres exclusiva que identifica um pagamento como parte de um grupo. | Sim | Quando a Stripe cria automaticamente uma cobrança para um PaymentIntent com um valor transfer_, ele atribui o mesmo valor ao transfer_ da cobrança. |
| success_url | Um URL válido | Sim | A Stripe redireciona o cliente para o URL de sucesso após ele concluir um pagamento e substitui a sequência {CHECKOUT_ pela ID da Sessão de Checkout. Use isso para recuperar a Sessão de Checkout e inspecionar o status para decidir o que mostrar ao cliente. Você também pode anexar seus próprios parâmetros de consulta, que persistem durante o processo de redirecionamento. Consulte como personalizar o comportamento de redirecionamento em uma página hospedada pelo Stripe para mais informações. |
Tratar eventos após o pagamento para cobranças e transferências separadasLado do servidor
A Stripe envia um evento checkout.session.completed quando o pagamento é concluído. Use um webhook para receber esses eventos e executar ações, como enviar um e-mail de confirmação de pedido ao cliente, registrar a venda em um banco de dados ou iniciar um fluxo de entrega.
Ouça esses eventos em vez de esperar por um retorno de chamada do cliente. No cliente, o cliente poderia fechar a janela do navegador ou sair do aplicativo antes da execução do retorno de chamada. Algumas formas de pagamento também levam de 2 a 14 dias para a confirmação do pagamento. Configurar sua integração para ouvir eventos assíncronos permite que você aceite várias formas de pagamento com uma única integração.
Trate os seguintes eventos ao coletar pagamentos com o Checkout:
| Evento | Descrição | Próximas etapas |
|---|---|---|
| checkout.session.completed | O cliente autorizou o pagamento enviando o formulário do Checkout. | Aguarde a confirmação ou falha do pagamento. |
| checkout.session.async_payment_succeeded | O pagamento do cliente foi confirmado. | Execute o pedido de mercadorias ou serviços. |
| checkout.session.async_payment_failed | O pagamento foi recusado ou houve outro erro. | Entre em contato com o cliente por e-mail e solicite a realização de um novo pedido. |
Todos esses eventos incluem o objeto Checkout Session. Após o pagamento, o status subjacente do PaymentIntent muda de processing para succeeded ou um status malsucedido.
Criar uma transferênciaLado do servidor
No seu servidor, envie fundos da sua conta para uma conta conectada criando uma Transferência e especificando o transfer_ utilizado.
Os valores de transferência e cobrança não precisam ser iguais. Você pode dividir uma única cobrança entre várias transferências ou incluir várias cobranças em uma única transferência. O exemplo a seguir cria uma transferência adicional associada ao mesmo transfer_.
Opções de transferência
Você pode atribuir qualquer valor à string transfer_, mas ela deve representar uma única ação de negócios. Também é possível fazer uma transferência sem associar uma cobrança ou transfer_. Por exemplo, quando você paga um provedor, mas não há um pagamento a cliente associado.
Observação
O transfer_ identifica apenas objetos associados. Ele não afeta nenhuma funcionalidade padrão. Para evitar que uma transferência seja executada antes que os fundos da cobrança associada estejam disponíveis, use o atributo source_ da transferência.
Por padrão, uma solicitação de transferência falha quando o valor excede o saldo da conta disponível da plataforma. A Stripe não repete automaticamente solicitações de transferência malsucedidas.
Você pode evitar falhas nas solicitações de transferência para transferências associadas a cobranças. Quando você especifica a cobrança associada como a source_transaction da transferência, a solicitação de transferência é bem-sucedida automaticamente. No entanto, não executamos a transferência até que os fundos dessa cobrança estejam disponíveis na conta da plataforma.
Observação
Se você usa cobranças e transferências separadas, leve isso em consideração quando planejar seu cronograma de repasses payout. Repasses automáticos podem interferir nas transferências que não têm uma source_ definida.
Disponibilidade geográfica
A Stripe aceita cobranças e transferências separadas nas seguintes regiões:
Na maioria dos cenários, sua plataforma e qualquer conta conectada devem estar na mesma região. A tentativa de transferência de fundos por uma fronteira não permitida retorna um erro. Para informações sobre como aceitar transferências entre regiões, consulte transferências transfronteiriças. Você só deve usar transferências em combinação com os casos de uso permitidos para cobranças, recarregar e tarifas. Use cobranças e transferências separadas para contas conectadas que tenham acesso ao Dashboard Express ou que não tenham acesso ao Dashboard.
Próximas etapas
Em seguida, saiba como cobrar taxas de inscrição das suas contas conectadas.