Difference between revisions of "MediaWiki/archive/extensions/Special/SiteSubscribe"
(data design: 2 tables (hopefully we won't need any more)) |
m (MediaWiki/SpecialPayPal moved to MediaWiki/SpecialSiteSubscribe: realized that the focus was less on handling PayPal than on managing site subscriptions, and just happens to support PayPal) |
(No difference)
|
Revision as of 11:49, 12 February 2009
Overview
Special:PayPal is a MediaWiki extension to provide functions for integrating with PayPal. It is initially being created for a client who wants to provide full access only to paying subscribers, but in the long run it may be a good platform for adding other PayPal functions. (The access-restriction is being accomplished by a combination of MediaWiki site settings and W3TPL, and is very flexible.)
Necessity
MediaWiki extensions currently available for interacting with PayPal seem to be limited to displaying static PayPal buttons, which can also be done using W3TPL and other extensions capable of displaying linked external images. This extension makes it possible to receive and process Instant Payment Notifications from PayPal.
Status
Special:PayPal is currently under development. Code will be posted here when it works.
Functionality
- TO DO: record new subscriptions (sent via IPN)
- TO DO: function to create/extend subscriptions when IPN received
- TO DO: add user into "subscribers" group when payment received
- TO DO: track subscription status (expiration)
- TO DO: detect when user's account has expired
- TO DO: remove user from "subscribers" group on expiration
- TO DO: display subscription status for admins
- TO DO: allow admins to modify subscription status (change expiration, add new subscription)
also to do
- table to record subscription info
Data Design
pp_paymts
Log of payments received
<mysql>CREATE TABLE `pp_paymts` (
ID INT NOT NULL AUTO_INCREMENT, ID_User INT NOT NULL COMMENT "user.user_id of user making the payment", WhenRecd DATETIME NOT NULL COMMENT "when the payment was received", AmtRecd DECIMAL(9,2) NOT NULL COMMENT "dollar amount received", PRIMARY KEY(`ID`)
) ENGINE = MYISAM;</mysql>
pp_subscrs
Subscription status
<mysql>CREATE TABLE `pp_subscrs` (
ID_User INT NOT NULL COMMENT "user.user_id of user making the payment", WhenExp DATETIME NOT NULL COMMENT "when the subscription expires", PRIMARY KEY(`ID_User`)
) ENGINE = MYISAM;</mysql>