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

69
Integrating Plone with E-Commerce and Relationship Management A Case Study in Integrating PloneGetPaid and Salesforce.com David Glick

description

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

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

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

Integrating Plonewith E-Commerce

and Relationship Management

A Case Study in Integrating PloneGetPaid and Salesforce.com

David Glick

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

Groundwire uses the power of technology to connect people, organizations, and communities working to build a sustainable society.

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

Idaho Conservation League

http://www.fickr.com/photos/sebastian_bergmann/2946960668/

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

Idaho Conservation League

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

Theoryof Change

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

Goal: Tools to help engage

• E-mail newsletter• Online donations• Membership signup• Paid event registration

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

Tools

http://www.fickr.com/photos/lachlanhardy/227715761/

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

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

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

But most of our goals require integrating multiple tools...

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

General strategies

• separation of concerns – small pieces loosely joined

• customization via configuration, not programming

• reusability

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

E-mail newsletter signup

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

Salesforce-PloneFormGen Adapter

Fie lds Ac tion Ada pte rs

SubmitSaved data

Mailer

Salesforce.com

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

Salesforce-PloneFormGen Adapter

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

Salesforce-PloneFormGen Adapter

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

Passing preset values via hidden fields

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

Lead Conversion

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

E-commerce options

http://www.fickr.com/photos/danielbroche/2258988806/sizes/m/

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

Standalone 3rd-party tool

(GiftTool, Network for Good, etc.)

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

Direct integration with Salesforce.com

(Payment Connect)

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

Direct integration with Salesforce.com

(Payment Connect)

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

Handcode it in Python

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

GetPaid for Plone

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

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

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

Payment Processor Choice?

• Authorize.net• Paymentech• Ogone• DPS PXPay• ClickandBuy

• PayPal• Google Checkout• Payflo Pro• others?

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

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)

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

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.

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

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.

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

Installing GetPaid

[buildout]parts = … getpaid

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

addpackages = getpaid.authorizedotnet getpaid.formgen getpaid.SalesforcePloneFormGenAdapter getpaid.SalesforceOrderRecorder

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

Installing GetPaid

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

Configuring GetPaid

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

Donatable Types

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

Payment Options

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

Payment Processor Settings

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

One-pagemember signup

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

One-page member signup, recorded in Salesforce

Form

GetPaid Checkout

Payment Processor

Salesforce.com

1. Order placed(getpaid.formgen)

2. Payment authorization(getpaid.authorizedotnet, etc.)

3. Finance charge event → Info recorded(getpaid.SalesforcePloneFormGenAdapter)

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

GetPaid adapter

• getpaid.formgen» Adds billing fields to form» Adds item(s) to cart» Initiates checkout

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

getpaid.formgen ConfigurationMarking an item as a“variable amount donation”

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

getpaid.formgen ConfigurationMarking an item as a“variable amount donation”

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

getpaid.formgen ConfigurationAdding the action adapter

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

getpaid.formgen ConfigurationSelecting the payable object

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

getpaid.formgenAutomatically addsbilling fields

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

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.

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

GetPaid-PloneFormGen-Salesforce adapter

• (getpaid.SalesforcePloneFormGenAdapter)» Configures field mapping

» Stores form values in session before checkout

» Creates objects in Salesforce when order is financed

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

getpaid.SalesforcePloneFormGenAdapter

Data sources

Salesforce.com

Plone FormGe n Form:Custom felds

Ge tPa id-Sa le s forc e Ada pte r:Confgures feld mapping for both sources

Ge tPa id:Transaction ID, Billing Address, etc.

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

getpaid.SalesforcePloneFormGenAdapter

Adding the adapter

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

getpaid.SalesforcePloneFormGenAdapter

Configuring the object type

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

getpaid.SalesforcePloneFormGenAdapter

Configuring the field mapping

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

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.)

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

Making events payable

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

Payable events

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

Events in shopping cart

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

Events checkout

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

getpaid.SalesforceOrderRecorder

• Map fields to Salesforce for standard GetPaid checkout (no PloneFormGen involved)

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

Lessons/Observations

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

Don't underestimate the effort needed to learn new processes and tools

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

Don't assume an existing product does everything like you want

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

Integrating systems

• Usually you don't need much code, but the challenge is figuring out what it is and where to put it.

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

Testing integrations withthird-party tools is hard

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

Testing integrations withthird-party tools is hard

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

Making integrations configurable enough to be reusable increases complexity significantly

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

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.)

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

The future

http://www.fickr.com/photos/locationscout/3595249806/

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

More automated form creationfor the simple donation use case

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

Integration with RSVP for Salesforce

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

Profile management

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

Get involved

• Plone-Salesforcehttp://groups.google.com/group/plonesf

• GetPaidhttp://code.google.com/p/getpaid/

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

Thanks to...• Groundwire• Andrew Burkhalter• Jesse Snyder• Brian Gershon• Rob Larubbio• Meyer Memorial Trust• Everyone who has worked on GetPaid• Many others :)