Integrating Plone with E-Commerce and Relationship Management: A Case Study in Plone, GetPaid and
Upcoming SlideShare
Loading in...5

Like this? Share it with your network


Integrating Plone with E-Commerce and Relationship Management: A Case Study in Plone, GetPaid and



David Glick's Plone Conference 2009 talk showing tools for accepting payments via PloneGetPaid and recording the transactions in

David Glick's Plone Conference 2009 talk showing tools for accepting payments via PloneGetPaid and recording the transactions in



Total Views
Views on SlideShare
Embed Views



3 Embeds 30 17 10 3



Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Integrating Plone with E-Commerce and Relationship Management: A Case Study in Plone, GetPaid and Presentation Transcript

  • 1. Integrating Plone with E-Commerce and Relationship Management A Case Study in Integrating PloneGetPaid and David Glick
  • 2. Groundwire uses the power of technology to connect people, organizations, and communities working to build a sustainable society.
  • 3. Idaho Conservation League
  • 4. Idaho Conservation League
  • 5. Theory of Change
  • 6. Goal: Tools to help engage • E-mail newsletter • Online donations • Membership signup • Paid event registration
  • 7. Tools
  • 8. Why • Not open source, but open-ended, customizable platform • Active development community • Salesforce Foundation donates 10 user licenses to charitable organizations (worth $15k/year) • Managed service == reduced maintenance complexity
  • 9. But most of our goals require integrating multiple tools...
  • 10. General strategies • separation of concerns – small pieces loosely joined • customization via configuration, not programming • reusability
  • 11. E-mail newsletter signup
  • 12. Salesforce-PloneFormGen Adapter Fie lds Ac tio n Ada pte rs Mailer Submit Saved data
  • 13. Salesforce-PloneFormGen Adapter
  • 14. Salesforce-PloneFormGen Adapter
  • 15. Passing preset values via hidden fields
  • 16. Lead Conversion
  • 17. E-commerce options
  • 18. Standalone 3rd-party tool (GiftTool, Network for Good, etc.)
  • 19. Direct integration with (Payment Connect)
  • 20. Direct integration with (Payment Connect)
  • 21. Handcode it in Python
  • 22. GetPaid for Plone
  • 23. Considerations • Costs both upfront and ongoing (typically 2-5% of transaction depending on the payment gateway) • Method of funds transfer • Access to and privacy of donation data • Integration with your website
  • 24. Payment Processor Choice? • • PayPal • Paymentech • Google Checkout • Ogone • Payflo Pro • DPS PXPay • others? • ClickandBuy
  • 25. Sync vs. Async • Synchronous processors take in all info via Plone and then process via a separate backend request to the processor. (e.g. • Asynchronous processors redirect the user to the processor's site to collect billing info, then forward back to the store site. (e.g. PayPal Website Payments Standard)
  • 26. PCI compliance • The credit card industry has some strict standards for sites that deal with credit card information. • Sites that store, process, or transmit credit card info should complete a questionnaire and be prepared for a server scan. • Ask a consultant for advice.
  • 27. Hosting considerations • Most VPS providers are not going to certify themselves as PCI compliant. • If you're accepting credit card info directly rather than sending the user to an offsite processor, you need an SSL certificate … and a unique IP address per domain.
  • 28. Installing GetPaid [buildout] parts = … getpaid … [getpaid] recipe = getpaid.recipe.release==1.9 addpackages = getpaid.authorizedotnet getpaid.formgen getpaid.SalesforcePloneFormGenAdapter getpaid.SalesforceOrderRecorder
  • 29. Installing GetPaid
  • 30. Configuring GetPaid
  • 31. Donatable Types
  • 32. Payment Options
  • 33. Payment Processor Settings
  • 34. One-page member signup
  • 35. One-page member signup, recorded in Salesforce Form Payment Processor 1. Order placed (getpaid.formgen) 2. Payment authorization (getpaid.authorizedotnet, etc.) GetPaid Checkout 3. Finance charge event → Info recorded (getpaid.SalesforcePloneFormGenAdapter)
  • 36. GetPaid adapter • getpaid.formgen » Adds billing fields to form » Adds item(s) to cart » Initiates checkout
  • 37. getpaid.formgen Configuration Marking an item as a “variable amount donation”
  • 38. getpaid.formgen Configuration Marking an item as a “variable amount donation”
  • 39. getpaid.formgen Configuration Adding the action adapter
  • 40. getpaid.formgen Configuration Selecting the payable object
  • 41. getpaid.formgen Automatically adds billing fields
  • 42. collective.pfg.creditcardfields • Provides a date widget with just year and month. • getpaid.formgen creates a standard date field, but you can replace it with this.
  • 43. GetPaid-PloneFormGen- Salesforce adapter • (getpaid.SalesforcePloneFormGenAdapter) » Configures field mapping » Stores form values in session before checkout » Creates objects in Salesforce when order is financed
  • 44. getpaid.SalesforcePloneFormGenAdapter Data sources Plo ne Fo rm Ge n Fo rm : Ge tPa id: Custom felds Transaction ID, Billing Address, etc. Ge tPa id-Sa le s fo rc e Ada pte r: Confgures feld mapping for both sources
  • 45. getpaid.SalesforcePloneFormGenAdapter Adding the adapter
  • 46. getpaid.SalesforcePloneFormGenAdapter Configuring the object type
  • 47. getpaid.SalesforcePloneFormGenAdapter Configuring the field mapping
  • 48. Remember: • The GetPaid-PloneFormGen-Salesforce adapter must go before GetPaid adapter. (It needs to store things in the session before the GetPaid adapter starts checkout.)
  • 49. Making events payable
  • 50. Payable events
  • 51. Events in shopping cart
  • 52. Events checkout
  • 53. getpaid.SalesforceOrderRecorder • Map fields to Salesforce for standard GetPaid checkout (no PloneFormGen involved)
  • 54. Lessons/Observations
  • 55. Don't underestimate the effort needed to learn new processes and tools
  • 56. Don't assume an existing product does everything like you want
  • 57. Integrating systems • Usually you don't need much code, but the challenge is figuring out what it is and where to put it.
  • 58. Testing integrations with third-party tools is hard
  • 59. Testing integrations with third-party tools is hard
  • 60. Making integrations configurable enough to be reusable increases complexity significantly
  • 61. Warning • May not be suitable for use under high load. (API calls to are not transaction-aware, so ConflictErrors could lead to inconsistencies.)
  • 62. The future
  • 63. More automated form creation for the simple donation use case
  • 64. Integration with RSVP for Salesforce
  • 65. Profile management
  • 66. Get involved • Plone-Salesforce • GetPaid
  • 67. Thanks to... • Groundwire • Andrew Burkhalter • Jesse Snyder • Brian Gershon • Rob Larubbio • Meyer Memorial Trust • Everyone who has worked on GetPaid • Many others :)