membermatters / MemberMatters

An open source membership, access and payments portal for makerspaces and community groups.
https://membermatters.org
MIT License
40 stars 23 forks source link

[FEATURE] Allow "Pay As You Go" (PAYG) membership option #253

Open proffalken opened 2 months ago

proffalken commented 2 months ago

Is your feature request related to a problem? Please describe.

At present, Member Matters assumes that members will subscribe for the duration of a set period and that charging will follow that period and renew accordingly.

At Make Monmouth we are looking at offering a "Pay As You Go" (PAYG) offering where it would be a set amount each time someone turned up, but they would not need to pay a monthly amount.

It would be good to be able to manage this via Member Matters.

Describe the solution you'd like

A user should be able to register with Member Matters as normal, and complete any induction course etc, but then only pay for the events that they attend.

I would prefer this not to include the need to setup memberbucks as our accountant considers that to be "extending a line of credit" and it is therefore accounted for in a different manner to our usual membership fees.

Ideally, this would be advanced permission to create a new transaction for a given amount once each 24hr period when a member using PAYG swipes their ID badge at the front door.

Describe alternatives you've considered @jabelone discussed this on Discord:

It doesn’t currently. A sneaky way you could do that is use the new interlock billing feature. Probably won’t be a great UX but you could connect a door as an interlock and enable a start up cost for it. What would be far better is a proper pay as you go system. I don’t think it would be too difficult. Perhaps if enabled on your instance, anyone without an active subscription can swipe at a door, and if they have enough member bucks they are debited and given access for X hours. Or would a prepaid ie you have to enable and pay for a 24hr membership before you rock up option work better?

You could actually nearly do the prepaid option in the current system. All we’d have to do is create a flag on a billing plan to set once off as false so stripe doesn’t renew it. It already supports X days, X weeks or X month length options so you could just setup say a 1 day plan without auto renew (if we added that flag) and I think it would mostly meet your requirements.

Whilst I am confident these would probably work in the short-term, in our case we'd need it to be part of the membership system rather than via memberbucks for the reasons mentioned above

Additional context N/A

proffalken commented 2 months ago

I've been thinking about how we implement this and I'd like to propose the following:

  1. Update the ENUM for payment plan types to add an "AdHoc" or "Each" option
  2. Update the code for RFID-card logins to check the plan type that a user has, and it if matches an "adhoc" plan, trigger a payment via Stripe for the appropriate amount

I don't want to start coding this up as a solution until we're agreed on a way forward, so would appreciate comments/thoughts/pointers on where this might be improved and if there are better places in the codebase to add this feature.