我们主要将Magento用于交易,并且已经完全通过自定义应用程序重写了前端。我在报价对象上应用优惠券代码(购物车价格规则)时遇到麻烦。优惠券代码似乎被拒绝-setCouponCode不返回任何错误,但是getCouponCode返回空字符串。
我已经通过管理员后端进行交易,从而验证了优惠券代码是否有效。这是下面的代码片段。
有人可以帮助我让报价模型对象接受并应用优惠券代码吗?
函数add_coupon($ shoppingCartId,$ couponcode){
try {
$quoteObj = Mage::getModel('sales/quote')->load($shoppingCartId);
$quoteObj->getShippingAddress()->setCollectShippingRates(true);
$quoteObj->getShippingAddress()->setCouponCode($coupon)
->setTotalsCollectedFlag(true)
->collectTotals()
->save();
} catch (Exception $e) {
return array("status"=>"failed", "message"=>"Error applying coupon.");
}
if ($coupon) {
if (!$coupon == $quoteObj->getCouponCode()) {
return array("status"=>"failed", "message"=>"Coupon code is not valid.");
}
}
return array("status"=>"success");
Run Code Online (Sandbox Code Playgroud)
}
我遇到了同样的问题,发现在将任何项目添加到报价中之前需要调用setCouponCode()。
在您的情况下,它看起来像:
$quoteObj = Mage::getModel('sales/quote')->setCouponCode($coupon)->load($shoppingCartId);
Run Code Online (Sandbox Code Playgroud)