[Guia] Como Configurar Assinaturas do Discourse com Tabelas de Preços do Stripe (e Armadilhas Comuns)
Olá a todos,
Após um longo processo de solução de problemas, queria compartilhar um guia definitivo para configurar o plugin oficial discourse-subscriptions usando o método moderno de Tabela de Preços do Stripe. Essa abordagem é poderosa, mas tem algumas etapas críticas que não são imediatamente óbvias e podem levar a erros como webhooks falhando (404 Not Found) ou usuários não sendo adicionados a grupos após um pagamento bem-sucedido.
Aqui está o processo passo a passo que está confirmado que funciona.
Parte 1: Configuração do Stripe
Este processo usa o Stripe como a “fonte da verdade” para todos os produtos e preços.
1. Crie Seus Produtos e Preços
- No seu Painel do Stripe, certifique-se de estar no Modo Ativo.
- Vá para Produtos > Catálogo de produtos.
- Crie seus produtos principais primeiro (por exemplo, “Assinatura Premium”, “Acesso VIP”).
- Sob cada produto, crie todos os preços associados (por exemplo,
XX / mês,XXX / ano).
2. O Passo CRUCIAL de Metadados Para que o plugin adicione automaticamente os usuários a um grupo, você deve adicionar metadados específicos a cada objeto de Preço que criar. A interface do painel do Stripe pode dificultar a localização.
- Ao criar um novo preço (ou se puder encontrar a opção “Editar preço”), você deve adicionar metadados. Pode ser necessário clicar em “Opções adicionais” durante a criação do preço para revelar os campos de metadados.
- Clique em + Adicionar metadados e insira o seguinte:
- CHAVE:
group_name - VALOR: O slug/identificador único e seguro para URL do grupo no Discourse, não seu nome completo.
- CHAVE:
Exemplo:
- Se o nome completo do seu grupo no Discourse for “Enclave Plus”, seu slug provavelmente será
EnclavePlus.- Você deve usar
EnclavePluscomo valor. Usar"Enclave Plus"com um espaço falhará.
- Você deve repetir isso para cada plano de preço que deseja vincular a um grupo.
3. Crie Sua Tabela de Preços do Stripe
- Vá para Produtos > Tabelas de preços.
- Crie uma nova tabela e adicione os Preços que você acabou de configurar.
- Após publicar a tabela, clique no botão “Copiar código” para obter seu ID da Tabela de Preços (começa com
prctbl_...).
4. Configure o Endpoint do Webhook (A Correção do Erro 404) Este é o ponto de falha mais comum.
- Vá para Desenvolvedores > Webhooks e clique em + Adicionar endpoint.
- A URL do Endpoint deve estar no seguinte formato:
https://seusite-discourse.com/s/hooks - Nota: O caminho correto é
/s/hooks, não/s/stripe/webhook. - Para Eventos a serem enviados, adicione no mínimo:
checkout.session.completedcustomer.subscription.deleted
- Crie o endpoint e copie o Segredo de assinatura (começa com
whsec_...).
Parte 2: Configuração do Discourse
Agora, vamos configurar o plugin para usar tudo o que você configurou no Stripe.
1. Insira as Chaves de API e o ID da Tabela de Preços
- Vá para
Admin>Configuraçõese procure pordiscourse subscriptions. - Preencha suas chaves do Stripe em modo ativo:
discourse subscriptions public key(pk_live_...)discourse subscriptions secret key(sk_live_...)discourse subscriptions webhook secret(whsec_...)
- Habilite o modo de tabela de preços:
- Marque a caixa para
discourse subscriptions pricing table enabled. - Cole seu ID
prctbl_...no campodiscourse subscriptions pricing table id.
- Marque a caixa para
2. Vincule Produtos do Stripe a Grupos do Discourse Mesmo com uma tabela de preços, você precisa dizer ao Discourse qual grupo pertence a qual produto.
- Vá para
Admin>Plugins>Subscriptionse clique na aba Produtos. - Clique em Criar Novo Produto.
- Insira um Nome do Produto que corresponda exatamente ao Nome do Produto no Stripe (por exemplo,
Enclave Plus). - Salve o produto. Na página do produto, role para baixo e clique em Adicionar Novo Plano.
- Este plano é apenas uma “ponte”. O único campo crítico é Grupo de Usuários.
- Apelido do Plano:
Enlace de Grupo Enclave Plus(ou qualquer coisa para sua referência). - Grupo de Usuários: Selecione o grupo correto do Discourse no menu suspenso.
- Os outros campos (Valor, Intervalo) podem ser deixados como padrão, pois serão ignorados.
- Apelido do Plano:
- Salve o plano. Repita isso para todos os seus diferentes produtos.
Resumo de Solução de Problemas
- Problema: Webhooks falhando com um erro
404 Not Found.- Solução: Sua URL do Endpoint no Stripe está incorreta. Deve ser
https://seusite-discourse.com/s/hooks.
- Solução: Sua URL do Endpoint no Stripe está incorreta. Deve ser
- Problema: O webhook é bem-sucedido (
200 OK) e o pagamento aparece no perfil de faturamento do usuário, mas ele não é adicionado ao grupo.- Solução: Seus metadados estão incorretos. Verifique três coisas:
- Os metadados devem estar no objeto Preço do Stripe, não no objeto Produto.
- A CHAVE dos metadados deve ser exatamente
group_name. - O VALOR dos metadados deve ser o slug/identificador único do grupo (por exemplo,
EnclavePlus), não seu nome completo com espaços.
- Solução: Seus metadados estão incorretos. Verifique três coisas:
Espero que este guia poupe tempo e frustração de outras pessoas com esta configuração complexa, mas muito poderosa.
