User:Mark Hershberger/specs

From MWStake
< User:Mark Hershberger
Revision as of 20:11, 4 July 2020 by Mark Hershberger (talk | contribs) (initial pass)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This document provides the specifications for a credit card processing engine that MWStakeholders is having developed.

Requirements

  • The extension should use Omnipay to handle Authorize.Net transactions and it should set up recurring payments (probably using this package by cimpleo), either yearly or monthly.
  • The yearly amounts are given on our dues page.
  • If a user chooses monthly payments, then it should be the yearly amount divided by 12 and rounded up to the nearest $.
So, at the $100 level, it would be $100 ÷ 12 = 8.3̅ ≆ $9 per month
  • Credit card info should NOT be stored anywhere.
  • Billing address information should be collected.
  • Once a person has signed up for a level, they should be put into a corresponding MW group. Group names should correspond with the level of payment.
At the $100 level, the group would be the individual-subscription, for the $250 level, it would be bronze-subscription, etc.
  • Permissions granted by lower groups should automatically be given to the higher group.
  • Group memberships would be set to automatically expire after one year.
  • The user should be able to cancel their subscription. If they do, they should be removed from the group.
  • If a monthly or yearly payment is missed, then the user and the administrators should be sent a notification.
  • Administrators are users that have the managemembership right.

Implementation notes

Membership tiers

Configuration for membership tiers:

{
	"member-individual": {
		"cost": "100"
	},
	"member-bronze": {
		"cost": "250",
		"dependant": "member-individual"
	},
	"member-silver": {
		"cost": "1000",
		"dependant": "member-bronze"
	},
	"member-gold": {
		"cost": 2500,
		"dependant": "member-silver"
	},
	"member-platinum": {
		"cost": 5000,
		"dependant": "member-gold"
	}
}

Each object in this associative array represents a membership level. The keys ('e.g.' member-gold) indicate the group name that the user is put in. These group names coorespond with the top-level key of the two-dimensional array that is contained in $wgGroupPermissionsThe usual MediaWiki system for managing labels for these groups are used. See the MW manual for “Creating a new group” for how to handle the display of these groups.

For each object, the cost parameter is required, and any other parameters are optional.

Immediately after a successful payment the user is assigned to a the group specified in the key ('e.g.' member-individual). If a dependant has also been given, the extension will also assign the groups for that dependant recursively. So, for instance, if someone purchases the member-silver level, they would get assigned the groups member-silver, member-bronze and member-individual.