eZCrew: Request on guidelines for development future payment gateway adoptions

Author Message

Björn Dieding@xrow.de

Thursday 24 June 2004 7:38:02 am

trunk\kernel\shop\paymentgateways\doc\examples\paypal\paypalgateway.html

Hi,

I just found out that you published a payment gateway abstraction interface.

Well, I have the following questions adn noticed possible problems. I guess others might have them too. It would be nice if you could answer them.

1.) Current Development
trunk\kernel\shop\paymentgateways\doc\examples\paypal\paypalgateway.html
As mentioned in the doc from above all gateway adoptions have to be placed inside an extension.
Following questions resolve out of this issue:
- Who is suppossed to manage the gateways?
- Will the extension ezpaypal reside in the trunk or on the pubsvn? Can you place it there?
- When should the community start to bring up implementations upon this interface layout? Excluding/including ezpaypal?

2.) Future Development
Payment gateways have different abilities.
They can be used for single item purchases, subscriptions, refunds, payouts
Some payment gateways also have capabilities that have a higher interact with the system like AVS (Address Verifiction Service).

Important:
At current design the eZPaypalGateway includes code that makes it only useable with eZOrders (single item purchase only).
I would highly recommend introducing a layout that can reflect those ablilities.

- How do you think should those adoptors reflect those capabilities/abilities of payment gateways?
- How will eZ handle handle those issues in the future?

Current state:
eZPaymentGateway
(parent)->eZRedirectGateway
(parent)->(parent)->eZPaypalGateway (single Item only)

My Suggestion could look like this:
eZPaymentGateway
(parent)->eZAuthorizeNETGateway ( is very abstract, but powerfull )
(parent)->eZPaypalGateway ( is very abstract, but powerfull )
-hold definitions does the actual/avialable processing near to the gateway.
-e.g Paypal has SingleItem,Subcription,Refund and others

eZGatewayProcessing (processes and action like bill customer, signup customer(for subcriptions) )
(parent)->eZSOAPGatewayProcessing
(parent)->(parent)->eZAuthorizeNETSingleItemProcessing ( single Item )
(parent)->(parent)->eZAuthorizeNETSingleItemProcessing ( subscription unmanaged! )
(parent)->(parent)->eZPaypalRefundProcessing ( refunding )
(parent)->eZRedirectGatewayProcessing
(parent)->(parent)->eZPaypalSingleItemProcessing ( single Item )
(parent)->(parent)->eZPaypalSubcriptionProcessing ( subscription managed! - IPN )

eZPaymentGateway::execute() <- Gets data about type of process and selceced Gateway

Processing Callbacks:
eZPaymentGatewayCallback <- Gets data about the seleced Gateway gives it to eZPaymentGateway to find the callback type ( single Item ) and it will be processed by e.g. eZPaypalSingleItemProcessing

Conclusion:
I do not see how the current design does respect other needs of a payment gateway, it should be changed. I think we will double of code if we continue like this. If you respect those needs now, you won't have to rewrite lots of code in the future.

Looking for a new job? http://www.xrow.com/xrow-GmbH/Jobs
Looking for hosting? http://hostingezpublish.com
-----------------------------------------------------------------------------
GMT +01:00 Hannover, Germany
Web: http://www.xrow.com/

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.