Magento – Magento 2 : Set free shipping method programatically from an observer

event-observermagento2shipping-methods

I need to add free shipping method fro particular quote in an observer.
I am calling an event sales_quote_collect_totals_before.

And my observer code is –

namespace Vendor\Module\Observer;

use Magento\Framework\Event\Observer as EventObserver;
use Magento\Framework\Event\ObserverInterface;

class SalesQuoteCollectTotalsBefore implements ObserverInterface
{
    public function execute(EventObserver $observer)
    { 
        $quote = $observer->getEvent()->getQuote();
        $address = $quote->getShippingAddress();
        $address->setFreeShipping(true);   
    }
}

Best Answer

Use this code in your observer :

$quote = $observer->getEvent()->getQuote();
$quote->getShippingAddress()->setFreeShipping(true);
$quote->save();

It may be helpful for you.

Related Topic