Executar pedidos
Saiba como executar pagamentos recebidos com a API Checkout Sessions.
Quando você recebe um pagamento com o API Checkout Sessions (incluindo Payment Links), 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.
- Pressione o botão de checkout que leva você ao Checkout ou acesse o seu Payment Link
- Informe os seguintes dados de teste no Checkout:
- Insira o número de cartão
4242 4242 4242 4242
- Insira uma data futura qualquer para a validade
- Insira qualquer número de 3 dígitos no CVV
- Informe qualquer código postal para cobrança (
90210
)
- Insira o número de cartão
- Pressione o botão Pagar
Quando o pagamento for concluído, verifique o seguinte:
- Na linha de comando, onde
stripe listen
está sendo executado, aparece um eventocheckout.
encaminhado ao servidor local.session. completed - Seus logs de servidor mostram o resultado esperado da 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.
Configurar o URL de uma página de destinoRecomendado
Configure o Checkout para enviar o cliente para uma página do seu site depois que ele concluir o Checkout. Inclua o espaço reservado {CHECKOUT_
no URL da sua página, que é substituído pelo ID da Sessão de Checkout quando seu cliente conclui o processo de checkout.
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.
Use o ID da Sessão de Checkout do URL especificado na etapa anterior 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 pela página de chegada do checkout, porque nem sempre os clientes vão acessar essa página. Por exemplo, alguém pode fazer o pagamento e perder a conexão com a internet antes que a 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 um pagamento. Se a entrega do evento de webhook falhar, a Stripe faz novas tentativas várias vezes.