Magento 定期配置文件和捆绑项目

Magento 定期配置文件和捆绑项目,magento,paypal,paypal-subscriptions,Magento,Paypal,Paypal Subscriptions,我有一个用户每月付费的订阅服务,所以我设置了一个带有重复配置文件的“虚拟产品”。同时,我想拥有它,这样他们就可以添加不同的一次性产品。为了实现这一点,我尝试用所有不同的一次性产品创建一个“捆绑产品”,并将“虚拟产品”添加到“捆绑产品”中 然而,当我去结帐时,它说“名义项目只能单独购买。若要继续,请从报价中删除其他项目。”我如何允许人们订阅服务并同时购买产品 注意:我使用Paypal网站Payment Pro作为我的商户帐户。不幸的是,这是Mage_Paypal代码中的硬编码限制 您可以在Mage

我有一个用户每月付费的订阅服务,所以我设置了一个带有重复配置文件的“虚拟产品”。同时,我想拥有它,这样他们就可以添加不同的一次性产品。为了实现这一点,我尝试用所有不同的一次性产品创建一个“捆绑产品”,并将“虚拟产品”添加到“捆绑产品”中

然而,当我去结帐时,它说“名义项目只能单独购买。若要继续,请从报价中删除其他项目。”我如何允许人们订阅服务并同时购买产品


注意:我使用Paypal网站Payment Pro作为我的商户帐户。

不幸的是,这是Mage_Paypal代码中的硬编码限制

您可以在
Mage\u Sales\u Model\u Service\u Quote::submitAll()
中看到它执行
submitnamalitems()
,其中包含:

    $this->_validate();
    $this->_submitRecurringPaymentProfiles();
    $this->_inactivateQuote();
    $this->_deleteNominalItems(); 
因此,它在提交标称项目后终止购物车。我不太清楚它为什么会这样,但我认为这是由于贝宝创建订阅的方式造成的

下面是一段代码,用于防止将项目添加到包含
Mage\u Sales\u Model\u Quote::addItem()
中的名称的购物车中:

目前,我正在为其他支付提供商使用Magento的重复配置文件(这是一项后台任务:),可以同时签出名义(即订阅)和真实产品,但这确实让它变得更加复杂


如果这是一个大问题,应该可以重构Mage_Paypal代码来实现这一点,但这是一个复杂的任务,无法在一篇文章中真正回答。

以下是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仍在处理多个标称产品,但是,使用这些产品的风险由您自己承担。

评论不会影响您的问题,但编辑会影响您的问题。如果您尚未解决此问题,请添加其他信息,如果您已经解决,请添加答案。谢谢。你用的是什么版本的Magento?现在,我用的是最新版本的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.'));
}