🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir o erro de pagamento (Stripe e PayPal) no Tutor LMS

Time Full Services Time Full Services
Tipo Outros erros
Nome do erro Erro de pagamento Stripe/PayPal no Tutor LMS EN: Tutor LMS Stripe and PayPal payment error
Severidade Crítico
Descrição O pagamento do Tutor LMS não funciona quando o aluno tenta comprar um curso pelo Stripe ou PayPal e o checkout não conclui ou o pedido nunca confirma. Quase sempre vem de chaves de API no ambiente errado (Test no lugar de Live), webhook não configurado no gateway, ou mais de uma engine de eCommerce ativa ao mesmo tempo.

O que é o erro de pagamento do Tutor LMS (Stripe e PayPal)?

No eCommerce nativo do Tutor LMS, Stripe e PayPal são os gateways que cobram o aluno e liberam a matrícula no curso pago. O fluxo tem duas pernas: a cobrança em si (chaves de API) e a confirmação do pagamento, que volta do gateway para o site por um webhook. O erro de pagamento acontece quando uma dessas pernas quebra: ou a cobrança não inicia, ou ela acontece no gateway mas o webhook nunca avisa o Tutor LMS, deixando o pedido pendente e o aluno sem acesso mesmo tendo pago.

Como identificar

  • No checkout do curso aparece a mensagem “Payment failed” ou “Something went wrong” e a compra não conclui.
  • Em Tutor LMS -> Orders, o pedido fica preso com status “Pending” ou “Incomplete” mesmo o aluno tendo pago no Stripe ou no PayPal.
  • O cartão é cobrado no painel do Stripe, mas o aluno não recebe acesso ao curso nem o pedido vira “Completed” no Tutor LMS.
  • O botão de pagamento não carrega ou o método não aparece na tela de checkout, indicando gateway desativado ou chaves vazias.
  • No log do Stripe a cobrança aparece como succeeded, mas o evento de webhook mostra falha de entrega ou assinatura inválida.
Antes de começar: Nunca exponha a Secret Key do Stripe nem o Client Secret do PayPal: trate-os como senha e troque imediatamente se vazarem no log ou em print. Teste primeiro em modo Test com cartões de teste do gateway antes de virar a chave para Live numa loja no ar.

Como prevenir

  • Mantenha uma única engine de eCommerce ativa em Monetization e documente qual gateway está em uso
  • Sempre que migrar de Test para Live, troque as chaves de API E reconfigure o webhook no ambiente Live (eles são separados por ambiente)
  • Confira mensalmente o log de webhooks no painel do Stripe e do PayPal para pegar entregas falhas antes que peguem o aluno
  • Use uma moeda comprovadamente suportada pelo gateway e revalide a licença Pro após cada renovação

Causa

  • Chaves de API no ambiente errado: Payment Environment em Live com chaves de Test (sk_test) ou o inverso, fazendo o gateway recusar a transação por credencial inválida para o modo.
  • Webhook não configurado ou com Signature Key errada: sem os eventos charge.succeeded e payment_intent.payment_failed (Stripe) ou Checkout order approved e Payment capture completed (PayPal), o pagamento ocorre mas o pedido nunca vira Completed.
  • Mais de uma engine de eCommerce ativa em Settings -> Monetization: o Tutor LMS só opera com uma engine por vez, e ter Native e WooCommerce juntas trava o processamento do pedido.
  • Moeda ou país não suportado pelo gateway: a moeda definida em Monetization não está na lista de moedas aceitas pelo Stripe ou pelo PayPal, fazendo a cobrança ser rejeitada.
  • Tutor LMS Pro inativo ou licença expirada: o gateway Stripe exige assinatura Pro ativa, e sem ela o método some do checkout ou para de processar.

