首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结帐时总是重新添加优惠券。

结帐时总是重新添加优惠券。
EN

Stack Overflow用户
提问于 2017-03-16 15:59:38
回答 1查看 809关注 0票数 3

我遇到了下面的错误

  1. 将产品添加到购物车中
  2. 应用优惠券代码
  3. 删除优惠券代码
  4. 优惠券代码不再显示/删除成功
  5. 退房
  6. 继续计费和发货步骤
  7. 坐马车回去
  8. 步骤2的优惠券代码再次激活
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-16 16:15:24

它似乎是CE 1.9中的一个bug

在Mage_Checkout_CartController::couponPostAction()中有一个新的会话值集

代码语言:javascript
复制
$this->_getSession()->setCartCouponCode($couponCode);

恢复Mage_Checkout_Model_Type_Onepage::_setCartCouponCode()中的优惠券代码。

代码语言:javascript
复制
protected function _setCartCouponCode()
{
    if ($couponCode = $this->getCheckout()->getCartCouponCode()) {
        $this->getQuote()->setCouponCode($couponCode);
    }
    return $this;
}

我通过事件/观察者解决了这个问题。

代码语言:javascript
复制
    <events>
        <controller_action_predispatch_checkout_cart_couponPost>
            <observers>
                <remove_session_coupon_code>
                    <type>singleton</type>
                    <class>yourmodule/observer</class>
                    <method>removeCoupon</method>
                </remove_session_coupon_code>
            </observers>
        </controller_action_predispatch_checkout_cart_couponPost>
    </events>

以及:

代码语言:javascript
复制
public function removeCoupon(Varien_Event_Observer $observer)
{
    $controller = $observer->getControllerAction();
    if ($controller->getRequest()->getParam('remove') == 1) {
        Mage::getSingleton("checkout/session")->unsetData('cart_coupon_code');
    }
    return $this;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42839090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档