循环配置文件和捆绑项目

8
我有一个订阅服务,用户每月付款。因此,我创建了一个带有重复配置文件的“虚拟产品”。同时,我想让他们添加不同的一次性产品。为了实现这一目标,我尝试创建一个“绑定产品”,其中包含所有不同的一次性产品,并将“虚拟产品”添加到该“绑定产品”中。
然而,在结账时,它会显示“名义上的商品只能作为独立购买项出售。要继续,请从报价中删除其他商品。” 如何让用户同时订阅服务和购买产品?
注意:我在使用Paypal网站付款专业版作为我的商户账户。

注释不会提升您的问题,但编辑会。如果您尚未解决此问题,请添加其他信息;如果您已经解决了此问题,请添加答案。谢谢。 - Bill the Lizard
你正在使用哪个版本的Magento? - Jonathan Day
现在,我正在使用最新版本的Magento,当时我提出这个问题的时候...不太确定。 - J Lee
2个回答

3

这里是 Magento 代码中的注释:

/** * 为购买流程提供临时解决方案:购买超过一个标称商品或标称和非标称商品混合购买是太危险的,尽管技术上可行。 * * 问题在于当前实现方式是单击顺序提交标称商品和订单。 * 这使得让购买流程变得不安全成为了逻辑上的不可能任务。 * 正确的解决方案是每次仅提交一个商品并要求客户确认。 */

实际上,您可以删除以下代码:

if ($item->isNominal() && $this->hasItems() || $this->hasNominalItems()) {
    Mage::throwException(Mage::helper('sales')->__('Nominal item can be purchased standalone only. To proceed please remove other items from the quote.'));
}

Magento仍然处理多个名义产品,但是您需自行承担风险。


2
很遗憾,这是Mage_Paypal代码中硬编码的限制。
您可以在 Mage_Sales_Model_Service_Quote::submitAll() 中看到它执行了 submitNominalItems(),其中包含:
    $this->_validate();
    $this->_submitRecurringPaymentProfiles();
    $this->_inactivateQuote();
    $this->_deleteNominalItems(); 

因此,在提交名义上的物品后,它会清空购物车。我不确定为什么会这样,但我认为这是由于Paypal创建订阅的方式导致的。

以下是防止在Mage_Sales_Model_Quote :: addItem()中添加包含名义的物品到购物车的代码:

    if ($item->isNominal() && $this->hasItems() || $this->hasNominalItems()) {
        Mage::throwException(Mage::helper('sales')->__('Nominal item can be purchased standalone only. To proceed please remove other items from the quote.'));
    }

我正在使用Magento的定期档案来处理其他支付提供商(这是一个后台任务:Magento Recurring Profiles with non-Paypal payment method)。在同一时间结帐正常(也称为订阅)和实际产品是可能的,但这会使事情变得更加复杂。如果这很重要,则应该能够重构Mage_Paypal代码以实现此目的,但这是一项复杂的任务,不能在单个帖子中回答。

是的,看起来这个问题没有简单的解决方法 :( - J Lee
嗨,它解决了问题,但它为同一产品创建了两个订单。我们如何解决这个问题? - Shivananda Chary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接