Plugin de Assinaturas do Discourse

:discourse2: Resumo O plugin Discourse Subscriptions permite que proprietários de sites vendam assinaturas recorrentes e de compra única que concedem acesso a um grupo em uma instância do Discourse.
:open_book: Guia de Instalação Este plugin já vem incluído no núcleo do Discourse. Não há necessidade de instalá-lo separadamente.

O plugin Discourse Subscriptions permite criar assinaturas de compra única e recorrentes que os usuários podem pagar para acessar conteúdo restrito. Essa pode ser uma ótima maneira de financiar os custos de hospedagem da sua comunidade.

Funcionalidades

O plugin Discourse Subscriptions suporta as seguintes funcionalidades:

O botão “Inscrever-se” localizado na navegação superior levará você à página de Inscrição /s, onde são listadas as assinaturas configuradas para seu site:

Assim que um usuário clicar no botão “Inscrever-se” de um plano específico, a página de pagamento desse plano será aberta:

Após o usuário preencher seus dados de pagamento e endereço e clicar em “Inscrever-se”, uma mensagem de “Obrigado!” será exibida e ele será redirecionado para sua página de faturamento:

O usuário também é automaticamente adicionado a um grupo de sua escolha, permitindo que você veja facilmente quais usuários se inscreveram e forneça conteúdo restrito em categorias que apenas esse grupo pode ver.

Termos

  • Assinatura - As assinaturas são planos de pagamento recorrente que permitem controlar o acesso ao conteúdo na sua comunidade. Quando uma assinatura é criada ou excluída, um usuário é adicionado ou removido do grupo de usuários associado ao seu plano de assinatura. Uma assinatura é composta por um produto e planos.
  • Produto - Um produto, nos termos do Stripe, é o que você está vendendo. Um produto pode conter um ou mais planos.
    • Para adicionar uma descrição ao seu produto, adicione um campo de metadados chamado “description” e use-o. Você pode usar Markdown.
  • Plano - Um plano contém um preço, um ciclo recorrente e é associado a um grupo ao qual seus assinantes terão acesso.

:police_car_light: Tenha muito cuidado para manter suas chaves privadas do Stripe seguras e protegidas o tempo todo.

:warning: Se você desativar sua instância do Discourse, desinstalar este plugin ou seu site ficar offline, o Stripe continuará cobrando seus clientes pelo seu serviço até que a assinatura seja cancelada.

Configuração

  1. Instale e ative o plugin
  2. Configure o Gateway de Pagamento (Stripe)
  3. Configure Webhooks e Eventos no Stripe
  4. Adicione suas chaves do Stripe (pública, secreta, segredo do webhook) em Admin > Plugins > Instalados > Assinaturas > Configurações /admin/site_settings/category/discourse_subscriptions?filter=plugin%3Adiscourse-subscriptions.
  5. Crie um grupo para seus assinantes se juntarem via compra
  6. Crie um produto e um plano em Admin > Plugins > Assinaturas
  7. Lucro!

Configure seu Gateway de Pagamento.

Primeiro, você precisará de uma conta com o gateway de pagamento Stripe. Para começar, você pode configurar uma conta no modo de teste e ver como tudo funciona sem realizar transações reais ou precisar configurar uma conta bancária. Não há um interruptor de modo de teste no plugin; em vez disso, certifique-se de usar suas chaves de desenvolvedor (elas começam com pk_test, sk_test)

Configure Webhooks e Eventos na sua conta do Stripe

:bomb: Webhooks são necessários para que os cancelamentos de assinatura funcionem completamente. Certifique-se de configurá-los corretamente.

Depois de ter uma conta no Stripe, você precisará informar ao Stripe o endereço do seu site para que ele possa notificá-lo sobre certas transações. Você pode inserir isso no painel do Stripe em Endpoints > URL.

Endereço do Webhook: [seu endereço de servidor]/s/hooks – onde [seu endereço de servidor] é a URL da sua instalação do Discourse.

