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;
}
}
Он не работает в бэкэнде...Любые изменения в моем коде .....
1
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