残念ながら、これは 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 の Recurring Profiles を使用する作業を行っています (バックグラウンド タスク: Paypal 以外の支払い方法を使用した Magento Recurring Profiles )。時間がかかりますが、かなり複雑になります。
これが大したことであれば、Mage_Paypal コードをリファクタリングしてこれを行うことができるはずですが、これは複雑な作業であり、1 回の投稿で実際に回答することはできません。