Você também precisará informar ao Stripe quais eventos ele deve notificá-lo via URL do webhook.

Atualmente, o Discourse Subscriptions responde aos seguintes eventos:

  • customer.subscription.deleted
  • customer.subscription.updated
  • checkout.session.completed

Adicione as chaves da API e do Webhook do Stripe às configurações do seu plugin

O Stripe precisa ser autorizado a se comunicar com seu site. Para isso, ele publica um par de chaves de API privadas e públicas e um segredo de assinatura para seus webhooks.

Para autorizar webhooks, adicione as chaves da API e o segredo do webhook do Stripe à sua página de configurações (em Desenvolvedores).

:warning: Adicionar chaves de produção fará pagamentos reais. Se você planeja testar, certifique-se de alternar para o modo View test data e obter as chaves pk_test e sk_test em Desenvolvedores.

Nas configurações da sua conta do Stripe, veja:

Adicione essas chaves nas configurações apropriadas em Admin > Plugins > Instalados > Assinaturas > Configurações /admin/site_settings/category/discourse_subscriptions?filter=plugin%3Adiscourse-subscriptions.

Configure seus Grupos de Usuários no Discourse

Quando um usuário se inscreve com sucesso no seu aplicativo Discourse, após a transação do cartão de crédito ser processada, ele é adicionado a um Grupo de Usuários. Ao atribuir usuários a um Grupo de Usuários, você pode gerenciar o que seus usuários têm acesso em seu site. Grupos de usuários são uma funcionalidade central do Discourse e este plugin não faz nada com eles, exceto adicionar e remover usuários do grupo que você associou ao seu Plano.

Crie um ou mais produtos com planos.

Em Admin > Plugins > Assinaturas, clique em adicionar um novo Produto. Depois de salvar um produto, você pode adicionar planos a ele. Lembre-se de que os preços e intervalos de cobrança dos planos não podem ser alterados após a criação. Isso é para evitar confusão em torno do gerenciamento de assinaturas.

Se você der uma olhada no seu Painel do Stripe, verá que todos esses produtos e planos estão listados. O Discourse Subscriptions não os cria localmente. Eles são criados no Stripe.

Testando

Teste com estes números de cartão de crédito:

  • 4242 4242 4242 4242
  • 4111 1111 1111 1111 (sem autenticação necessária)
  • 4000 0027 6000 3184 (autenticação necessária)

Para mais números de cartão de teste: Test card numbers | Stripe Documentation

Visite /s e realize algumas transações de teste.

Indo para Produção

Quando estiver pronto para ir para produção, altere suas chaves de API e segredo do webhook para chaves de produção. Você precisará criar novos produtos e planos no modo ao vivo.

Esteja ciente de que, se você não configurar corretamente os webhooks do Stripe e os pagamentos recorrentes falharem por qualquer motivo (cartão de crédito expirado, etc.), os usuários ainda terão acesso ao grupo. Para que o Stripe cancele automaticamente as assinaturas, certifique-se de configurar suas configurações de Gerenciar pagamentos com falha de forma semelhante à imagem abaixo e configure webhooks conforme descrito acima.

Atualizar Informações de Pagamento

Os usuários podem atualizar seu cartão usado para assinaturas individuais visitando a página de faturamento e clicando no botão de edição ao lado da assinatura, o que abrirá esta tela:

Stripe Checkout com Tabelas de Preços do Stripe

Você também pode optar por substituir as páginas de produto e checkout do Plugin de Assinatura e, em vez disso, usar Stripe Checkout com Tabelas de Preços do Stripe.

No seu Painel do Stripe:

  1. Após criar os produtos no Discourse, vá para Produtos > Catálogo de Produtos
  2. Clique no produto que deseja incluir na tabela de preços
  3. Clique em Editar produto
  4. Mais Opções e insira o seguinte em Metadados:
    • Chave: group_name
    • Valor: O nome do grupo no Discourse (por exemplo, trust_level_0)
  5. Clique em Atualizar produto para salvar

