Pular para o conteúdo
Criar conta
ou
Entrar
O logotipo da documentação da Stripe
/
Pergunte à IA
Criar conta
Login
Comece já
Pagamentos
Automação de finanças
Plataformas e marketplaces
Gestão de valores
Ferramentas para desenvolvedores
Comece já
Pagamentos
Automação de finanças
Comece já
Pagamentos
Automação de finanças
Plataformas e marketplaces
Gestão de valores
Visão geralExplore todos os produtos
Comece a criar
Comece a desenvolver
Projetos de exemplo
Sobre as APIs
    Explore as APIs
    API Payment Intents
    API Setup Intents
    Formas de pagamento
    Produtos e preços
    APIs mais antigas
      Cobranças
      Fontes
        Transição para as novas APIs
        Fontes de cartões
        Sources e Customers
        Débito automático ACH
        Conectar plataformas
        Práticas recomendadas
        iOS
        Android
    Fases da versão
Desenvolver com LLMs
Use a Stripe sem programação
Configurar a Stripe
Crie uma conta
Dashboard da web
Dashboard móvel
Migrar para a Stripe
Gerenciar risco de fraudes
Entenda as fraudes
Proteção contra fraudes do Radar
Gerenciar contestações
Verificar identidades
Página inicialComece jáAbout the APIsOlder APIsSources

Práticas recomendadas para uso do SourcesObsoleto

Práticas recomendadas para aceitar diversas formas de pagamento com uma única integração.

Aviso

We deprecated the Sources API and plan to remove support for local payment methods. If you currently handle any local payment methods using the Sources API, you must migrate them to the Payment Methods API.

While we don’t plan to remove support for card payments, we recommend replacing any use of the Sources API with the PaymentMethods API, which provides access to our latest features and payment method types.

A flexibilidade da API Sources ajuda a reduzir as mudanças necessárias para aceitar as formas de pagamento que você for adicionando.

Fluxo típico dos pagamentos com cartão

Em um fluxo de checkout normal de pagamentos com cartão (exceto o 3D Secure), sua integração coleta os dados do cartão, cria uma fonte e a usa para fazer uma solicitação de cobrança. Como o cliente não precisa fazer mais nada e os pagamentos com cartão oferecem confirmação síncrona, podemos confirmar imediatamente se o pagamento foi bem-sucedido e os fundos foram garantidos. Não é preciso usar webhooks.

O uso obrigatório de webhooks

Outras formas de pagamento podem exigir outras ações do cliente (por exemplo, um redirecionamento) antes que a fonte se torne chargeable (cobrável) e possa ser usada na criação de uma solicitação de cobrança (por exemplo, o iDEAL). Normalmente, essa transição ocorre de forma assíncrona e pode até acontecer depois que o cliente saiu do seu site. Por esses motivos, a integração precisa de webhooks para determinar quando uma fonte se torna cobrável antes de criar a cobrança.

A Stripe envia os seguintes eventos de webhook para notificar mudanças no status da fonte:

EventoDescriçãoAção sugerida
source.chargeableUm objeto Source se torna chargeable depois que o cliente autentica e confirma o pagamento.Criar uma cobrança.
source.failedUm objeto Source não se tornou cobrável porque o cliente não autenticou o pagamento.Cancele o pedido e, se quiser, traga o cliente de volta para seu fluxo de pagamento.
source.canceledUm objeto Source expirou e não pode ser usado para criar uma cobrança.Cancele o pedido e, se quiser, traga o cliente de volta para seu fluxo de pagamento.

Da mesma forma, ao criar uma cobrança, determinadas formas de pagamento assíncronas podem levar dias para cobrar e confirmar os fundos, exigindo que os webhooks saibam quando confirmar e, por fim, executar os pedidos.

A Stripe envia os seguintes eventos de webhook para notificar mudanças no status de uma cobrança:

EventoDescriçãoAção sugerida
charge.pendingA cobrança está pendente (somente para pagamentos assíncronos).Nenhuma ação é necessária.
charge.succeededA cobrança foi finalizada e o pagamento foi concluído.Finalize o pedido e envie um e-mail de confirmação ao cliente.
charge.failedA cobrança falhou e o pagamento não foi concluído.Cancele o pedido e, se quiser, traga o cliente de volta para seu fluxo de pagamento.

Criar uma integração flexível

Para garantir a flexibilidade do processo de checkout e aceitar várias formas de pagamento, recomendamos a seguinte abordagem:

Criar a fonte

Quando criar Sources, registre o ID da fonte na representação interna do pedido para poder recuperá-lo quando receber e processar webhooks source.chargeable. Não se esqueça de indexar seus objetos de pedido pelo atributo source, para facilitar as buscas.

Criar a cobrança

A fonte é cobrada depois da entrega do evento source.chargeable. Quando receber o webhook, recupere a representação interna do pedido, localizando-a pelo ID de fonte recebido e verifique se o pedido está aguardando um pagamento.

