Pular para o conteúdo
Criar conta
ou
Entrar
O logotipo da documentação da Stripe
/
Pergunte à IA
Criar conta
Login
Comece já
Pagamentos
Receita
Plataformas e marketplaces
Gestão de valores
Ferramentas para desenvolvedores
Visão geral
Sobre os pagamentos da Stripe
Atualize sua integração
Análise de pagamentos
Pagamentos online
Visão geralEncontre seu caso de usoPagamentos gerenciados
Usar Payment Links
Crie uma página de checkout
    Visão geral
    Inícios rápidos
    Personalizar a aparência
    Coletar informações adicionais
    Colete impostos
    Atualizar checkout dinamicamente
    Gerencie seu catálogo de produtos
    Assinaturas
    Gerenciar formas de pagamento
    Permita que os clientes paguem na moeda local
    Adicione descontos, upsells e itens opcionais
    Configurar pagamentos futuros
    Salvar dados de pagamento durante o pagamento
    Aprovar manualmente pagamentos no servidor
    Após o pagamento
      Executar pedidos
      Enviar recibos e faturas pagas
      Personalizar o comportamento de redirecionamento
      Recupere carrinhos abandonados
      Analisar funil de conversão
    Elements com changelog beta da API Checkout Sessions
    Migrar do Checkout antigo
    Migrar o Checkout para usar Prices
Criar uma integração avançada
Crie uma integração no aplicativo
Formas de pagamento
Adicionar formas de pagamento
Gerenciar formas de pagamento
Checkout mais rápido com o Link
Interfaces de pagamento
Payment Links
Checkout
Web Elements
Elements no aplicativo
Cenários de pagamento
Fluxos de pagamento personalizados
Aquisição flexível
Orquestração
Pagamentos presenciais
Terminal
Outros produtos da Stripe
Financial Connections
Cripto
Climate
Página inicialPagamentosBuild a checkout pageAfter the payment

Executar pedidos

Saiba como executar pagamentos recebidos com a API Checkout Sessions.

Copiar página

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ção
Lado 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_checkout, mas você usar o nome que quiser para a função.

Evitar execuções repetidas

Fazer a execução somente uma vez por pagamento. Devido ao funcionamento dessa integração e da internet, sua função fulfill_checkout pode ser invocada várias vezes, às vezes simultaneamente, na mesma sessão do Checkout. Realizar o checkout apenas uma vez garante que isso não causará comportamentos indesejados.

Sua função fulfill_checkout deve:

  1. Gerencie corretamente a repetição de chamados com o mesmo ID de sessão do Checkout.
  2. Aceite um ID de sessão do Checkout como argumento.
  3. Acesse a sessão do Checkout na API com a propriedade line_items expandida.
  4. Verifique a propriedade payment_status para saber se é preciso executá-la.
  5. Fazer a execução dos itens de linha.
  6. 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_checkout. 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_checkout de fulfillCheckout ou FulfillCheckout, dependendo da linguagem selecionada, mas todos representam a mesma função.

Ruby
def fulfill_checkout(session_id) # Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
puts "Fullfilling Checkout Session #{session_id}" # TODO: Make this function safe to run multiple times, # even concurrently, with the same session ID # TODO: Make sure fulfillment hasn't already been # performed for this Checkout Session # Retrieve the Checkout Session from the API with line_items expanded checkout_session = Stripe::Checkout::Session.retrieve({ id: session_id, expand: ['line_items'], }) # Check the Checkout Session's payment_status property # to determine if fulfillment should be performed if checkout_session.payment_status != 'unpaid' # TODO: Perform fulfillment of the line items # TODO: Record/save fulfillment status for this # Checkout Session end end

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_checkout 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 pagamento
Lado 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_checkout.

Quando alguém paga você, é criado um evento checkout.session.completed. 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.

Ruby
require 'sinatra' # Use the secret provided by Stripe CLI for local testing # or your webhook endpoint's secret. endpoint_secret = 'whsec_...' post '/webhook' do event = nil # Verify webhook signature and extract the event # See https://stripe.com/docs/webhooks#verify-events for more information. begin sig_header = request.env['HTTP_STRIPE_SIGNATURE'] payload = request.body.read event = Stripe::Webhook.construct_event(payload, sig_header, endpoint_secret) rescue JSON::ParserError => e # Invalid payload return status 400 rescue Stripe::SignatureVerificationError => e # Invalid signature return status 400 end if event['type'] == 'checkout.session.completed' || event['type'] == 'checkout.session.async_payment_succeeded' fulfill_checkout(event['data']['object']['id']) end status 200 end

Você também pode escutar e gerenciar eventos checkout.session.async_payment_failed. 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:

Command Line
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)
  • 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 evento checkout.session.completed encaminhado ao servidor local.
  • 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.session.completed ao seu servidor e teste o fluxo do Checkout novamente.

Configurar o URL de uma página de destino
Recomendado

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_SESSION_ID} no URL da sua página, que é substituído pelo ID da Sessão de Checkout quando seu cliente conclui o processo de checkout.

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "line_items[0][price]"=
{{PRICE_ID}}
\ -d "line_items[0][quantity]"=1 \ -d mode=payment \ -d ui_mode=embedded \ --data-urlencode return_url="https://example.com/after-checkout?session_id={CHECKOUT_SESSION_ID}"

Execução de gatilhos na sua página de destino
Recomendado

É 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:

  1. Quando o servidor receber uma solicitação para a página inicial do Checkout, extraia o ID da Sessão de Checkout do URL.
  2. Execute a função fulfill_checkout com o ID fornecido.
  3. 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.

Esta página foi útil?
SimNão
Precisa de ajuda? Fale com o suporte.
Participe do nosso programa de acesso antecipado.
Confira nosso changelog.
Dúvidas? Fale com a equipe de vendas.
LLM? Read llms.txt.
Powered by Markdoc