마 젠토 2-특정 배송 방법에 대해서만 현금 배달 가능


9

예를 들어 고객이 고정 요금 배송 방법을 선택한 경우에만 현금 지불을 활성화하는 방법은 무엇입니까?

배송 / 지불 구성 또는 장바구니 규칙에서이 방법을 찾을 수 없습니다.

답변:


9

배송 방법 "flatrate_flatrate"를 선택할 때 CashOnDelivery의 isAvailable 함수를 false로 설정하기 위해 사용자 정의 모듈의 플러그인을 사용합니다.

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;
          }
    }

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>

이것이 당신에게 도움이되기를 바랍니다! 궁금한 점이 있으면 언제든지 문의하십시오


1
백엔드에서이를 수행하는 방법
Mahi M

플러그인 aroundIsAvailable 함수를 사용하여 사용자 정의 모듈을 만들어야합니다.
스톡 마 젠토

이것은 내 상태입니다 ... 백엔드에서 이것을 수행하는 방법
Mahi M

더 자세한 정보를 제공 할 수있는 새로운 질문을여십시오
juhanix

흐름을 찾기 위해 2 시간 이상을 보낸 @juhanix에 감사드립니다. 당신의 솔루션은 많은 도움이됩니다. 계속 코딩 :)
divya sekar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.