Como resolver

  1. Confirme a engine de eCommerce e a moeda: abra as configurações de monetização e garanta que apenas uma engine está ativa. O Tutor LMS não processa pagamento com duas engines ligadas ao mesmo tempo. Confira também se a moeda escolhida é aceita pelo gateway que você usa.
    Tutor LMS -> Settings -> Monetization -> eCommerce Engine (deixe apenas Native OU WooCommerce, nunca as duas)
  2. Alinhe o Payment Environment com as chaves de API: o erro mais comum é misturar modo e chave. Em produção, o ambiente precisa estar em Live e as chaves precisam ser de produção; em testes, ambiente Test com chaves de teste. As chaves de teste do Stripe começam com sk_test e as de produção com sk_live.
    Tutor LMS -> Settings -> Monetization -> Payment Methods -> Stripe -> Setup
    Payment Environment: Live (produção) ou Test (homologação)
    Publishable Key + Secret Key do mesmo ambiente (Live usa sk_live, Test usa sk_test)
  3. Configure o webhook no gateway e cole a Signature Key: sem o webhook o pagamento acontece mas o pedido fica pendente. No painel do gateway, crie o endpoint de webhook apontando para o seu site, selecione os eventos obrigatórios e copie o segredo de assinatura de volta para o Tutor LMS.
    Stripe -> Developers -> Webhooks: charge.succeeded, payment_intent.payment_failed, charge.updated, payment_intent.canceled
    PayPal -> Apps & Credentials -> Webhooks: Checkout order approved, Payment capture completed
    Cole o Webhook Signature Key (Stripe) ou Webhook ID (PayPal) no Setup do gateway no Tutor LMS
  4. Valide a licença Pro e a credencial do app: o gateway Stripe do eCommerce nativo exige Tutor LMS Pro ativo. Confirme a licença e, no PayPal, verifique se o Client ID e o Client Secret são do mesmo ambiente do app criado no PayPal Developer.
    Tutor LMS -> Settings -> verifique a licença Pro ativa
    PayPal: Merchant Email, Client ID e Client Secret do app no ambiente correto (Sandbox x Live)
  5. Faça uma compra de teste e leia o pedido: com tudo alinhado, faça uma compra real de baixo valor (ou em modo Test com cartão de teste) e acompanhe o pedido. Se a cobrança passa no gateway mas o pedido não vira Completed, o problema está no webhook; se nem a cobrança inicia, está nas chaves ou no ambiente.
    Tutor LMS -> Orders: o pedido de teste deve sair de Pending para Completed após o webhook
PHP
<?php
// functions.php do tema filho — registra no log do WordPress cada pedido que o Tutor LMS
// marca como pago, para confirmar se o WEBHOOK do gateway esta chegando e atualizando o pedido.
add_action( 'tutor_order_payment_updated', function ( $order_id, $payment_status ) {
    error_log( sprintf(
        '[tutor-pagamento] Pedido #%d -> status de pagamento: %s',
        $order_id,
        $payment_status
    ) );
}, 10, 2 );
// Cole o codigo, faca uma compra de teste e olhe wp-content/debug.log:
// - se NADA aparece quando o gateway cobra, o webhook nao esta chegando (URL/Signature Key/eventos).
// - se aparece 'failed', o gateway recusou (chave no ambiente errado ou moeda nao suportada).

Perguntas frequentes

Por que o cartão foi cobrado mas o aluno não recebeu acesso ao curso
Quase sempre é o webhook. A cobrança acontece no Stripe ou no PayPal, mas sem o webhook configurado o gateway nunca avisa o Tutor LMS, então o pedido fica Pending e a matrícula não é liberada. Configure os eventos de webhook no gateway e cole o segredo de assinatura no Setup do método para o pedido virar Completed.
O Stripe do Tutor LMS exige a versão Pro
Sim. O gateway Stripe do eCommerce nativo do Tutor LMS depende de uma assinatura Pro ativa. Sem ela, o método de pagamento some do checkout ou para de processar. Confirme que a licença Pro está válida em Settings antes de investigar chaves ou webhook.
O que significa o pedido ficar preso em Pending no Tutor LMS
Pending significa que o Tutor LMS criou o pedido e espera a confirmação do gateway, que chega pelo webhook. Se o pedido nunca sai de Pending, o pagamento até pode ter ocorrido, mas a confirmação não voltou. Cheque o log de webhook no gateway e a Signature Key no Setup do método.
Posso deixar a engine Native e o WooCommerce ativos juntos
Não. O Tutor LMS opera com uma única engine de eCommerce por vez. Native e WooCommerce ligados ao mesmo tempo conflitam no processamento do pedido e travam o pagamento. Em Settings -> Monetization, escolha apenas uma engine e configure o gateway dentro dela.
Estou em produção e o pagamento falha. Pode ser a chave de API
Sim, é a causa número um. Em produção o Payment Environment precisa estar em Live com chaves Live; chaves de teste (sk_test) num ambiente Live são recusadas pelo gateway. Confira no Setup do método se o ambiente e as chaves são do mesmo tipo, Live com Live e Test com Test.
O método de pagamento nem aparece na tela de checkout. O que fazer
Método ausente no checkout costuma ser gateway desativado, chaves vazias ou licença Pro inativa. Vá em Settings -> Monetization -> Payment Methods, ative o gateway, preencha as chaves do ambiente correto e confirme a licença Pro. Depois recarregue a página de checkout para o método reaparecer.
Como testo o pagamento sem cobrar um cartão real
Coloque o Payment Environment em Test e use as credenciais de teste do gateway. No Stripe, use os cartões de teste oficiais; no PayPal, use uma conta sandbox. Faça uma compra de teste e acompanhe em Orders se o pedido vira Completed, validando todo o fluxo antes de virar para Live.
Recebo erro de moeda não suportada no pagamento do Tutor LMS
A moeda definida em Monetization precisa estar entre as aceitas pelo Stripe ou pelo PayPal na sua conta e região. Se a moeda não for suportada, a cobrança é rejeitada na origem. Ajuste a moeda em Settings -> Monetization para uma que o gateway aceite no seu país.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes