[ 
https://issues.apache.org/jira/browse/OFBIZ-896?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12493223
 ] 

Andrew Zeneski commented on OFBIZ-896:
--------------------------------------

I am in the process of pulling out all the code which stores the payment 
processing information and putting them into their own service which will 
require new transaction. I agree with David this is the best way to go. 

This was already done for authorizations and somewhat for captures. However, 
there was still a lot of updating done in the capture method (now being moved 
to processCaptureSplitPayment; which is related to partial captures). 

Releases and refunds have been moved over; I'm in the processing of testing 
this code and will commit it when it is finished.

> Important issue with rollbacks on payment processing
> ----------------------------------------------------
>
>                 Key: OFBIZ-896
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-896
>             Project: OFBiz (The Open for Business Project)
>          Issue Type: Bug
>          Components: accounting, order
>            Reporter: Jacopo Cappellato
>         Assigned To: Andrew Zeneski
>            Priority: Critical
>
> From a recent thread on the dev list:
> ===========================================
> I really think I'll need (at least) some help to fix this; here are some more 
> details.
> I don't think that we can fix this by requiring a new transaction.
> Let's focus for example the capturing process (but the same issue is present 
> in the auth/release/etc... transactions):
> a) the main method involved is PaymentGatewayServices.capturePayment(...)
> b) this method internally pulls the service name to use to process the 
> payment from the store settings and it runs the service requiring a new 
> transaction (see line 1413)
> c) the above method, "capturePayment", is called by other methods of the 
> PaymentGatewayServices class, for example by the captureOrderPayments 
> service/method (see line 1147)
> The issue is that the captureOrderPayments method, after that the call to the 
> capturePayment method is (succesfully) done (i.e. the funds have been 
> captured) performs other logics, and for example a few lines below it calls 
> another method that could fail and if it happens it returns an error causing 
> a rollback (line 1166).
> Of course the rollback will not rollback the remote transaction.
> The problem is more complex than this, since, even if the 
> captureOrderPayments service will return a success, there are other services 
> triggered by it that could fail; this would be partially addressed requiring 
> a new transaction for the captureOrderPayments service though.
> Ideally, but I know it is not possible, nothing should happen (that could 
> fail) after the transaction has been issued
> How can we fix this?
> Jacopo
> David E. Jones wrote:
> >
> > Jacopo,
> >
> > Yeah, that's a bit of a scary bug. What should probably happen is that the 
> > code that stores information related to the credit card transaction should 
> > be separated from everything else. If it is in it's own service already 
> > then that service can just have the require-new-transaction attribute set 
> > to true. If not, then it should be split out into its own service with that 
> > attribute set so that it runs independently (in terms of success/failure) 
> > of the other stuff going on.
> >
> > This is a pretty big issue... Is something you're looking at working on? If 
> > you're short on time and could write up whatever details you've found we 
> > can probably get one of our guys on it.
> >
> > -David
> >
> >
> > On Apr 13, 2007, at 10:55 AM, Jacopo Cappellato wrote:
> >
> >> I think there is an important issue with online payment processors in 
> >> OFBiz.
> >> I'm not going into the details, because I think it is better to discuss 
> >> this issue in general, but this is something that really happened at least 
> >> with one of my customers.
> >>
> >> When an order payment is processed (authorized/captured), in OFbiz a chain 
> >> of events/service calls (ecas etc...) is triggered.
> >> Everything is wrapped inside one transaction so, if something goes wrong, 
> >> the rollback brings everything back to the original situation.
> >> Unfortunately, if the error happens after the online transaction has been 
> >> issued, OFbiz will not know that the payment has been authorized and/or 
> >> captured.
> >>
> >> What is in your opinion the best way to handle this scenario?
> >>
> >> Jacopo
> >>
> >

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to