Magento 2 - chỉ cho phép giao hàng bằng tiền mặt cho phương thức giao hàng cụ thể


9

Ví dụ, làm thế nào để chỉ bật tiền mặt khi thanh toán giao hàng khi khách hàng chọn phương thức giao hàng giá cố định?

Tôi không thể tìm thấy cách thực hiện việc này trong cấu hình giao hàng / thanh toán hoặc trong quy tắc giỏ hàng.

Câu trả lời:


9

Tôi sử dụng Plugin trong mô-đun tùy chỉnh để đặt chức năng isAv Available cho CashOnDelivery thành false khi phương thức giao hàng "Flatrate_flatrate" được chọn.

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>

Hy vọng điều này sẽ giúp bạn! Hãy hỏi bất kỳ câu hỏi


1
Cách thực hiện việc này trong phần phụ trợ
Mahi M

bạn phải tạo một mô-đun tùy chỉnh với chức năng Plugin quanhIsAv Available. Bạn không thể làm điều này trong phần phụ trợ với stock-magento
juhanix

đây là điều kiện của tôi ... làm thế nào để làm điều này trong phần phụ trợ
Mahi M

có lẽ bạn nên mở một câu hỏi mới, nơi bạn có thể cung cấp thêm thông tin
juhanix

Cảm ơn bạn rất nhiều @juhanix tôi đã dành hơn 2 giờ để tìm một dòng chảy. Giải pháp của bạn giúp tôi rất nhiều. tiếp tục mã hóa :)
divya sekar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.