A PloneFormGen-based donation form that does checkout via PloneGetPaid.
This package streamlines the process of creating a donation form within a Plone site that can process payments via one of the payment processors supported by PloneGetPaid.
On its own, PloneGetPaid provides a useful basis for processing electronic payments within Plone, including support for a number of payment processors. However, PloneGetPaid is optimized for the use case of purchasing products, and makes some assumptions that are suboptimal for collecting donations:
- It assumes that any item purchased is represented by a content item within the site, which is not the case for arbitrary donations.
- It provides no user interface for selecting among predefined donation levels -or- entering an arbitrary donation amount.
- Its checkout process requires several steps, whereas making a donation should be as streamlined as possible.
pfg.donationform solves these problems by creating a PloneFormGen-based donation form with a custom “donation field” that provides an acceptable UI for configuring a donation amount and recurring donation. When the form is submitted, it can either process the donation immediately based on contact and billing fields included in the form, or can redirect to the standard GetPaid checkout wizard.
The donation field may also be used in other PloneFormGen forms.
pfg.donationform works on both Plone 3 and Plone 4. Recent versions of PloneFormGen and PloneGetPaid are required.
Add GetPaid to your buildout, using the instructions at http://code.google.com/p/getpaid/wiki/InstallingGetPaid to make sure you get the correct package versions.
Add pfg.donationform to your buildout.
Start Zope and install PloneGetPaid via the Add-ons control panel, and configure its settings.
Install “Donation Form” via the Add-ons control panel.
Make sure you have configured your Plone site’s mailhost settings.
Begin adding a donation form by selecting “Donation Form” from Plone’s Add menu. Fill out the fields and click “Add” to finish adding the form.
By default GetPaid uses a dummy payment processor that “accepts” payment without actually doing anything. You will need to configure GetPaid via its control panel in Site Setup.
Because the generated form is a PloneFormGen form, you may edit or add fields via the normal PloneFormGen user interface. If you add a field and want it to be included in the e-mail that is sent when a donation is made, you must also edit the mailer adapter and add it to the list of included fields. (All fields are not included automatically, in order to avoid sending sensitive credit card information via e-mail.)
If you let the Donation Form creation process add contact and billing fields to the form, make sure that you do not remove them or change their IDs – the GetPaid adapter expects to find them.
- Format donation amounts using the active locale, if possible. [davisagli]
- Clear the shopping cart before adding a donation line item. [yomatters]
- Default to using separate first/last name fields instead of a single name field. [davisagli]
- Default to no limit on term of recurring payments. [davisagli]
- Add some additional CSS hooks to the donationfield widget template [jessesnyder]
- Don’t break if there’s no IIntIds utility. [davisagli]
- Depend on zope.intid instead of zope.app.intid. [davisagli]
- Refactored the DonationFieldLineItemFactory to make it easier to override. [davisagli]
- Moved form creation logic to helpers in the utils module. [davisagli]
- PloneGetPaid is no longer a hard dependency. You still want it in most cases, so be sure to install it before installing pfg.donationform unless you know what you’re doing. [davisagli]
- Fix imports for compatibility with Plone 4.1. [davisagli]
- Don’t put anything in the custom donation amount field if no suggested donation was configured (it used to display a ‘0’). [davisagli]
- Add a minimum donation setting (defaults to $1) to help avoid automated bots testing credit cards. [davisagli]
- Add option to set up recurring payments that continue indefinitely, instead of prompting the user for a number of months to recur. [davisagli]
- Fix view of donation fieldsets when they are contained in other fieldsets. [davisagli]
- Allow pfg.donationform to be present but not installed when upgrading a site to Plone 4. [jbaldivieso]
- Fix regression in handling the case where the default amount is None. [davisagli]
- Remove the ‘required’ setting for the donation field for now, since it doesn’t work properly and isn’t trivial to fix. Also the ‘hidden’ and ‘fgDefault’ settings, which don’t make sense for this field. [davisagli]
- Fix bugs in highlighting the currently selected level. [davisagli]
- Handle predefined donation levels with no label. [davisagli]
- Fix the wording for the case where no predefined donation levels are specified. [davisagli]
- Mark the cart as an IDonationCart. [davisagli]
- Fire a DonationCreatedEvent on the cart after a donation is added. [davisagli]
- Initial release. [davisagli]