Magento - динамически отключать способ оплаты на основе критериев - PullRequest
4 голосов
/ 05 января 2012

У меня очень простой модуль, который позволяет клиенту «Покупать на счете». Модуль на самом деле не делает ничего особенного (он был просто изменен из модуля Cash On Delivery.)

Проблема в том, что я хочу предложить этот способ оплаты только зарегистрированным клиентам.

Пока мой модуль выглядит так:

BuyOnAccount/
    etc/
        config.xml
        system.xml
    Model/
        PaymentMethod.php

Содержание файла PaymentMethod.php:

class MyCompany_BuyOnAccount_Model_PaymentMethod extends Mage_Payment_Model_Method_Abstract
{
    protected $_code  = 'buyonaccount';
    protected $_isInitializeNeeded      = true;
    protected $_canUseInternal          = false;
    protected $_canUseForMultishipping  = false;
}

Файлы конфигурации и системные XML-файлы содержат обычные вещи (пожалуйста, дайте мне знать, если вы хотите увидеть код, и я отредактирую)

Так что в принципе мне нужно отключить модуль, если пользователь не вошел в систему (но, очевидно, только для текущей сессии клиента!)

Есть идеи?

Спасибо

1 Ответ

6 голосов
/ 05 января 2012

Вы можете просто добавить к своей модели платежей метод с именем isAvailable(Mage_Sales_Model_Quote $quote), который возвращает bool. Например, в вашей ситуации вы можете добавить что-то вроде:

public function isAvailable($quote = null) {
    $isLoggedIn = Mage::helper('customer')->isLoggedIn();
    return parent::isAvailable($quote) && $isLoggedIn;
}

Способ оплаты Mage_Payment_Model_Method_Free, который поставляется с Magento, является примером метода оплаты, который использует это - он будет отображаться только в том случае, если сумма в корзине равна нулю.

...