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.