Integrating Plone
     with E-Commerce
and Relationship Management

     A Case Study in Integrating
  PloneGetPaid and Sa...
Groundwire uses the power of technology
to connect people, organizations, and communities
working to build a sustainable s...
Idaho Conservation League




            http://www.fickr.com/photos/sebastian_bergmann/2946960668/
Idaho Conservation League
Theory
of Change
Goal: Tools to help engage
•   E-mail newsletter
•   Online donations
•   Membership signup
•   Paid event registration
Tools




        http://www.fickr.com/photos/lachlanhardy/227715761/
Why salesforce.com?
• Not open source, but open-ended,
  customizable platform
• Active development community
• Salesforce...
But most of our goals require
integrating multiple tools...
General strategies
• separation of concerns – small pieces
  loosely joined
• customization via configuration, not
  progr...
E-mail newsletter signup
Salesforce-PloneFormGen
Adapter
     Fie lds            Ac tio n Ada pte rs


                                 Mailer

   ...
Salesforce-PloneFormGen
Adapter
Salesforce-PloneFormGen
Adapter
Passing preset values via
hidden fields
Lead Conversion
E-commerce options




           http://www.fickr.com/photos/danielbroche/2258988806/sizes/m/
Standalone 3rd-party tool



   (GiftTool, Network for Good, etc.)
Direct integration with
Salesforce.com



         (Payment Connect)
Direct integration with
Salesforce.com



         (Payment Connect)
Handcode it in Python
GetPaid for Plone
Considerations
• Costs both upfront and ongoing
  (typically 2-5% of transaction depending on
  the payment gateway)
• Met...
Payment Processor Choice?
•   Authorize.net   •   PayPal
•   Paymentech      •   Google Checkout
•   Ogone           •   P...
Sync vs. Async
• Synchronous processors take in all info via
  Plone and then process via a separate
  backend request to ...
PCI compliance
• The credit card industry has some strict
  standards for sites that deal with credit
  card information.
...
Hosting considerations
• Most VPS providers are not going to certify
  themselves as PCI compliant.
• If you're accepting ...
Installing GetPaid
[buildout]
parts =
    …
    getpaid

…
[getpaid]
recipe = getpaid.recipe.release==1.9

addpackages =
 ...
Installing GetPaid
Configuring GetPaid
Donatable Types
Payment Options
Payment Processor Settings
One-page
member signup
One-page member signup,
recorded in Salesforce
       Form
                                                  Payment Proce...
GetPaid adapter
• getpaid.formgen
 » Adds billing fields to form
 » Adds item(s) to cart
 » Initiates checkout
getpaid.formgen Configuration
Marking an item as a
“variable amount donation”
getpaid.formgen Configuration
Marking an item as a
“variable amount donation”
getpaid.formgen Configuration
Adding the action adapter
getpaid.formgen Configuration
Selecting the payable object
getpaid.formgen
Automatically adds
billing fields
collective.pfg.creditcardfields
• Provides a date widget with just year and
  month.
• getpaid.formgen creates a standard ...
GetPaid-PloneFormGen-
Salesforce adapter
• (getpaid.SalesforcePloneFormGenAdapter)
 » Configures field mapping
 » Stores f...
getpaid.SalesforcePloneFormGenAdapter
Data sources

    Plo ne Fo rm Ge n Fo rm :         Ge tPa id:
    Custom felds     ...