Quando fizer uma solicitação de cobrança, use o ID do pedido interno como chave de idempotência para evitar qualquer possível condição de corrida. Além disso, se a fonte for reutilizável e você quiser usá-la novamente, anexe-a a um objeto Customer antes de cobrá-la. Consulte os guias Uso avulso ou recorrente e Sources e Customers para saber mais sobre como lidar com Sources de uso único e recorrente e como eles interagem com os objetos Customer.

De forma semelhante à criação da fonte, registro o ID da cobrança na representação interna do pedido para poder recuperá-lo quando receber e processar webhooks charge.succeeded.

Página de confirmação

Depois que o cliente realiza as ações necessárias para autorizar um pagamento (por exemplo, seguiu um redirecionamento), você deve apresentar uma página de confirmação que mostra o estado do pedido. Isso pode ser feito sondando internamente o pedido.

Como a latência de entrega dos webhooks não é garantida, se você quiser otimizar ainda mais a página de confirmação, sonde o status da fonte associada no código do lado do cliente. Quando você detectar que a fonte se tornou chargeable, poderá iniciar a criação de uma Charge usando essa fonte sem precisar aguardar a chegada do webhook source.chargeable.

Alguns tipos de fontes podem levar minutos (ou até dias) para se tornarem chargeable. Se você decidir sondar a fonte, recomendamos que estabeleça um tempo limite e informe ao cliente que o pedido está aguardando confirmação de pagamento e depois envie um e-mail de confirmação de pagamento de forma assíncrona. Veja na tabela baixo nossas recomendações de mensagens para o cliente para cada status de fonte.

A sondagem do lado do cliente será interrompida se o cliente sair da página. Isso significa que sua integração também precisa considerar o webhook source.chargeable para garantir que você continue acompanhando o pedido do cliente.

Se você está usando o Stripe.js, pode implementar a sua própria sondagem com stripe.retrieveSource():

// In order-confirmation-page.js const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); // After some amount of time, we should stop trying to resolve the order synchronously: const MAX_POLL_COUNT = 10; let pollCount = 0; const pollForSourceStatus = async () => { const {source} = await stripe.retrieveSource({id: SOURCE_ID, client_secret: CLIENT_SECRET}) if (source.status === 'chargeable') { // Make a request to your server to charge the Source. // Depending on the Charge status, show your customer the relevant message. } else if (source.status === 'pending' && pollCount < MAX_POLL_COUNT) { // Try again in a second, if the Source is still `pending`: pollCount += 1; setTimeout(pollForSourceStatus, 1000); } else { // Depending on the Source status, show your customer the relevant message. } }; pollForSourceStatus();

A tabela abaixo contém recomendações de possíveis mensagens que podem ser mostradas ao cliente conforme o status da fonte.

StatusMensagem para o cliente
O status da fonte é chargeableSeu pedido foi recebido e está aguardando confirmação do pagamento.
O status da fonte é canceledSeu pagamento falhou e o seu pedido não foi processado.
O status da fonte é failedSeu pagamento falhou e o seu pedido não foi processado.
O status da fonte continua pending após um período de sondagemSeu pedido foi recebido e está aguardando confirmação do pagamento.

Após criar uma Charge (e se o usuário permanecer na página de confirmação), você poderá mostrar as seguintes mensagens de acordo com o status da Charge:

StatusMensagem para o cliente
O status da cobrança é pendingSeu pedido foi recebido e está aguardando confirmação do pagamento.
O status da cobrança é failedSeu pagamento falhou e o seu pedido não foi processado.
O status da cobrança é succeededSeu pagamento foi confirmado e seu pedido foi concluído.

Confirmação do pedido

Confirme o pedido só depois que receber o webhook charge.succeeded (isso pode ocorrer imediatamente, mas também pode demorar). Envie um e-mail ao cliente neste ponto porque a confirmação do pagamento pode levar dias no caso de pagamentos assíncronos.

Cancelamentos e falhas

Ouça os webhooks source.canceled e source.failed e cancele o pedido associado à fonte envolvida. Se seguir as práticas recomendadas acima, você não deve receber o webhook source.canceled para fontes previamente chargeable (pois o gerenciador de source.chargeable criar imediatamente uma cobrança para evitar o cancelamento da fonte). Você continuará recebendo os webhooks source.canceled para fontes pending que nunca se tornaram chargeable. Normalmente, isso indica que o cliente saiu do fluxo de checkout antes de concluí-lo. Você também pode receber um webhook source.failed quando o cliente recusar o pagamento ou ocorrer um problema técnico no esquema de pagamentos.

Você também deve escutar os webhooks charge.failed, para assegurar o cancelamento do pedido associado à cobrança recebida.

Para cada um desses eventos, recomendamos que você notifique o cliente que o pedido falhou e, se quiser, convide-o para voltar ao fluxo de pagamento.

Veja também

  • Formas de pagamento aceitas
  • Referência da API Sources
  • Considerações para plataformas do Stripe Connect
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