I'm also in the middle of setting up a subscription based website and these are our current requirements. They may help you regarding best practice:
- Users will be able to choose one of
the subscription plans.
- Users will be required to enter their
credit card details to sign up to
their chosen plan.
- All major credit and debit cards must
be accepted including Maestro and
American Express.
- Each plan will have a 30-day free
trial so users' credit cards should
only be charged after the 30-day
period expires. However, the validity
of credits cards should be checked at
the time of sign up.
- Users will be emailed a few days
before their credit card is charged
to notify them that they will be
charged soon unless they cancel their
account. If they cancel their account
within their 30 day free trial, their
credit card should not be charged.
- After any free trial period, users
will be charged in advance for their
use of the system - ie they will
pre-pay.
- Users will be charged automatically
every month for their chosen plan.
Each month, users will be sent an
email a few days in advance to notify
them that they will be charged. Once
payment has been made, users will be
emailed an invoice showing that their
payment has been received.
- Users will be able to upgrade or
downgrade their accounts at any time.
When users upgrade/downgrade, their
next subscription charge will be at
the new rate. Users will only be able
to downgrade their accounts to a plan
that can handle their data. For
example, if they currently have 10
active projects they can't downgrade
to the Basic plan because the Basic
plan only allows 5 projects. They
will have to delete or archive 5
projects before you they can
downgrade to Basic.
- Users will be able to log in to their
account and change or update their
credit card details.
- Users will be able to cancel their
account at any time. There will be no
further subscription charges after a
user has canceled their account.
However, users will not be refunded
for part of the month they have
already paid for.
- All parts of the payment system must
be 100% PCI DSS compliant; including
any 3rd party systems.
- The payment system must support
automated notification and retry of
failed subscription renewals.
- The payment system must support
discount vouchers with expiry dates.
- Credit card details must not be
processed by or stored on our servers
- they should always be processed/stored by our 3rd party
payment processing partner. We do not
want responsibility for securing
these details and complying with
legal rules and regulations.
- Users will be able to log into their
accounts and see a full billing
history including dates and amounts
paid. We will also need to be
able to log in to a system to see
customer payment plans and payment
history. This will be essential for
customer service.
We've also been looking at http://chargify.com/ which looks like it could save a lot of coding time.