Magento 2 - Отключить наложенный платеж на основе cod


Как отключить оплату наложенным платежом в зависимости от наличия наложенного платежа. etc/di.xml

<type name="Magento\OfflinePayments\Model\Cashondelivery">
        <plugin name="cashondeliveryplugin" type="Xxx\Yyy\Plugin\Model\Cashondelivery" sortOrder="10" disabled="false" /> </type> 

Cashondelivery.php

 public function aroundIsAvailable(\Magento\OfflinePayments\Model\Cashondelivery $subject, callable $proceed)
    {
        $result = $proceed();
        $zipCode = $this->_checkoutSession->getQuote()->getShippingAddress()->getPostcode();
        $codAvailability = $this->_pincodeModel->isCODAvailable($zipCode) ? "yes" : "no";
        if ($codAvailability == 'no') {
            return false;
        }
        return $result;
    }
}

Он не работает в бэкэнде...Любые изменения в моем коде .....

Author: Mahi M, 2018-02-20

1 answers

Пожалуйста, используйте приведенный ниже плагин для того же

<type name="Magento\Payment\Model\MethodList">
        <plugin name="methodlist" type="Module\NameSpace\Plugin\Model\Method\Available" sortOrder="1" />
    </type>

В этом классе

 public function aroundGetAvailableMethods($object, callable $proceed,$quote)
    {
         $result = $proceed($quote);
        foreach($result as $key=>$_result){
            if($_result->getCode() == "cashondelivery"){ //make sure your payment method code
                $isAllowed = $this->_pincodeModel->isCODAvailable($quote->getShippingAddress()->getPostcode()) ? "1" : ""           
                if(!$isAllowed)
                {
                    unset($result[$key]);
                }
            }
        }
        return $result;
    }
 2
Author: Sunil Patel, 2018-02-20 13:25:02