There's a long history of interest in an extension that offers a forum owner to restrict access to the forum or a selection of its content to user who pays a one time or recurring fee. To be honest, I have made an attempt in the past and so have others.
Let's face reality; it isn't an easy thing to build nor maintain. And the risk of a first version never being shipped grows with the features demanded, like for instance offering multiple payment providers.
To satisfy this feature in some way I decided before the weekend to procrastinate on all my other work and get the foundation of such an extension online as soon as possible. While balancing homeschooling of one kid and entertainment of another I actually am still making quite some progress.
The idea is to create a premium extension (published on Extiverse) under the wings of the new Blomstra company. Blomstra customers with a managed Flarum community will then be allowed free use of this extension.
In terms of pricing, my idea is to offer the extension in the first two months at $ 50 one-time cost and switch to a subscription model of at least $ 10 monthly afterwards. As said, people using Blomstra hosting will be able to use the extension at no additional cost on their managed Flarum communities.
Until we have a stable user base we will rely primarily on an integration with Stripe. Products can be created in their web app, prices can be configured to be recurring or one-off; but Stripe also offers discounts. Using Stripe allows me to disperse most of that UX to their platform and focus on the features of what payments grant, instead of focussing on handling payment processing between different services.
The three suggested modes:
- PTA; pay to access; payment grants access to a permission group. Permission groups can be assigned to specific permissions across your board like viewing, posting and uploading for instance.
- PTP; pay to post (or rather to create a discussion); upon creating a discussion on a tag marked to require payment, the user is redirected to pay for posting. Great for advertorials.
- PTV; pay to view (soon); content (replies or even discussions) will be hidden or have only an excerpt until the user paid a fee.
PTA - Pay to Access
How: assign a Stripe product ID of a product with one-time and/or recurring prices attached to the group edit modal inside your admin area.
Effect: gain membership of the given group by paying one of the configured prices (so one-time or even recurring). Access levels are listed on the
Great for: premium memberships.
Permission groups are the driving factor in authorization within Flarum, much of the other extensions are tightly connected with them. Offering paid access (and with recurring prices automatic revocation) to groups opens up any combination of permissions to these group members based on the extensions you have enabled!
The forum will gain a new page called Access Portal which will list all groups and their icons. Some information is enriched with data from the Stripe product.
Each group shows a store button with options for paying for access. A modal will pop up listing all prices; so you can configure different ones (monthly, yearly, single or even bi-annual):
PTP- Pay to Post
How: assign a Stripe product ID of a product with a single one-time price attached to the tag edit modal inside your admin area.
Effect: users posting discussions inside one or more of the tags connected to a Stripe product will need to pay the total of all cost of the tags applied.
Great for: advertorials or job boards.
The user applies tags to their discussion based on your tag settings. These can include any amount and combination of tags. Tags that have configured a Stripe product will cause discussions with these tags to be marked invisible until the author of the discussion pays the cost involved.
The cost of the discussion is based on the total amount of all applied tags with their one-time price attached. Products attached to the tag can have multiple one-time prices attached, but only one is used. This offers huge flexibility, for instance you can create a primary tag "Jobs" connected to a Stripe product with the price $ 5, but "Jobs" can also have a sub-tag called "Promoted" with a Stripe product and a price of $ 10; the total sum of the payment for a user applying both tags would be $15.
If you think there's anything else I should add, please comment so that we can consider it.