J L*_*Lee 8 paypal magento paypal-subscriptions
我有一个人们每月支付的订阅服务,因此我设置了一个带有重复配置文件的"虚拟产品".与此同时,我想拥有它,以便他们可以添加不同的一次性产品.为了实现这一点,我尝试使用所有不同的一次性产品创建"捆绑产品",并将"虚拟产品"添加到"捆绑产品".
但是,当我去结账时,它说"标称商品只能单独购买.要继续,请从报价中删除其他项目."我如何允许人们同时订阅服务并购买产品?
注意:我使用Paypal网站付款专业版作为我的商家帐户.
不幸的是,这是 Mage_Paypal 代码中的硬编码限制。
您可以看到Mage_Sales_Model_Service_Quote::submitAll()
它执行的submitNominalItems()
内容包含:
$this->_validate();
$this->_submitRecurringPaymentProfiles();
$this->_inactivateQuote();
$this->_deleteNominalItems();
Run Code Online (Sandbox Code Playgroud)
因此,它会在提交名义项目后杀死购物车。我不太确定为什么会这样做,但我认为这是由于 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.'));
}
Run Code Online (Sandbox Code Playgroud)
我目前正在为其他支付提供商使用 Magento 的循环配置文件(它是一个后台任务:使用非 Paypal 付款方式的 Magento 循环配置文件),并且可以同时结帐名义产品(又名订阅)和真实产品时间,但这确实使它变得更加复杂。
如果这是一件大事,应该可以重构 Mage_Paypal 代码来做到这一点,但这是一项复杂的任务,无法在一篇文章中真正解决。