[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