GetPaid - Making money with Plone

published Oct 12, 2007, last modified Jan 30, 2008

Plone conference 2007, Naples. Speaker: John Lenton Company: Except

Plone conference 2007, Naples. Speaker: John Lenton Company: Except

(with many thanks to Kapil Thangavelu (who helped prepare but could not give this presentation) and Chris Johnson)

Show of hands: about half of the people attending are integrators and the other half developers.

E-commerce is hard. There is astounding complexity: payment processing, shipping, discounts, taxes, etcetera. Every one of those items is essential to somebody. So if you want to please everyone you need to have all of that in your system.

Getpaid does not do that. It tries to be a minimal framework. It uses zope 3 style python packages on one side and plone content integration and UI on the other. It has no content types of its own, so you are not forced to use say GetPaidBook or GetPaidDVD because they do not exist. You can use the zope 3 adapters of getpaid on your own content types or the core Plone content types. This means it is pretty small and clean.

Getpaid is currently in production on a few sites. There is:

  • Content integration (like mentioned above), you can make content items payable.
  • a shopping cart
  • pluggable order workflows. It uses the hurry.workflow package. It adds an adapter and parallel workflow.
  • order history
  • order types: shipable, donation orders. Classify and introspect orders.
  • order management: you can tracks workflow changes, searching, reports, import and export.
  • payment processors:
    • synchronous payment, for US-only merchant accounts
    • asynchronous, for EU-only merchant accounts probably.
    • more to come
  • order payments: workflow driven. Synchronous, asynchronous, and someone wants to do offline payment to (that would be me :), ed.)
  • admin interface: very simple, needs more UI love
  • internationalisation and localisation. getpaid.core and PloneGetPaid are mostly i18n, for about five languages now.

5 examples of best technologies that we use:

  • multistep wizard views
  • using formlib and viewlets all round
  • custom indexing and querying
  • zope3 workflow engine (hurry.workflow) which is unbelievably simple
  • doctests, event subscibers and more

Work in progress:

  • We currently support any currency, but only one at the same time, so we want to do something there.
  • product catalog
  • UPS shipping
  • Plone 3
  • etc

Wishlist: pure zope 3 UI, as that is the only part that is Plone dependent now.

We have a sprint here this weekend, so join us to finish version 1.0.


  • Use a policy; see Martin Aspeli's talk.
  • Come to the sprint and learn by writing an example. :)
  • Wait until after the sprint and learn from reading the example.

Everything is pluggable, as it is pure zope 3, which helps a lot in customizing.


Is there SQL database integration? No, but you could use sqlalchemy.

What do you mean with a product catalog? I mean that you can query for all products in a category. Could be done by querying the portal_catalog, but that would tie it to Plone, which we want to avoid.

Is there a demosite? Yes: