I’ve created a customized module utilizing this tutorial that applies a algorithm for accessible fee strategies, based mostly on transport methodology chosen and transport tackle.
<?xml model="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Occasion/and so on/occasions.xsd">
<occasion title="payment_method_is_active">
<observer title="custom_payment" occasion="CompanyModuleObserverPaymentMethodAvailable" />
</occasion>
</config>
Firm/Module/Observer/PaymentMethodAvailable.php
<?php
namespace CompanyModuleObserver;
use MagentoFrameworkEventObserverInterface;
class PaymentMethodAvailable implements ObserverInterface
{
/**
* payment_method_is_active occasion handler.
*
* @param MagentoFrameworkEventObserver $observer
*/
public operate execute(MagentoFrameworkEventObserver $observer)
{
// you'll be able to substitute "checkmo" together with your required fee methodology code
if($observer->getEvent()->getMethodInstance()->getCode()=="checkmo"){
$checkResult = $observer->getEvent()->getResult();
$checkResult->setData('is_available', false); //that is disabling the fee methodology at checkout web page
}
}
}
The issue is that ‘payment_method_is_active’ occasion is dispatched solely when checkout web page is first loaded.
How can I power to set off this occasion for all fee strategies programmatically?
One thing like:
foreach($paymentMethods as $p){
Mage::dispatchEvent('payment_method_is_active',$args);
}