B-219 Sec-55 Noida, India

How to filter payment method in one page checkout

There are several way to filter payment method in one page checkout:

     By overriding template: app/design/frontend/[interface]/[theme]/template/checkout/onepage /payment/methods.phtml

     By overriding method: Mage_Checkout_Block_Onepage_Payment_Methods::_canUseMethod()
     By overriding method: Mage_Payment_Model_Method_Abstract::isAvailable()
     By overriding method: Mage_Checkout_Block_Onepage_Payment_Methods::getMethods()
     By observing event: payment_method_is_active

Among above methods obviously using event-observer technique is the best way to go.
And here I will be discussing about how to enable the PayPal (Website Standard) method only when current currency is USD.
Suppose a skeleton module(MagePsycho_Paymentfilter) has already been created.

Step 1:

Register the event: ‘payment_method_is_active’ in config.xml.
Add the following xml code in app/code/local/MagePsycho/Paymentfilter/etc/config.xml:


Step 2: Implement the observer model

Create observer file: app/code/local/MagePsycho/Paymentfilter/Model/Observer.php and paste the following code:

     * @category   MagePsycho
     * @package    MagePsycho_Paymentfilter
     * @author     [email protected]
     * @website    http://www.magepsycho.com
     * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
    class MagePsycho_Paymentfilter_Model_Observer {
        public function paymentMethodIsActive(Varien_Event_Observer $observer) {
            $event           = $observer->getEvent();
            $method          = $event->getMethodInstance();
            $result          = $event->getResult();
            $currencyCode    = Mage::app()->getStore()->getCurrentCurrencyCode();
            if( $currencyCode == ‘USD’){
                if($method->getCode() == ‘paypal_standard’ ){
                    $result->isAvailable = true;
                    $result->isAvailable = false;

Step 3:
Go ahead for testing.

(Visited 84 times, 1 visits today)

Leave a reply

You must be logged in to post a comment.