Faro CheckAnálise grátis

Como confirmar pagamento no servidor no app feito com IA (webhook)

19 de outubro de 2026 · 4 min de leitura

Confirmar pagamento no app feito com IA é no servidor: a tela de sucesso não prova que alguém pagou. O provedor chama uma rota sua, você valida a assinatura ou o token e só então libera o plano. O segredo fica em variável de ambiente do servidor, nunca no JavaScript.

Liberar o acesso porque o front recebeu “sucesso” deixa qualquer pessoa ativar o plano sem pagar. A página de obrigado é um endereço. Quem conhece o caminho abre.

Passo a passo

  1. O pedido nasce no servidor. O navegador pede a cobrança. Quem fala com a Stripe, o Mercado Pago ou o Asaas é uma rota sua ou uma edge function. A chave secreta do provedor fica em variável de ambiente dessa função.

  2. O webhook chega numa rota de servidor. O provedor chama uma URL sua quando o pagamento muda. Essa URL não é a tela de obrigado. Não marque o pedido como pago no clique.

  3. Stripe: valide o segredo do endpoint. Cada endpoint tem um segredo que começa com whsec_. O segredo do Dashboard não é o do stripe listen. Use o corpo cru, o header Stripe-Signature e esse segredo (constructEvent ou construct_event). Não interprete o JSON antes de validar. Responda 2xx logo. Docs: Webhooks e assinatura.

  4. Mercado Pago: valide o header x-signature. Em Suas integrações, Webhooks, Configurar notificações, salvar gera uma assinatura secreta. Ela vai no header x-signature. O SDK oficial valida com x-signature, x-request-id, data.id e o segredo. Notificação de QR Code não se valida com esse segredo. Responda HTTP 200 ou 201 em até 22 segundos. Doc: Webhooks do Mercado Pago.

  5. Asaas: compare o token do header. Não é Bearer nem Basic. Você cria um authToken de 32 a 255 caracteres, sem espaço, sem sequência simples, e ele não pode ser a chave de API do Asaas. O Asaas envia esse valor no header asaas-access-token. Doc: Receba eventos do Asaas.

  6. Consulte o pagamento antes de liberar. Na Stripe, com a assinatura já conferida, confirme o status no evento verificado ou busque o pagamento na API da Stripe. No Mercado Pago, a doc do tópico de pagamento manda buscar https://api.mercadopago.com/v1/payments/[ID]. No Asaas, consulte o pagamento na API antes de liberar o acesso. Só então grave “pago”.

  7. Não libere duas vezes. O Asaas pode entregar o mesmo evento mais de uma vez. Use o id do evento, grave que já processou e responda HTTP 200. A FAQ está em Webhooks FAQ. O mesmo pagamento não pode somar o plano duas vezes, em nenhum provedor.

  8. Deixe o segredo fora do JavaScript. whsec_, a assinatura secreta do Mercado Pago e o authToken do Asaas ficam na variável de ambiente do servidor. O scan grátis do Faro Check não testa pagamentos nem webhook. Isso é da Auditoria Completa, ainda em lista de espera, sem cobrança. Antes de subir o resto: checklist, Lovable é seguro? e chave de API no JavaScript.

Prompt para colar

Copie e cole este prompt na ferramenta que você usa para criar o app

O plano só libera no servidor, depois do webhook. Não marque pago porque a tela de sucesso abriu. Crie a cobrança numa rota de servidor. Na Stripe, valide o corpo cru, o header Stripe-Signature e o segredo whsec_ daquele endpoint. No Mercado Pago, valide x-signature com o SDK oficial (x-request-id e data.id) e busque o pagamento. No Asaas, compare o header asaas-access-token com o authToken de ambiente, que não é a chave de API. Use o id do evento para não liberar duas vezes. Nenhum segredo vai para o JavaScript.

Escanear grátis

Perguntas frequentes

A tela de sucesso confirma o pagamento?

Não. Qualquer pessoa pode abrir essa URL. Quem libera o plano é a rota que recebe o webhook, depois de validar o aviso e de consultar o pagamento no provedor.

Onde fica o segredo de webhook da Stripe?

No endpoint, no Dashboard. O valor começa com whsec_ e é diferente do segredo que o stripe listen mostra na sua máquina. Ele não entra no código que o navegador baixa. Doc: assinatura de webhook.

Como o Mercado Pago avisa que o pagamento caiu?

Por uma notificação na URL que você configurou. A assinatura secreta vai no header x-signature. O SDK oficial faz a validação. Notificação de QR Code fica de fora dessa validação. Depois, a doc manda ler o pagamento em https://api.mercadopago.com/v1/payments/[ID].

O scan grátis testa webhook de pagamento?

Não. O diagnóstico grátis não chama provedor e não confere assinatura. A Auditoria Completa, que cobre esse tipo de revisão, ainda está em lista de espera e não cobra.