:red_exclamation_mark: Certifique-se de que o nome do grupo corresponda ao grupo selecionado em User_Groups no Discourse

Crie sua tabela de preços do Stripe

  1. Vá para Produtos > Tabelas de Preços
  2. Crie uma nova tabela e adicione os produtos que você acabou de criar
  3. Após publicar a tabela, copie o ID da tabela de preços encontrado no código de incorporação (começa com prctbl_...)
  4. Cole o ID da tabela de preços em seu discourse_subscriptions_pricing_table_id e ative a configuração da tabela de preços de assinaturas.
  5. Clique nos marcadores verdes para salvar ambas as configurações.

Etapa recomendada:

Ao configurar a Tabela de Preços no Stripe, recomenda-se redirecionar o usuário para seu site após o término do checkout; caso contrário, eles permanecerão em uma página de confirmação do Stripe sem um link de volta ao seu site.

Redirecionar para https://<seu-site>/my/billing/subscriptions é uma boa escolha para assinaturas. Para pagamentos únicos, você pode vincular diretamente a https://<seu-site>/my/billing/payments.

Cobrança Automática de Impostos

Para ativar a Cobrança Automática de Impostos, marque a caixa de Configuração do Site para discourse_subscriptions_enable_automatic_tax.

Se você ativá-lo, mas não tiver configurado sua instância do Stripe corretamente para cobrar impostos, os usuários podem ver este pop-up após concluir o processo de checkout:

este guia para mais informações, mas não deve haver muito a fazer, já que o plugin agora está passando o parâmetro apropriado automatic_tax[enabled]=true (etapa 5).

Certifique-se de configurar suas inscrições (etapa 4) também:

Aqui está um exemplo de transação do Plugin de Assinatura do Discourse no Stripe mostrando que o imposto foi coletado automaticamente:

Configurações

Nome Descrição
discourse subscriptions enabled Ativa o plugin Discourse Subscriptions.
discourse subscriptions extra nav subscribe Exibe o botão Inscrever-se na navegação principal
discourse subscriptions public key Chave Publicável do Stripe
discourse subscriptions secret key Chave Secreta do Stripe
discourse subscriptions webhook secret Segredo do Webhook do Stripe
discourse subscriptions currency Código da Moeda Padrão. Isso pode ser substituído ao criar um plano de assinatura.
discourse subscriptions campaign enabled Ativa um banner de campanha para promover o apoio financeiro a esta comunidade.
discourse subscriptions campaign goal A meta numérica para sua campanha de apoio (assinantes ou valor arrecadado).
discourse subscriptions campaign type Seleciona o tipo de campanha a ser executada (assinantes ou valor mensal arrecadado).
discourse subscriptions campaign banner location Seleciona a localização do banner da campanha (topo ou barra lateral).
discourse subscriptions campaign banner bg image Carrega uma imagem personalizada para usar como fundo no banner da campanha.
discourse subscriptions campaign banner shadow color Seleciona a cor da sombra do banner da campanha.
discourse subscriptions campaign show contributors Exibe avatares das compras mais recentes de produtos de assinatura.
discourse subscriptions campaign product O ID do produto do Stripe a ser enviado aos apoiadores quando clicarem no botão na campanha. Se esta configuração estiver vazia, os apoiadores serão direcionados para a página principal de produtos.
discourse subscriptions campaign grant Concede ao usuário um mês gratuito de assinatura
discourse subscriptions pricing table id O ID da tabela de preços do Stripe do código de incorporação
discourse subscriptions pricing table enabled Ativa o uso da tabela de preços do Stripe e substitui a página de inscrição existente
discourse_subscriptions_enable_automatic_tax Alterna se o imposto sobre vendas será cobrado. Requer alguma configuração no Stripe.
discourse_subscriptions_enable_verbose_logging Ativa logs mais detalhados para auxiliar na depuração. Por favor, não deixe ativado permanentemente em produção.

