I need Cash On Delivery payment method when the customer selects a Store Pick up Shipping method during the checkout process. You can do this using “payment_method_is_active“ event:
Create an events.xml file at:
/app/code/Vendor/Modulename/etc/. Add the following code in this file:
1 2 3 4 5 6 |
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="payment_method_is_active"> <observer name="codpaymentdisableregion" instance="Vendor\Modulename\Observer\Paymentactive" /> </event> </config> |
And create Paymentactive.php file at
Vendor/ModuelName/Observer/path. Add the following code in this file:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<?php namespace Vendor\ModuelName\Observer; use Magento\Framework\Event\ObserverInterface; class Paymentactive implements ObserverInterface { protected $_checkoutSession; public function __construct(\Magento\Checkout\Model\Session $checkoutSession) { $this->_checkoutSession = $checkoutSession; } public function execute(\Magento\Framework\Event\Observer $observer) { $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $_session = $objectManager->get('Magento\Checkout\Model\Session'); $method = $observer->getEvent()->getMethodInstance(); $result = $observer->getEvent()->getResult(); $shippingMethod = $_session->getQuote()->getShippingAddress()->getShippingMethod(); if($_session->getQuote()->getShippingAddress()->getShippingMethod()=='storepickup_storepickup' && $method->getCode()=="cashondelivery") { return $result->setData('is_available', true); } if(strpos($shippingMethod,'ups_') !== false && $method->getCode()=="paypal_express") { return $result->setData('is_available', true); } return $result->setData('is_available', false); } } |
You need to replace “storepickup_storepickup” with your shipping code and “cashondelivery” or “ paypal_express” with your payment method code.
Please follow the below methods to get the attribute options...
Update product attribute value programmatically in Magento 2 . [crayon-628780a1b3e98282275553/]...
If you want restrict customer to checkout based on your...
Sometime we need to set html data without load or...
If you want get query string params in controller file,...