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

Reply via email to