:discourse2: Hospedado por nós? Este plugin está disponível em nossos planos de hospedagem Pro, Business e Enterprise Subscriptions | Discourse - Civilized Discussion

139 curtidas
Steady plugin for community funding
ProCourse Memberships :money_with_wings:
Group membership subscriptions with profit split
Email drip campaign
Discourse Category Lockdown
How to give unpaid users limited access without making Discourse private?
Discourse for Membership Association Members?
Super simple Discourse-Wordpress-membership integration
Please suggest a good Discourse Plugin for Membership that supports Indian Payment Gateway
Login required after some days of free access
User can't repurchase a subscription product after canceling
Allow users to donate to pay hosting fees for a site
Send an invite to a user but complete their profile programmatically
User Card Directory
Multiple paywalls with common communication hub
Discourse Subscriptions + btcpayserver
Discourse subscriptions - changing price during recurring subscription
Any good Memberpress alternatives for wordpress?
Subscription Access To Discourse
Add user to group after purchase
Do I need Wordpress? Or Discourse can be my solution to ALL?
How to move Topics in Category into their own Pinned Topic inside new Categories?
Discourse Subscriptions - user not removed from group when subscription cancelled
Discourse Subscriptions - user not removed from group when subscription cancelled
Discourse vs Skool
Subscription Access To Discourse
Tax implication of funding a forum
Tick badge for username?
Subscription update problem
Setting up a subscription group
How would I install a cryptocurrency paywall?
Charging a membership fee
Discourse Subscriptions with Thrive Cart
Admin creating subscription for user
Plugin for charity donations?
Allow subscription of predetermined length
Link Sign Up to Subscriptions Plugin
User monetization with group access?
Allow option to open Stripe payment website
Embed a list of Discourse topics onto an external site
Is it possible to use the subscription plugin to limit creating topics in a category to subscribers?
Best approach to a landing page/payment front end
Managing consumable AI costs
Allow multiple ‘new topic’ drafts
Stripe iframe causes a blank page on my print layout
No 'deleted' event in Stripe?
Tell us how you manage subscriptions on Discourse
Addding a paid group who can reply to topics but not create them
Integration with WP membership Pro
Hosting questions
Alternative sign up pathways
Control Category Visibility and Access by User Levels
Tighter integration of account-creation and subscriptions?
Blank page when resuming discourse app
Does the Subscriptions plugin work with "one-off" payment pricing tables?
Subscriber group automation (Remove and Add users to specific group with subscription)
"Support Us" Banner Not Updating
Tip or Pay Button - for user post/content, does it exist already?
May I or can I monetize my forum?
May I or can I monetize my forum?
Bundling more popular plugins with Discourse core
Guest Gate Theme Component
Error loading route Caused by plugin 'discourse-subscriptions'
Why doesn't Discourse hosting include the Subscriptions plugin on the Starter plan?
Rebuild fails when these plugins are present
Changing excerpt length
Installing discourse for free?
Options to manage payments for paid Discourse communities
Using a plug-in to monetize my Discourse
ProCourse Memberships :money_with_wings:
UX: Add metadata to subscription page to improve SEO and link UI design
A feature request related to this plugin. Pointed questions or rewarded questions
Plugin to use Discourse for classified ads or as a job board?
Subscription Plugin not working (Error)
How to set message limits for user groups?
API POST for New User
ProCourse Memberships :money_with_wings:
Steady plugin for community funding
New customer setup
Discourse Category Lockdown
Making group joins automatic to an external pricing plan
Platform integration - videos
Any way to accept paypal or stripe payment at signup?
Looking for feedback on Discourse Subscriptons
WooCommerce Discourse Website newbie help
Switching to Discourse Subscriptions from WordPress Subscriptions
Integration with Wix.com membership to only let the paid member can access to Discourse
2020: The Year in Review
Managing Subscriptions through Wordpress (Ultimate Member + Paid Memberships Pro)
Discourse Unlock
How does uninstalling the Subscriptions plugin affect Stripe billing?
Memberful opinions?
Is there an E-commerce plugin for Discourse?
Memberful opinions?
Prefill custom html with user's email address?
Can't make the subscription plugin work
How to charge members for my Discourse website?
New site landing-page + discourse integration and marketing
Pay or Play usage?
Latest topics on homepage with only members to read in detail?
Banner text customization for Subscriptions plugin
Subscriptions: Change User's Plan
Donation Bar for House Ad
Can I use the Subscriptions plugin on my own server?
Limiting Subscription Length
Discourse Subscriptions - use API to find out product, plan and renewal date

