Повторяющийся профиль и связанный элемент - PullRequest
8 голосов
/ 23 июля 2010

У меня есть служба подписки, за которую люди платят ежемесячно, поэтому я настроил «Виртуальный продукт» с постоянным профилем. В то же время, я хочу, чтобы они могли добавлять разные одноразовые продукты. Для этого я попытался создать «Связанный продукт» со всеми различными одноразовыми продуктами и добавить «Виртуальный продукт» к этому «Связанному продукту».

Однако, когда я иду к оформлению заказа, он говорит: «Номинальный предмет можно приобрести только отдельно. Чтобы продолжить, удалите другие элементы из цитаты ». Как я могу позволить людям подписаться на услугу и одновременно покупать продукты?

Примечание: Я использую PayPal Website Payment Pro в качестве своего торгового счета.

Ответы [ 2 ]

3 голосов
/ 03 октября 2012

Вот комментарий от кода 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 голосов
/ 20 июня 2011

К сожалению, это жестко ограниченное ограничение в коде 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, чтобы сделать это, но это сложная задача, на которую невозможно ответить в одном посте.

...