Executar pedidos
Saiba como executar pagamentos recebidos com a API Checkout Sessions.
Quando você recebe um pagamento com a API Checkout Sessions, pode ser necessário fornecer ao cliente o que ele pagou. Por exemplo, pode ser necessário conceder acesso a um serviço ou enviar mercadorias físicas. Esse processo é conhecido como execução, e você tem duas maneiras de lidar com esse processo:
- Manualmente: Você pode executar pedidos manualmente usando os dados que a Stripe disponibiliza para você. Por exemplo, você pode monitorar o Dashboard, verificar e-mails de notificação de pagamento, ver relatórios e executar pedidos.
- Automaticamente: Você pode criar um sistema de execução automatizado. Recomendado
A primeira opção funciona para empreendimentos de baixo volume ou experimentais, mas para a maioria das situações recomendamos automatizar a execução. O restante deste guia mostra como criar um sistema de execução automática.
Execução automática
O sistema de execução automática descrito abaixo usa uma combinação de webhooks e um redirecionamento para o seu site para acionar a execução. Você precisa usar webhooks para garantir que cada pagamento aconteça, e os redirecionamentos permitem que os clientes acessem serviços ou detalhes de execução imediatamente após o pagamento.
Criar uma função de execuçãoLado do servidor
Crie uma função no seu servidor para executar pagamentos bem-sucedidos. Os webhooks acionam essa função, que é chamada quando os clientes são enviados ao seu site após a conclusão do checkout. Este guia refere-se a esta função como fulfill_
, mas você usar o nome que quiser para a função.
Sua função fulfill_
deve:
- Gerencie corretamente a repetição de chamados com o mesmo ID de sessão do Checkout.
- Aceite um ID de sessão do Checkout como argumento.
- Acesse a sessão do Checkout na API com a propriedade line_items expandida.
- Verifique a propriedade payment_status para saber se é preciso executá-la.
- Fazer a execução dos itens de linha.
- Registre o status de execução da sessão do Checkout informada.
Use o código abaixo como ponto de partida para sua função fulfill_
. Os comentários TODO
indicam funções que você precisa implementar.
Observação
Os snippets de código abaixo podem chamar a função fulfill_
de fulfillCheckout
ou FulfillCheckout
, dependendo da linguagem selecionada, mas todos representam a mesma função.
Observação
Se uma sessão do Checkout tiver muitos itens de linha, use paginação automática com o API de itens de linha do Checkout para recuperar todos eles.
Dependendo das formas de pagamento aceitas e das necessidades da sua empresa, pode ser necessário que a função fulfill_
faça o seguinte:
- Providenciar acesso a serviços.
- Acionar envio de mercadorias.
- Salve uma cópia dos dados de pagamento e dos itens de linha no seu próprio banco de dados.
- Envie um e-mail de recibo personalizado ao cliente se não ativar os recibos da Stripe.
- Reconcilie itens de linha e quantidades compradas se permitir que os clientes ajustem quantidades no Checkout.
- Atualize os registros de estoque ou inventário.
Criar um gerenciador de eventos de pagamentoLado do servidor
Para acionar a execução, crie um gerenciador de eventos de webhook para ouvir eventos de pagamento e acionar sua função fulfill_
.
Quando alguém paga você, é criado um evento checkout.
. Configure um endpoint no seu servidor para aceitar, processar e confirmar o recebimento desses eventos.
Formas de pagamento imediatas e postergadas
Algumas formas de pagamento não são instantâneas, como débito automático ACH e outras transferências bancárias. Isso significa que os fundos não estarão imediatamente disponíveis quando o Checkout for concluído. Formas de pagamento postergadas geram um evento checkout.session.async_payment_succeeded quando o pagamento é bem-sucedido posteriormente. O status do objeto permanece em processamento até que o status do pagamento seja bem-sucedido ou falhe.
Observação
O segredo do webhook (whsec_
) mostrado no código abaixo vem do Stripe CLI ou do seu endpoint de webhook. Você pode usar o Stripe CLI para testes locais e a Stripe usa um endpoint de webhook para enviar eventos ao seu manipulador quando ele está sendo executado em um servidor. Veja mais informações na próxima seção.
Você também pode escutar e gerenciar eventos checkout.
. Por exemplo, você pode enviar um e-mail ao cliente quando um pagamento postergado falhar.
Teste seu gerenciador de eventos localmente
A maneira mais rápida de desenvolver e testar seu gerenciador de eventos de webhook é com a Stripe CLI. Se não tiver a Stripe CLI, siga o guia de instalação para começar.
Quando a Stripe CLI é instalada, você pode testar o gerenciador de eventos localmente. Execute seu servidor (por exemplo, em localhost:4242
) e execute o comando stripe listen para que a Stripe CLI encaminhe eventos ao servidor local:
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is 'whsec_<REDACTED>' (^C to quit)
Adicione o segredo do webhook (whsec_
) ao código de tratamento do evento e teste a execução ao passar pelo checkout como cliente.
Quando o pagamento for concluído, verifique o seguinte:
- Na linha de comando, onde
stripe listen
está sendo executado, um eventocheckout.
é exibido e encaminhado ao servidor local.session. completed - Seus logs do servidor mostram a saída esperada da sua função
fulfill_
.checkout
Criar um endpoint de webhook
Depois de testar localmente, coloque seu gerenciador de eventos de webhook em funcionamento no servidor. Em seguida, crie um endpoint de webhook para enviar eventos checkout.
ao seu servidor e teste o fluxo do Checkout novamente.
Execução de gatilhos na sua página de destinoRecomendado
É necessário ouvir webhooks para garantir que você sempre acione a execução de cada pagamento, mas os webhooks podem sofrer atrasos. Para otimizar seu fluxo de pagamento e garantir o atendimento imediato quando o cliente estiver presente, acione também a execução na sua página de destino. Você pode configurar a página de chegada passando return_url ao criar a Sessão de Checkout ou passando returnUrl para confirm
no frontend.
Use o ID da Sessão de Checkout do URL especificado para fazer o seguinte:
- Quando o servidor receber uma solicitação para a página inicial do Checkout, extraia o ID da Sessão de Checkout do URL.
- Execute a função
fulfill_
com o ID fornecido.checkout - Renderize a página após a conclusão da tentativa de execução.
Ao renderizar sua página de destino, você pode exibir o seguinte:
- Detalhes do processo de execução.
- Links ou informações sobre serviços aos quais o cliente agora tem acesso.
- Dados de envio ou logística de mercadorias físicas.
Webhooks são obrigatórios
Não se pode confiar no acionamento da execução apenas na página inicial do checkout, porque seus clientes não têm garantia de visita a essa página. Por exemplo, alguém pode pagar com êxito e, em seguida, perder a conexão com a internet antes que sua página de destino carregue.
Configure um gerenciador de eventos de webhook para que a Stripe possa enviar eventos de pagamento diretamente ao seu servidor, ignorando totalmente o cliente. Os webhooks fornecem a maneira mais confiável de confirmar quando você recebe pagamento. Se a entrega do evento de webhook falhar, a Stripe faz várias novas tentativas.