5 posts were split to a new topic: A similar object exists in test mode error

Configurar Sidebar parece não fazer nada (último Discourse aeb3d717dc, último plugin cc43d32a).

1 curtida

Também estou recebendo esta mensagem de log:

Aviso de depreciação: O nome do ícone "donate" foi atualizado para "circle-dollar-to-slot". Por favor, use o novo nome em seu código. Nomes antigos serão removidos no Q2 de 2025. [deprecation id: discourse.fontawesome-6-upgrade] [info: https://meta.discourse.org/t/325349]

EDIT: Fiz um PR para isso

3 curtidas

2 posts were merged into an existing topic: "Support Us" Banner Not Updating

Hmmm… localmente o meu aparece na barra lateral quando eu o mudo.

Se você o tiver na barra lateral, adicionamos esta classe CSS. Você pode inspecionar sua página e procurar por subscription-campain-sidebar

Ele fica apenas no topo para você?

Entendi. Eu tinha a página de Categoria como padrão. Lá não mostra, obviamente. Mostra na lista Mais Recentes. Então funciona bem. Obrigado!

3 curtidas

Realmente deveria aparecer na página de Categorias (ou outras páginas padrão), não deveria?

1 curtida

Devido às restrições na China Continental, é difícil para a Stripe passar na revisão. Você poderia considerar integrar as interfaces do Alipay ou WeChat Pay?

2 curtidas

Perguntas semelhantes no passado tiveram uma resposta como “a coisa a fazer seria criar um plugin para Alipay ou WeChat Pay”. O discourse.org ganha dinheiro com aqueles que pagam pela hospedagem e não acho que eles tenham muitos clientes empresariais que queiram Alipay ou WeChat Pay, então você precisará perguntar em Marketplace ou desenvolvê-lo você mesmo. Talvez você possa interessar Alipay ou WeChat Pay em financiar o desenvolvimento.

3 curtidas

Consegui completar os itens de 1 a 5, mas acho que sou burro ou cego. Não consigo encontrar a interface para configurar produtos e planos no meu servidor.

Ugh, esquece… Encontrei. A última peça do quebra-cabeça é que não entendi isto:

  • Para adicionar uma descrição ao seu produto, adicione um campo de metadados chamado “description” e use esse em vez disso. Você pode usar Markdown.

Acredito que configurei tudo corretamente. Se eu verificar a configuração para:\n~~O botão de assinatura mostrará a tabela de preços incorporada e o Stripe Checkout será usado.\nEntão as compras funcionam corretamente, no entanto, se eu desmarcar isso e usar a interface integrada, recebo caixas de erro como:\n\n\u003eEsperava-se um método de pagamento do tipo cartão, mas este PaymentIntent não tem um método de pagamento e nenhum foi fornecido. Tente novamente fornecendo os parâmetros payment_method ou payment_method_data.\n\nou~~\n\n\u003eEste cliente não tem uma fonte de pagamento anexada ou método de pagamento padrão. Considere adicionar um método de pagamento padrão. Para mais informações, visite https://stripe.com/docs/billing/subscriptions/payment-methods-setting#payment-method-priority.\n\nO erro principal é em um plano não recorrente, o inferior é um plano recorrente.\nAlguma dica de como consertar? Eu prefiro a interface integrada.\n\nEu resolvi isso, parece que enquanto eu mexia com usuários no ambiente de teste, o Stripe não gostou que eu usasse o mesmo usuário do Discourse com diferentes "usuários de assinatura".\n\nAlém disso, o OP deve esclarecer que \n\n\u003ePara adicionar uma descrição ao seu produto, adicione um campo de metadados chamado “description” e use esse em vez disso. Você pode usar Markdown.\n\nVá para o Painel do Stripe, clique em Catálogo de Produtos, clique em um Produto, depois clique em um Preço. É aqui que você encontrará os campos de metadados onde pode adicionar uma descrição.\n\nNo entanto, isso não pareceu funcionar para mim. Adicionei uma descrição de teste e nada mudou, nem usando a tabela do Stripe, nem o layout integrado.

6 posts foram mesclados em um tópico existente: Adicionar diferentes métodos de pagamento à assinatura do Discourse

Uma postagem foi mesclada em um tópico existente: Adicionar diferentes métodos de pagamento à assinatura do Discourse

Quando tento criar um produto, recebo um erro “500”. Estou configurando isso em um ambiente de teste. O que posso verificar para descobrir o motivo do erro do servidor?

Coisa semelhante em cupons

Existe uma entrada criada ao mesmo tempo em {YOURFORUM}/logs ?

2 curtidas

Uau.. não sabia que essa página existia. Mostra chave de API inválida. Coloquei um lixo qualquer para a chave secreta para avançar e configurar os pacotes de assinatura por agora e voltar para as chaves mais tarde quando estiver pronto para testar.

1 curtida

Consegui configurar o plugin sem problemas, mas então percebi que este plugin só permite assinaturas recorrentes. Não assinaturas únicas que expiram após o período definido.

Como cobrar X valor por 30 dias. Após 30 dias, o usuário é removido do grupo premium. Eles podem comprá-lo novamente se quiserem. Normalmente, ofereço assinaturas de 1 mês, 3 meses e 12 meses.

O Stripe exige que eu me registre como uma empresa para poder oferecer suporte a pagamentos recorrentes. Estou recebendo pagamentos únicos no XenForo e o recurso nativo do XenForo lida com o vencimento da assinatura e a remoção da associação ao grupo.

Isso destrói completamente meu plano de migrar para o Discourse em um mês. :cry:

Eu tenho uma solução. Posso ajudá-lo a criar uma ação do GitHub que extrairá dados do explorador de dados, incluindo o nome de usuário e o ID do grupo dos quais removê-los e, em seguida, alterará seu grupo de acordo.

Estou fazendo isso para um cliente que está migrando para o Discourse e tem um campo personalizado com datas. Portanto, precisamos mover os usuários para um grupo “expirando-em-breve” para dar-lhes um banner e, em seguida, para outro para removê-los do grupo pago quando o tempo acabar.

Se você tiver um orçamento, pode entrar em contato comigo ou perguntar em Marketplace. Estou planejando um post de blog sobre isso com um exemplo de propósito geral, se eu tiver um tempo livre.

6 curtidas

Olá, as assinaturas funcionaram bem até o momento em que o retorno de chamada do Stripe chegou. Estou usando a Tabela de Preços do Stripe.

Posso ver que a assinatura foi registrada com sucesso na página admin/plugins/discourse-subscriptions/subscriptions.

No entanto, o usuário não foi movido para o grupo de usuários necessário.

Configurei o produto com o mesmo Nome do Produto do Stripe e também criei um plano de preços com o grupo selecionado. Mantive o preço como zero no plano de preços, pois presumo que seja irrelevante para a configuração da tabela de preços do Stripe.

O que estou perdendo?