Magento 2 - केवल विशिष्ट शिपमेंट विधि के लिए डिलीवरी पर नकद सक्षम करें


9

उदाहरण के लिए, ग्राहक द्वारा फ्लैट रेट शिपिंग विधि का चयन करने पर ही नकद भुगतान सक्षम करें?

मुझे शिपमेंट / भुगतान कॉन्फ़िगरेशन या कार्ट नियमों में ऐसा करने का कोई तरीका नहीं मिल रहा है।

जवाबों:


9

जब शिपिंग विधि "flatrate_flatrate" का चयन करने के लिए कैशऑनलाइन के लिए isAvailable फ़ंक्शन सेट करने के लिए मैं कस्टम मॉड्यूल में एक प्लगइन का उपयोग करता हूं।

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
बैकएंड में यह कैसे करें
माही एम

आपको एक प्लगइन के साथ एक कस्टम मॉड्यूल बनाना होगा। आप इस पर स्टॉक-
मैगेंटो के

यह मेरी स्थिति है ... बैकएंड में यह कैसे करना है
माही एम

हो सकता है कि आपको एक नया प्रश्न खोलना चाहिए, जहाँ आप आगे की जानकारी दे सकते हैं
जुहनी

बहुत बहुत धन्यवाद @ @ जूहानिक्स मैं एक प्रवाह खोजने के लिए 2 घंटे से अधिक खर्च करता हूं। आपका समाधान मेरी बहुत मदद करता है। कोडिंग रखें :)
दिव्य सेकर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.