User:Mark Hershberger/specs: Difference between revisions
(cleanup) |
(add votes) |
||
Line 7: | Line 7: | ||
* If a user chooses monthly payments, then it should be the yearly amount divided by 12 and rounded up to the nearest $. | * 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 | : 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 <code>member</code> | |||
** | |||
** WhPeople without an individual mebership, | |||
** The special page to create corporate memberships | |||
* Credit card info should NOT be stored anywhere. | * Credit card info should NOT be stored anywhere. | ||
* Billing address information should be collected. | * Billing address information should be collected. | ||
Line 18: | Line 25: | ||
== Implementation notes == | == Implementation notes == | ||
=== Permissions === | |||
The <code>member</code> permission will be given to the <code>individual-subcription</code> by default. | |||
Users with the < | |||
=== Membership tiers === | === Membership tiers === | ||
Line 25: | Line 38: | ||
{ | { | ||
"member-individual": { | "member-individual": { | ||
"cost": "100" | "cost": "100", | ||
“vote”: 1 | |||
}, | }, | ||
"member-bronze": { | "member-bronze": { | ||
"cost": "250", | "cost": "250", | ||
"dependant": "member-individual" | "dependant": "member-individual", | ||
“vote”: 10 | |||
}, | }, | ||
"member-silver": { | "member-silver": { | ||
"cost": "1000", | "cost": "1000", | ||
"dependant": "member-bronze" | "dependant": "member-bronze", | ||
“vote”: 25 | |||
}, | }, | ||
"member-gold": { | "member-gold": { | ||
"cost": 2500, | "cost": 2500, | ||
"dependant": "member-silver" | "dependant": "member-silver", | ||
“vote”: 40 | |||
}, | }, | ||
"member-platinum": { | "member-platinum": { | ||
"cost": 5000, | "cost": 5000, | ||
"dependant": "member-gold" | "dependant": "member-gold", | ||
“vote”: 50 | |||
} | } | ||
} | } |
Revision as of 22:22, 5 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
- 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 $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
.