User:Mark Hershberger/specs: Difference between revisions
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]]. | ||
== Implementation notes == | == Implementation notes == | ||
Line 46: | Line 46: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Each object in this associative array represents a membership level. The keys ( | 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 ( | 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 $wgGroupPermissions
The 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
.