Magento付款不成功返回网站时清空购物车的修复方法

通过清心醉

Magento付款不成功返回网站时清空购物车的修复方法

当用户付款不成功或者取消订单返回网站时,购物车里面的产品已经被清空了,如果是客户主动清除的还好,但是如果是操作失误的原因而未能付款,客户又得重新查找商品,如果商品过多客户没耐心找产品直接走人,那对客源可是一种很大的流失。

Magento是判断如果为第三方的网关作为支付工具的话直接save quote。$this->getOnepage()->getQuote()->save();
 
修复方法是,判定如果页面转向第三方支付网关如paypal则不保存quote,这样就不会清空购物车;
打开:app/code/core/Mage/Checkout/controllers/OnepageController.php文件
 
找到这段代码 (约624-631行)
 
$this->getOnepage()->getQuote()->save();
       
if (isset($redirectUrl))
{
$result[‘redirect’] = $redirectUrl;
}
 
修改为:
 
//$this->getOnepage()->getQuote()->save();
       
if (isset($redirectUrl))
{
$result[‘redirect’] = $redirectUrl;
}
else
{
$this->getOnepage()->getQuote()->save();
}
然后登陆后台,
选择:系统-》工具-》编译-》运行编译过程。(记得打开编译哦,编译后关了,否则安装插件会报错)
尝试了添加商品到购物车,跳转到PAYPAL的时候故意关闭全部网页,返回时一样保留了购物车,由于是测试,要考虑到订单完成时是否会对购物车的商品进行清除,用

Check / Money order付款方式测试,订单完成时是正常的。

关于作者

清心醉 administrator

2 条评论

mimi发布于4:16 下午 - 9月 24, 2014

这样的确是对的,但是有个很大很大的bug.reorder的时候,会把订单重复添加。比喻说本来是有1个鞋子,2个帽子的,改代码如你后,会变得有2个鞋子,4个帽子。

    清心醉发布于8:29 下午 - 9月 24, 2014

    不知道你用的版本是多少? 1.72? 1.8.0? 还是1.9.1?
    我是以1.8的版本内做测试,只是测试如果支付不成功时购物车数量被清空,没注意对重新排序后对订单的问题.
    我在测试的时候,是以空帐号的PAYPAL进行测试付款失败,然后重新返回站点,查看购物车的数量再使用支票形式进行支付,结果是可以正常支付的,产品数量也是正常的.
    至于这问题,晚点我具体再试试.

发表评论

如果喜欢作者的文章,您可以打赏给作者:

TRC20(虚拟货币):


ERC20(虚拟货币):


Bitcoin(BTC):