getpaid.SalesforcePloneFormGenAdapter
Adding the adapter
getpaid.SalesforcePloneFormGenAdapter
Configuring the object type
getpaid.SalesforcePloneFormGenAdapter
Configuring the field mapping
Remember:
• The GetPaid-PloneFormGen-Salesforce
  adapter must go before GetPaid adapter.

 (It needs to store things in t...
Making events payable
Payable events
Events in shopping cart
Events checkout
getpaid.SalesforceOrderRecorder
• Map fields to Salesforce for standard
  GetPaid checkout (no PloneFormGen
  involved)
Lessons/Observations
Don't underestimate the effort
needed to learn new
processes and tools
Don't assume an existing
product does everything like
you want
Integrating systems
• Usually you don't need much code, but the
  challenge is figuring out what it is and
  where to put ...
Testing integrations with
third-party tools is hard
Testing integrations with
third-party tools is hard
Making integrations
configurable enough to be
reusable increases complexity
significantly
Warning
• May not be suitable for use under high
  load.
  (API calls to Salesforce.com are not
  transaction-aware, so Co...
The future




             http://www.fickr.com/photos/locationscout/3595249806/
More automated form creation
for the simple donation use
case
Integration with RSVP for
Salesforce
Profile management
Get involved
• Plone-Salesforce
  http://groups.google.com/group/plonesf

• GetPaid
  http://code.google.com/p/getpaid/
Thanks to...
•   Groundwire
•   Andrew Burkhalter
•   Jesse Snyder
•   Brian Gershon
•   Rob Larubbio
•   Meyer Memorial T...
Integrating Plone with E-Commerce and Relationship Management: A Case Study in Plone, GetPaid and Salesforce.com
Integrating Plone with E-Commerce and Relationship Management: A Case Study in Plone, GetPaid and Salesforce.com
Upcoming SlideShare
Loading in …5
×

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

2,570 views
2,455 views

Published on

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

Published in: Technology, Business
1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total views
2,570
On SlideShare
0
From Embeds
0
Number of Embeds
32
Actions
Shares
0
Downloads
40
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

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

  1. 1. Integrating Plone with E-Commerce and Relationship Management A Case Study in Integrating PloneGetPaid and Salesforce.com David Glick
  2. 2. Groundwire uses the power of technology to connect people, organizations, and communities working to build a sustainable society.
  3. 3. Idaho Conservation League http://www.fickr.com/photos/sebastian_bergmann/2946960668/
  4. 4. Idaho Conservation League
  5. 5. Theory of Change
  6. 6. Goal: Tools to help engage • E-mail newsletter • Online donations • Membership signup • Paid event registration
  7. 7. Tools http://www.fickr.com/photos/lachlanhardy/227715761/
  8. 8. Why salesforce.com? • 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. 9. But most of our goals require integrating multiple tools...
  10. 10. General strategies • separation of concerns – small pieces loosely joined • customization via configuration, not programming • reusability
  11. 11. E-mail newsletter signup
  12. 12. Salesforce-PloneFormGen Adapter Fie lds Ac tio n Ada pte rs Mailer Submit Saved data Salesforce.com
  13. 13. Salesforce-PloneFormGen Adapter
  14. 14. Salesforce-PloneFormGen Adapter
  15. 15. Passing preset values via hidden fields
  16. 16. Lead Conversion
  17. 17. E-commerce options http://www.fickr.com/photos/danielbroche/2258988806/sizes/m/
  18. 18. Standalone 3rd-party tool (GiftTool, Network for Good, etc.)
  19. 19. Direct integration with Salesforce.com (Payment Connect)
  20. 20. Direct integration with Salesforce.com (Payment Connect)
  21. 21. Handcode it in Python
  22. 22. GetPaid for Plone
  23. 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. 24. Payment Processor Choice? • Authorize.net • PayPal • Paymentech • Google Checkout • Ogone • Payflo Pro • DPS PXPay • others? • ClickandBuy
  25. 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. authorize.net) • 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. 26. PCI compliance • The credit card industry has some strict standards for sites that deal with credit card information. https://www.pcisecuritystandards.org/ • 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. 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. 28. Installing GetPaid [buildout] parts = … getpaid … [getpaid] recipe = getpaid.recipe.release==1.9 addpackages = getpaid.authorizedotnet getpaid.formgen getpaid.SalesforcePloneFormGenAdapter getpaid.SalesforceOrderRecorder
  29. 29. Installing GetPaid
  30. 30. Configuring GetPaid
  31. 31. Donatable Types
  32. 32. Payment Options
  33. 33. Payment Processor Settings
  34. 34. One-page member signup
  35. 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) Salesforce.com
  36. 36. GetPaid adapter • getpaid.formgen » Adds billing fields to form » Adds item(s) to cart » Initiates checkout
  37. 37. getpaid.formgen Configuration Marking an item as a “variable amount donation”
  38. 38. getpaid.formgen Configuration Marking an item as a “variable amount donation”
  39. 39. getpaid.formgen Configuration Adding the action adapter
  40. 40. getpaid.formgen Configuration Selecting the payable object
  41. 41. getpaid.formgen Automatically adds billing fields
  42. 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. 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. 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 Salesforce.com
  45. 45. getpaid.SalesforcePloneFormGenAdapter Adding the adapter
  46. 46. getpaid.SalesforcePloneFormGenAdapter Configuring the object type
  47. 47. getpaid.SalesforcePloneFormGenAdapter Configuring the field mapping
  48. 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. 49. Making events payable
  50. 50. Payable events
  51. 51. Events in shopping cart
  52. 52. Events checkout
  53. 53. getpaid.SalesforceOrderRecorder • Map fields to Salesforce for standard GetPaid checkout (no PloneFormGen involved)
  54. 54. Lessons/Observations
  55. 55. Don't underestimate the effort needed to learn new processes and tools
  56. 56. Don't assume an existing product does everything like you want
  57. 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. 58. Testing integrations with third-party tools is hard
  59. 59. Testing integrations with third-party tools is hard
  60. 60. Making integrations configurable enough to be reusable increases complexity significantly
  61. 61. Warning • May not be suitable for use under high load. (API calls to Salesforce.com are not transaction-aware, so ConflictErrors could lead to inconsistencies.)
  62. 62. The future http://www.fickr.com/photos/locationscout/3595249806/
  63. 63. More automated form creation for the simple donation use case
  64. 64. Integration with RSVP for Salesforce
  65. 65. Profile management
  66. 66. Get involved • Plone-Salesforce http://groups.google.com/group/plonesf • GetPaid http://code.google.com/p/getpaid/
  67. 67. Thanks to... • Groundwire • Andrew Burkhalter • Jesse Snyder • Brian Gershon • Rob Larubbio • Meyer Memorial Trust • Everyone who has worked on GetPaid • Many others :)

×