User:Mark Hershberger/specs

From MWStake
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
  • Corporate meberships can only be purchased after an individual membership is purchased.
    • Individual memberships should be purchased on a dedicated page by logged in users.
    • Non-logged in users will be denied access with UserNotLoggedIn.
    • The corporate membership page will only be available to people who have the member
    • WhPeople without an individual mebership,
    • The special page to create corporate memberships
  • 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.
  • Administrators are users that have the managemembership right.
  • (soft requirement) If a monthly or yearly payment is missed (e.g. because of an automatic transaction error at Authorize.Net), then the user and the administrators should be sent a notification.

Implementation notes

Permissions

The member permission will be given to the individual-subcription by default.

Users with the <

Membership tiers

Configuration for membership tiers:

{
	"member-individual": {
		"cost": "100",
                “vote”: 1
	},
	"member-bronze": {
		"cost": "250",
		"dependant": "member-individual",
                “vote”: 10
	},
	"member-silver": {
		"cost": "1000",
		"dependant": "member-bronze",
                “vote”: 25
	},
	"member-gold": {
		"cost": 2500,
		"dependant": "member-silver",
                “vote”: 40
	},
	"member-platinum": {
		"cost": 5000,
		"dependant": "member-gold",
                “vote”: 50
	}
}

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.