Atualizações do status do pagamento
Monitore e verifique o status dos pagamento para poder responder a pagamentos bem-sucedidos e malsucedidos.
O PaymentIntents é atualizado como resposta a ações realizadas pelo cliente ou pela forma de pagamento. Sua integração pode examinar o PaymentIntent para determinar o status da forma de pagamento e permitir que você tome medidas comerciais ou responda a situações que precisem de mais intervenção.
Você também pode usar o Stripe Dashboard para configurar sua conta para enviar e-mail sobre o status do pagamento, como pagamentos bem-sucedidos. Altere suas notificações por e-mail nas configurações do usuário.
Verificar o status do PaymentIntent no cliente
Quando concluir um pagamento no cliente com a função confirmCardPayment, você pode inspecionar o PaymentIntent retornado para determinar seu status atual:
(async () => { const {paymentIntent, error} = await stripe.confirmCardPayment(clientSecret); if (error) { // Handle error here } else if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment here } })();
A função confirmCardPayment
pode apresentar estes resultados:
Evento | O que ocorreu | Integração esperada |
---|---|---|
Resolve com um PaymentIntent | O cliente concluiu o pagamento na página de checkout | Informe ao cliente que o pagamento foi bem-sucedido |
Resolve com um erro | O pagamento do cliente falhou na sua página de checkout | Exiba uma mensagem de erro e solicite que o cliente tente fazer o pagamento novamente |
A promessa retornada por confirmCardPayment
é resolvida quando o processo de pagamento é concluído ou falha com um erro. Quando é concluído corretamente e retorna um PaymentIntent, o status é sempre succeeded
(ou requires_
se capturar posteriormente ). Quando o pagamento exige uma etapa adicional, como autenticação, a promessa só é resolvida quando essa etapa é concluída ou o tempo esgota.
Verificar o status do PaymentIntent no cliente sem usar confirmCardPayment
Para verificar o status de um PaymentIntent sem usar a função confirmCardPayment
, recupere-o de forma independente usando a função retrievePaymentIntent e passando o segredo do cliente.
Veja a seguir alguns status possíveis do PaymentIntent após uma confirmação:
O que ocorreu | Status esperado do PaymentIntent |
---|---|
O cliente concluiu o pagamento na página de checkout | succeeded |
O cliente não concluiu o checkout | requires_ |
O pagamento do cliente falhou na sua página de checkout | requires_ |
Leia mais sobre os status de PaymentIntent.
(async () => { const {paymentIntent} = await stripe.retrievePaymentIntent(clientSecret); if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment here } else { // Handle unsuccessful, processing, or canceled payments and API errors here } })();
Monitorar um PaymentIntent com webhooks
A Stripe pode enviar eventos de webhook para o seu servidor para notificar quando o status de um PaymentIntent muda, que você pode usar para finalidades como determinar quando executar mercadorias e serviços.
Não tente gerenciar a execução do pedido no lado do cliente porque ele pode sair da página após concluir o pagamento, mas antes do início do processo de execução. Em vez de executar o pedido no lado do cliente, use webhooks para monitorar o evento payment_
e processar a execução de forma assíncrona.
Cuidado
É tecnicamente possível usar sondagens em vez de webhooks para monitorar alterações causadas por operações assíncronas (recuperar repetidamente um PaymentIntent para verificar seu status), mas fazer isso é muito menos confiável e pode causar problemas de limitação de taxa. A Stripe limita a taxa das solicitações da API . Portanto, tome cuidado se decidir usar sondagens.
Para gerenciar um evento de webhook, crie uma rota no servidor e configure um endpoint de webhook correspondente no Dashboard. A Stripe envia o evento payment_
quando o pagamento é bem-sucedido, e o evento payment_
quando o pagamento falha.
O conteúdo do webhook inclui o objeto PaymentIntent. O exemplo abaixo mostra como gerenciar ambos os eventos:
Quando o pagamento não é bem-sucedido, você pode obter mais detalhes inspecionando a propriedade last_
do PaymentIntent. É possível notificar o cliente que o pagamento não foi concluído e recomendar que ele tente outra forma de pagamento. Reutilize o mesmo PaymentIntent para continuar a rastrear a compra do cliente.
Gerenciar eventos de webhook específicos
A lista a seguir descreve como gerenciar eventos de webhook:
Evento | Descrição | Próximas etapas |
---|---|---|
processing | O pagamento do cliente foi enviado à Stripe corretamente. Aplicável somente a formas de pagamento com confirmação de sucesso posterior. | Esperar a conclusão ou falha do pagamento iniciado. |
succeeded | O pagamento do cliente foi bem-sucedido | Processe os bens ou serviços comprados |
amount_ | O pagamento do cliente está autorizado e pronto para captura | Capturar os fundos disponíveis para pagamento |
payment_ | O pagamento do cliente foi recusado por uma bandeira de cartão ou expirou de outra forma | Entrar em contato com o cliente por e-mail ou notificação push e solicitar que ele use outra forma de pagamento |
Para testar webhooks localmente, você pode usar o Stripe CLI. Após instalá-lo, você poderá encaminhar eventos ao seu servidor:
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is '{{WEBHOOK_SIGNING_SECRET}}' (^C to quit)
Saiba mais sobre configurar webhooks.
Identificar cobranças em um PaymentIntent
Quando você tenta receber um pagamento de um cliente, o PaymentIntent cria uma Charge. Para ver o ID da cobrança mais recente, inspecione a propriedade latest_charge do PaymentIntent:
Para ver todas as cobranças associadas a um PaymentIntent, incluindo as cobranças malsucedidas, liste todas as cobranças e especifique o parâmetro payment_
.
Gerenciar as próximas ações
Algumas formas de pagamento exigem etapas adicionais, como autenticação, para concluir o processo de pagamento. O Stripe.js gerencia essas etapas automaticamente durante a confirmação do PaymentIntent, mas pode ser melhor processá-las manualmente em integrações avançadas.
A propriedade next_action do PaymentIntent expõe a próxima etapa que sua integração deve processar para concluir o pagamento. O tipo de próximas ações possíveis pode diferir entre as várias formas de pagamento. Veja uma lista completa das próximas ações na documentação de API.
Consulte a documentação das formas de pagamento para obter mais detalhes sobre como gerenciar as próximas ações obrigatórias.