¿Cómo, por ejemplo, habilitar el pago contra reembolso solo cuando el cliente seleccionó el método de envío de tarifa plana?
No puedo encontrar una manera de hacerlo en la configuración de envío / pago o en las reglas del carrito.
¿Cómo, por ejemplo, habilitar el pago contra reembolso solo cuando el cliente seleccionó el método de envío de tarifa plana?
No puedo encontrar una manera de hacerlo en la configuración de envío / pago o en las reglas del carrito.
Uso un complemento en un módulo personalizado para establecer la función isAvailable para CashOnDelivery en falso cuando se selecciona el método de envío "flatrate_flatrate".
file: <magento-root>/app/code/MyCompany/MyModule/Plugin/CashonDeliveryPlug.php
<?php
namespace MyCompany\MyModule\Plugin;
use Magento\Payment\Model\Method\AbstractMethod;
use Magento\Quote\Model\Quote;
class CashondeliveryPlug
{
/**
* @var \Magento\Checkout\Model\Session
*/
protected $_checkoutSession;
/**
* Constructor
*
* @param \Magento\Checkout\Model\Session $checkoutSession
*/
public function __construct
(
\Psr\Log\LoggerInterface $logger,
\Magento\Checkout\Model\Session $checkoutSession
) {
$this->logger = $logger;
$this->_checkoutSession = $checkoutSession;
return;
}
public function aroundIsAvailable(\Magento\Payment\Model\Method\AbstractMethod $subject, callable $proceed)
{
$shippingMethod = $this->_checkoutSession->getQuote()->getShippingAddress()->getShippingMethod();
#$this->logger->debug($shippingMethod);
if ($shippingMethod == 'flatrate_flatrate') {
return false;
}
$result = $proceed();
return $result;
}
}
y
file: <magento-root>/app/code/MyCompany/MyModule/etc/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\OfflinePayments\Model\Cashondelivery">
<plugin name="cashondeliveryplug" type="MyCompany\MyModule\Plugin\CashondeliveryPlug" disabled="false" sortOrder="10"/>
</type>
</config>
¡Espero que esto te ayude! No dude en hacer cualquier pregunta