2012-01-05 23 views
4

我有一个非常简单的模块,允许客户“按账户购买”。该模块没有做任何特别的事情(它只是从一个货到付款模块进行了修改)。Magento - 根据标准动态禁用付款方式

问题是我只想提供这种付款方式来登录客户。

到目前为止,我的模块如下所示:

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文件包含常规的诸如此类的事情(请让我知道如果你想看到的代码,我会编辑)

因此,基本上我需要禁用该模块,如果用户没有登录(但显然只为当前客户会话!)

任何想法?

感谢

回答

5

你可以只添加一个方法来你叫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的是,采用这种付款方式的一个例子 - 它只会显示,如果篮下总为零。

+0

完美!非常感谢 – sulman 2012-01-05 15:28:42