在付款确认之前阻止Magento清空购物车?

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)