magento将结账付款重定向到第三方网关

时间:2011-04-20 10:08:07

标签: magento redirect payment gateway

我希望能够允许用户在结帐时选择某个选项, 然后他们将被重定向到他们使用他们的信用信息支付的银行页面, 然后重定向回magento并将订单设置为成功批准或如果不是

则失败

我一直在用magento的代码乱搞几天, 我能够通过单页控制器“破解”重定向,然后回来, 但我无法将订单状态从该控制器更改为“已批准”

我在'saveorder action'中在控制器中基本上做了什么: - 检查用户选择的付款方式 - 如果是我需要的那个,请将用户发送到要支付金额的银行页面 - 然后从该页面返回到检查返回状态的php页面,如果成功重定向到onepage / success /,如果没有,则重定向到onepage / failure

一切都很好但是我怎样才能改变订单状态?

我尝试了这个链接中的内容,但这只适用于旧版本的Magento http://blog.chapagain.com.np/magento-how-to-change-order-status-programmatically/

感谢

3 个答案:

答案 0 :(得分:2)

请注意,成功页面不一定会将付款状态更改为已批准。这是因为不同的付款方式可能会在不同时间批准付款。例如,Paypal在有机会处理之前不会批准付款。

您的CC公司是否提供可用于更新状态的回调?如果是这样,我建议使用Paypal模块作为模板来处理这个问题(等待回调,更新订单状态)。如果没有,也许可以使用cronjob及其API来检查付款状态。

总的来说,不要依赖客户在付款后访问某个页面,因为在很多情况下情况并非如此。

希望有所帮助!

谢谢, 乔

答案 1 :(得分:2)

我从paypal支付成功后解决了这个问题。您可以将订单状态流程更改为可下载产品,

转到app\code\core\Mage\paypal\controllers\StandardController.php 并在付款后用我的代码发送邮件成功和订单状态替换代码。

public function successAction() 
{ 
    $session = Mage::getSingleton('checkout/session'); 
    $session->setQuoteId($session->getPaypalStandardQuoteId(true)); 
    Mage::getSingleton('checkout/session')->getQuote()->setIsActive(false)->save(); 

    $session->setPaypalStandardQuoteId($session->getQuoteId()); 
    $order = Mage::getModel('sales/order'); 
    $order->load(Mage::getSingleton('checkout/session')->getLastOrderId()); 
    $state = Mage_Sales_Model_Order::STATE_PROCESSING; 
    $order->setState($state); 
    $order->setStatus('processing'); 
    $order->sendNewOrderEmail(); 
    $order->save(); 
    $this->_redirect('checkout/onepage/success', array('_secure'=>true)); 
} 

答案 2 :(得分:1)

更改订单状态(magento 1.5)

$order->setStatus(Mage_Sales_Model_Order::STATE_COMPLETE);
$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE);
$order->save();