dat*_*.io 11 magento e-commerce
这是自从我开始为我的网上商店测试Magento以来我发现的最重要的问题之一.毫无疑问,在付款确认之前对空车的销售绝对不必要且有害,不幸的是,Magento确实如此.
如果用户选择PayPal(网站标准)付款方式,并且由于某种原因在PayPal付款页面上点击"返回xxxx"(您的PayPal商家名称)而不付款,PayPal会将用户重定向回http:// www. example.com/checkout/cart/,现在是一个EMPTY购物车.
我认为应该在付款确认/ PayPal IPN之后将购物车清空,而不是之前的任何一点.
即使用户想要再次继续,他或她也会厌倦搜索并再次添加所有产品,并且很可能只是离开.
知道如何解决这个问题吗?
小智 6
这对我有用:
文件: ~/app/code/core/Mage/Checkout/controllers/OnepageController.php
替换这个:
$this->getOnepage()->getQuote()->save();
/**
* when there is redirect to third party, we don't want to save order yet.
* we will save the order in return action.
*/
if (isset($redirectUrl)) {
$result['redirect'] = $redirectUrl;
}
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
Run Code Online (Sandbox Code Playgroud)
有了这个:
/**
* when there is redirect to third party, we don't want to save order yet.
* we will save the order in return action.
*/
if (isset($redirectUrl)) {
$result['redirect'] = $redirectUrl;
$this->getOnepage()->getQuote()->setIsActive(1) ;
}
$this->getOnepage()->getQuote()->save();
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
Run Code Online (Sandbox Code Playgroud)
Flo*_*his -2
你的问题在于Mage_Checkout_OnepageController::saveOrderAction()行为方式。
更具体:打开app/code/core/Mage/Checkout/controllers/OnepageController.php
$this->getOnepage()->getQuote()->save();//this makes the cart empty (sets the quote as converted to order)
if (isset($redirectUrl)) {
$result['redirect'] = $redirectUrl;
}
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
}
Run Code Online (Sandbox Code Playgroud)
您可以替换最后一部分:
$this->getOnepage()->getQuote()->save();//....
Run Code Online (Sandbox Code Playgroud)
和:
if (isset($redirectUrl)) {
$result['redirect'] = $redirectUrl;
$this->getOnepage()->getQuote()->setIsActive(1) ;
}
$this->getOnepage()->getQuote()->save();
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
Run Code Online (Sandbox Code Playgroud)