Magento过滤付款方式基于运输方法



我在Magento中开发了观察者方法,用于根据运输方法过滤支付方法。这是我的方法:

class Devpassion_Paymentfilter_Model_Observer {
public function paymentMethodIsActive(Varien_Event_Observer $observer) {
    $event           = $observer->getEvent();
    $method          = $event->getMethodInstance();
    $result          = $event->getResult();
    $carriers = Mage::getSingleton('shipping/config')->getActiveCarriers();
        foreach ($carriers as $carrier) {
     //       $carrierCode = $carrier->getId();
            if ($carrier->getId() == 'flatrate' ){
                    if($method->getCode() == 'checkmo' OR $method->getCode() == 'paypal_standard'){
                        $result->isAvailable = true;
                    }else{
                        $result->isAvailable = false;
                    }
                }
             }
    }
}

这样做的结果是,对于所有运输方法,此过滤器为真。所以对于所有的运输方法贝宝和钱支票显示和其他所有不。

请告诉我如何设置此条件以仅过滤一种特定的运输方法

public function paymentMethodIsActive($observer)
    {
        /**
         * @var $quote Mage_Sales_Model_Quote
         */
        $quote  = $observer->getEvent()->getQuote();
        $method = $observer->getEvent()->getMethodInstance();
        $result = $observer->getEvent()->getResult();
        $shipping_method = $quote->getShippingAddress()->getShippingMethod();
        if ($shipping_method == 'flatrate_flatrate' && $method->getCode() == 'checkmo') {
            $result->isAvailable = false;
        }
    }