Повторяющийся профиль и связанный элемент
У меня есть услуга подписки, за которую люди платят ежемесячно, поэтому я настроил "виртуальный продукт" с повторяющимся профилем. В то же время, я хочу иметь его, чтобы они могли добавлять разные одноразовые продукты. Для этого я попытался создать " связанный продукт "со всеми различными одноразовыми продуктами и добавить" виртуальный продукт "к этому"связанному продукту".
однако, когда я иду на проверку, он говорит: "номинальный элемент можно приобрести только автономно. Чтобы продолжить, пожалуйста удалите другие элементы из цитаты."Как я могу позволить людям подписаться на услугу и одновременно приобрести продукты?
Примечание: Я использую Paypal Website Payment Pro в качестве своего торгового счета.
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 повторяющиеся профили с не-Paypal способ оплаты) и можно проверить как номинальную (ака подписку), так и реальные продукты одновременно, но это делает его довольно сложным.
если это большое дело, должно быть возможно рефакторировать код Mage_Paypal, чтобы сделать это, но это сложно задача, на которую невозможно ответить в одном сообщении.
вот комментарий от кода Magento:
/** * Временное решение для процесса покупки: слишком опасно покупать более одного номинального элемента * или смесь номинальных и не номинальных предметов, хотя технически это возможно. * * Проблема в том, что в настоящее время он реализуется как последовательная подача номинальная товаров и заказа в один клик. * Это делает логически невозможным процесс покупка failsafe. * Правильное решение состоит в том, чтобы отправлять товары один за другим с подтверждением клиента каждый раз. */
на самом деле вы можете удалить код ниже:
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 по-прежнему обрабатывает несколько номинальных продуктов, однако вы используете это на свой страх и риск.