Hi Vikram, I had a quick look and it looks like getTransactionID() is not a standard eShop method. I assume the error should be somewhere on module side. Additionally you can check EXCEPTION_LOG.txt file for possible more information. Changing iDebug constant in confi.inc.php to -1 also could help in this case.
Regards Tomas Liubinas -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Vikram Vaswani Sent: Monday, June 15, 2009 8:45 PM To: [email protected] Subject: Re: [oxid-dev-general] Urgent question on paymentgateway integration Hi Tomas and others, Despite many efforts, I'm still not able to get this to work. Here's what I'm doing: 1. In my oxPaymentGateway::executePayment(), I am generating a URL string to alertpay.com and redirecting the user to that site. The URL string is of the form: https://www.alertpay.com/PayProcess.aspx?ap_purchasetype=item-goods& ap_merchant=XXX&ap_currency=GBP&ap_quantity=1 &ap_returnurl=http%3A%2F%2Fmydomain.com%2Findex.php%3Fcl%3Dthankyou%26sid%3Ded2aa7c3716e0943139d2aafee783ad6& ap_itemname=Shopping+Cart&ap_amount=10.19&ap_cancelurl= &apc_1=ed2aa7c3716e0943139d2aafee783ad6 Notice that I am passing the SID as part of the return URL. 2. Now, once the user completes the payment process on alertpay.com, he is redirected back to: http://mydomain.com/index.php?cl=thankyou&sid=ed2aa7c3716e0943139d2aafee783ad6 However, this presents the index page with the message 'Function getTransactionID not defined (thankyou)'. Any idea what I'm doing wrong? 3. Can you suggest what should be the URL I should direct to for these two cases: - the user cancels the payment on alertpay.com - the user's payment fails due to incorrect card details Thanks for your help - I'm a bit confused by the above situation so would appreciate your advice. Vikram Tomas Liubinas wrote: > Hi Vicram, > > http://domain/index.php?&cl=thankyou looks ok (index.php?cl=thankyou to be > precise). One of the reasons it redirects to start page could be empty > session basket object. Try not to empty basket in your module. I aslo would > suggest adding sid= param to your url in this case. > > > Regards > Tomas Liubinas > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Vikram Vaswani > Sent: Monday, June 15, 2009 5:45 PM > To: [email protected] > Cc: Dainius Bigelis > Subject: Re: [oxid-dev-general] Urgent question on paymentgateway integration > > Hi all > > Another question which I am struggling with. One payment gateway > requires me to forward the user to a separate site where the user can > enter the card information. I have managed to get this to work by > setting up a redirection in the executePayment() method. > > However, the gateway has asked for a "return URL" to which it will > redirect the user once the payment process is complete (whether > successful or not). I guess this return URL should be the 'thank you' > page. I'm not able to figure out how to do this ie. what is the URL I > should specify on the payment site? > > Note: I tried using http://domain/index.php?&cl=thankyou, but that > doesn't work, it simply sends me back to the index page. Any ideas would > be welcome. > > Vikram > > Arvydas wrote: >> Explanation how everything works when user clicks button on last order >> step: >> >> 1. Order::execute(): >> - checks if all checkboxes (agb, customer info) were marked; >> - checks if session user is available; >> - creates OxOrder instance; >> >> 2. OxOrder::validateStock(): >> - checks if its allowed to order items stored in basket; >> - if some problems with stock - oxOutOfStockException >> exception is thrown; >> >> 3. OxOrder::finalizeOrder(): >> - copies user data to order (OxOrder::_setUser()); >> - copies basket data to order (OxOrder::_loadFromBasket()); >> - copies payment info to order (OxOrder::__setPayment()); >> - stores order to db (OxOrder::save()); >> - executes payment gateway (OxOrder::_executePayment()): >> * creates payment gateway instance; >> * executes payment gateway >> (OxPaymentGateway::executePayment()); >> * if gateway execution fails >> (OxPaymentGateway::executePayment() returns FALSE): >> - deletes order (OxOrder::delete()); >> - checks if OxPaymentGateway::getLastError() returns >> error - if found - returns it; >> - checks if OxPaymentGateway::getLastErrorNo() >> returns error number - if found - returns it; >> - if no error info was found - returns "2"; >> * if gateway execution succeded - returns TRUE; >> - if payment gateway returns something else than TRUE - stops >> order execution and returns its value; >> - if payment gateway returns TRUE: >> * sets order status to OK (OxOrder::_setOrderStatus()); >> * updates shop stocks (OxOrder::_updateStock()); >> * substracts wishlists/noticelists >> (OxOrder::_updateWishlist()/OxOrder::_updateNoticeList()); >> * sends order email to user and shop owner >> (OxOrder::_sendOrderByEmail()) and returns email sending state. >> 4. Order::_getNextStep(): >> - takes value returned by OxOrder::finalizeOrder(), so here >> you can manipulate with value returned by payment >> gateway or email sender. >> Standard values returned by OxOrder::finalizeOrder() are: >> * 0 - order email sending problems - redirects to >> "thankyou?mailerror=1"; >> * 1 - order email was successfully sent - redirects to >> "thankyou"; >> * 2 - problems with payment gateway - error happened or >> something, but no error info provided >> >> (OxPaymentGateway::getLastError()/OxPaymentGateway::getLastErrorNo() >> gave no response) - >> redirects to "payment?payerror=2" >> * 3 - means must be kept on save order step; >> * custom codes provided by user modules: >> - numeric value and > 3 - redirects to >> "payment?payerror="._ERROR_CODE_ >> - is NOT numeric - redirects to >> "payment?payerror=-1&payerrortext="._ERROR_TEXT_RETURNED_BY_PAYMENT_GATEWAY_; >> >> >> >> >>> One question: if a transaction is approved by the payment gateway, it >>> normally returns an approval code. How do I transfer this approval >>> code from the oxPaymentGateway class to the 'order successful' screen? >> Fastest solution: >> >> - write a module for OxPaymentGateway::executePayment()) which writes >> order approval code to session (e.g. >> OxSession::setVar('viOrderApprovalCode')); >> - write a getter for Thankyou e.g. getOrderApprovalCode, which returns >> approval code (and maybe unsets it >> from session); in template you can call $oView->getOrderApprovalCode(); >> >> if you need to write this code to DB, you should create new field in >> OxOrder table (please use your own prefix for field, >> do not make regular ox, make e.g. vi_approvalcode) and set this field >> value in OxPaymentGateway::executePayment() - >> second parameter is OxOrder instance; >> >> >> >> -------------------------------------------------- >> From: "Dainius Bigelis" <[email protected]> >> Sent: Monday, June 15, 2009 1:13 PM >> To: "Arvydas Vapsva" <[email protected]> >> Subject: Fw: Re: [oxid-dev-general] Urgent question on >> paymentgatewayintegration> >>> -----Ursprüngliche Nachricht----- >>> Von: [email protected] >>> [mailto:[email protected]] Im Auftrag von Vikram >>> Vaswani >>> Gesendet: Montag, 15. Juni 2009 09:30 >>> An: [email protected] >>> Betreff: [!! SPAM] Re: [oxid-dev-general] Urgent question on >>> paymentgateway integration >>> >>> Hi Marco, >>> >>> Thanks for this code, it's quite helpful. I'm making progress with this. >>> >>> One question: if a transaction is approved by the payment gateway, it >>> normally returns an approval code. How do I transfer this approval >>> code from the oxPaymentGateway class to the 'order successful' screen? >>> >>> Vikram >>> >>> Marco Steinhaeuser wrote: >>>> Hey Vikram, >>>> >>>>> 3. Are there any "demo" implementation of a payment gateway module >>>>> which I could use as a starting point? >>>> Check out these extensions for CE: >>>> >>>> http://www.oxid-esales.com/en/exchange/extensions/oxid2ipayment-ce?ter >>>> m=2223 >>>> http://www.oxid-esales.com/en/exchange/extensions/gate2shop-payment-mo >>>> dul-fuer-oxid-ce?term=2223 >>>> >>>> Hope that helps ;) >>>> >>>> Marco >>>> >>>> >>>> >>>> -----Ursprüngliche Nachricht----- >>>> Von: [email protected] >>>> [mailto:[email protected]] Im Auftrag von Vikram >>>> Vaswani >>>> Gesendet: Samstag, 13. Juni 2009 05:30 >>>> An: [email protected] >>>> Betreff: [oxid-dev-general] Urgent question on payment gateway >>>> integration >>>> >>>> Hi >>>> >>>> I am trying to integrate the authorize.net payment gateway into OXID >>>> as a module. Please could someone help with the following questions: >>>> >>>> 1. From the API docs, it seems that the "core" OXID module to extend >>>> for this is oxPaymentGateway. Is this correct? Is it necessary to >>>> also extend oxOrder? >>>> >>>> 2. Currently I am overriding the oxPaymentGateway::executePayment() >>>> method. However, I am not able to understand how to handle payment >>>> errors that occur when performing the transaction. Can someone >>>> suggest the "best practice" way of raising these errors so that they >>>> are visible to the customer on the final checkout page? >>>> >>>> 3. Are there any "demo" implementation of a payment gateway module >>>> which I could use as a starting point? >>>> >>>> Thanks, >>>> >>>> Vikram >>>> _______________________________________________ >>>> dev-general mailing list >>>> [email protected] >>>> http://dir.gmane.org/gmane.comp.php.oxid.general >>>> _______________________________________________ >>>> dev-general mailing list >>>> [email protected] >>>> http://dir.gmane.org/gmane.comp.php.oxid.general >>>> >>> _______________________________________________ >>> dev-general mailing list >>> [email protected] >>> http://dir.gmane.org/gmane.comp.php.oxid.general >> _______________________________________________ >> dev-general mailing list >> [email protected] >> http://dir.gmane.org/gmane.comp.php.oxid.general >> > _______________________________________________ > dev-general mailing list > [email protected] > http://dir.gmane.org/gmane.comp.php.oxid.general > _______________________________________________ > dev-general mailing list > [email protected] > http://dir.gmane.org/gmane.comp.php.oxid.general _______________________________________________ dev-general mailing list [email protected] http://dir.gmane.org/gmane.comp.php.oxid.general _______________________________________________ dev-general mailing list [email protected] http://dir.gmane.org/gmane.comp.php.oxid.general
