User:Mark Hershberger/specs: Difference between revisions

From MWStake
Jump to navigation Jump to search
No edit summary
(cleanup)
Line 15: Line 15:
* The user should be able to cancel their subscription.  If they do, they should be removed from the group.
* 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 <code>managemembership</code> right.
* Administrators are users that have the <code>managemembership</code> 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 [[mw:Extension:Echo/Creating_a_new_notification_type|notification]].
* ''(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 [[mw:Extension:Echo/Creating_a_new_notification_type|notification]].


== Implementation notes ==
== Implementation notes ==
Line 46: Line 46:
</syntaxhighlight>
</syntaxhighlight>


Each object in this associative array represents a membership level.  The keys (''''e.g.'''' <code>member-gold</code>) 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 <code>[[mw:$wgGroupPermissions|$wgGroupPermissions]]</code>The usual MediaWiki system for managing labels for these groups are used.  See [[mw:Manual:User_rights#Creating_a_new_group_and_assigning_permissions_to_it|the MW manual for “Creating a new group”]] for how to handle the display of these groups.
Each object in this associative array represents a membership level.  The keys (''e.g.'' <code>member-gold</code>) 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 <code>[[mw:$wgGroupPermissions|$wgGroupPermissions]]</code>The usual MediaWiki system for managing labels for these groups are used.  See [[mw:Manual:User_rights#Creating_a_new_group_and_assigning_permissions_to_it|the MW manual for “Creating a new group”]] for how to handle the display of these groups.


For each object, the <code>cost</code> parameter is required, and any other parameters are optional.
For each object, the <code>cost</code> 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.'''' <code>member-individual</code>). If a <code>dependant</code> has also been given, the extension will also assign the groups for that dependant recursively. So, for instance, if someone purchases the <code>member-silver</code> level, they would get assigned the groups <code>member-silver</code>, <code>member-bronze</code> and <code>member-individual</code>.
Immediately after a successful payment the user is assigned to a the group specified in the key (''e.g.'' <code>member-individual</code>). If a <code>dependant</code> has also been given, the extension will also assign the groups for that dependant recursively. So, for instance, if someone purchases the <code>member-silver</code> level, they would get assigned the groups <code>member-silver</code>, <code>member-bronze</code> and <code>member-individual</code>.

Revision as of 19:21, 4 July 2020

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.
  • 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

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.