Magento - 根据标准动态禁用付款方式

sul*_*man 4 payment module magento

我有一个非常简单的模块,允许客户"在账户上购买".该模块并没有做任何特别的事情(它只是从Cash On Delivery模块修改过来.)

问题是我只想向登录的客户提供这种付款方式.

到目前为止我的模块看起来像这样:

BuyOnAccount/
    etc/
        config.xml
        system.xml
    Model/
        PaymentMethod.php
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

配置和系统xml文件包含通常的事情(如果您想查看代码我会编辑,请告诉我)

所以基本上我需要在用户没有登录时禁用该模块(但显然只适用于当前的客户会话!)

有任何想法吗?

谢谢

Nic*_*ick 6

您只需在支付模型中添加一种方法即可isAvailable(Mage_Sales_Model_Quote $quote)返回a bool.例如,在您的情况下,您可以添加以下内容:

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

Mage_Payment_Model_Method_Free付款方式附带Magento的是,采用这种付款方式的一个例子-它只会如果篮总为零显示.