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.

eZ debug

Timing: Jan 19 2025 00:25:54
Script start
Timing: Jan 19 2025 00:25:54
Module start 'layout'
Timing: Jan 19 2025 00:25:54
Module start 'content'
Timing: Jan 19 2025 00:25:54
Module end 'content'
Timing: Jan 19 2025 00:25:54
Script end

Main resources:

Total runtime0.7418 sec
Peak memory usage4,096.0000 KB
Database Queries46

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0076 588.4063152.6875
Module start 'layout' 0.00760.0048 741.093839.5234
Module start 'content' 0.01240.7279 780.6172487.5234
Module end 'content' 0.74030.0014 1,268.140612.0625
Script end 0.7417  1,280.2031 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00390.5194160.0002
Check MTime0.00150.2009160.0001
Mysql Total
Database connection0.00110.145210.0011
Mysqli_queries0.668190.0635460.0145
Looping result0.00050.0730440.0000
Template Total0.676591.220.3383
Template load0.00240.324720.0012
Template processing0.674190.879920.3371
Template load and register function0.00010.013710.0001
states
state_id_array0.00440.598410.0044
state_identifier_array0.00270.364520.0014
Override
Cache load0.00210.2828470.0000
Sytem overhead
Fetch class attribute can translate value0.00160.220710.0016
Fetch class attribute name0.00080.103020.0004
XML
Image XML parsing0.00060.085610.0006
class_abstraction
Instantiating content class attribute0.00000.000520.0000
General
dbfile0.00580.7826160.0004
String conversion0.00000.001540.0000
Note: percentages do not add up to 100% because some accumulators overlap

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1node/view/full.tplfull/forum_topic.tplextension/sevenx/design/simple/override/templates/full/forum_topic.tplEdit templateOverride template
1content/datatype/view/ezimage.tpl<No override>extension/sevenx/design/simple/templates/content/datatype/view/ezimage.tplEdit templateOverride template
1content/datatype/view/ezxmltext.tpl<No override>extension/community_design/design/suncana/templates/content/datatype/view/ezxmltext.tplEdit templateOverride template
10content/datatype/view/ezxmltags/paragraph.tpl<No override>extension/ezwebin/design/ezwebin/templates/content/datatype/view/ezxmltags/paragraph.tplEdit templateOverride template
9content/datatype/view/ezxmltags/line.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/line.tplEdit templateOverride template
1print_pagelayout.tpl<No override>extension/community/design/community/templates/print_pagelayout.tplEdit templateOverride template
 Number of times templates used: 23
 Number of unique templates used: 6

Time used to render debug report: 0.0001 secs