[H-SASIG] Payment database
Russell Stuart
russell-humbug at stuart.id.au
Sat May 1 09:14:48 EDT 2010
Greg and I sat down one night and looked at what be needed for Humbug to
accept membership payments via they web. We specifically limited the
scope of the project to just that. This is what we came up with:
Scope of project
----------------
Primary objective:
To allow members to make payments online.
Secondary requirements that follow from the primary objective:
- Method of authenticating members. Beyond acknowledging it is
needed, this HASN'T been addressed in this spec as there are too
many tie-ins to other systems.
- Reconciling the payments received to the bank statements, so we
have an audit trail that can prove what members are financial.
- Because we have reconciliation, and there may be several payments
combined into one bank statement line, it seems like all payments
should be entered into this system. Currently Humbug has only
one other source of payments that might hit a deposit line on the
bank statement: cash membership payments.
In scope:
- Committee adding members via a WWW interface.
- Committee updating members' details names via a WWW interface.
- Treasurer entering cash membership payments.
- Members making online payments using a WWW interface and a payment
gateway.
- Members joining as a part of the process of making WWW payments.
- Migrating existing members (both financial and non-financial) to
this database.
- Enable reconciliation against bank statements.
- Produce a list of non-deposited payments.
Not in scope, but present:
- Could not resist adding emailAlias at humbug.org.au alias
maintenance to this.
- Members updating their names and the WWW interface.
- Produce a list of financial members.
memberTable
-----------
Fields:
memberId Unique number identifying the member. A positive
number greater than 0.
memberSurname
member surname.
otherNames member given names.
emailAlias so emailAlias at humbug.org.au forwards to the member
actual email address.
expires date when most recent actively the membership
expires, or 1/1/1970 if this person has never been a
financial member.
emailAddress
member primary email address.
authInfo ToBeDetermined. link to authentication mechanism.
eg LDAP id, openId, moinmon user ID or whatever we
choose. Used by the WWW interface to authenticate
people.
Unique keys:
memberId
Notes:
members are never deleted.
paymentTable
------------
fields:
receiptNumber
receipt number issued by humbug for the payment
paymentDate the date the payment was made.
paymentType A string classifying the payment. Currently the only
classification is: "membership".
paymentFor A string whose format depends on "paymentType". Uses
per payment type:
membership The date the membership will expire,
ie same date in memberTable.expires.
paymentGateway
String describing the way the payment was made.
Currently "cash" is one valid string. "Paypal"
might be another.
paymentReferences
A string. Whatever proof / acknowledgement the
payment gateway give us for the payment. For "cash"
this is blank.
payee Description of who made the payment. If this is a
member, it is surname, otherNames.
memberId If a member made the payment, their memberId.
Otherwise null.
depositDate The date the money appeared in the bank statement as
a deposit.
depositId A number that uniquely identifies the deposit line.
Unique keys:
receiptNumber
Notes:
payments are never deleted.
More information about the Sasig
mailing list