My requirement is programatically change the order status to Canceled by using order id.
How to achieve this?
My requirement is programatically change the order status to Canceled by using order id.
How to achieve this?
Even though using the OrderFactory would work, save and load methods are deprecated soon, you should use service contracts instead.
So you can use Magento/Sales/Api/OrderManagementInterface:
First inject an instance in your class constructor:
protected $orderManagement;
public function __construct(
...
\Magento\Sales\Api\OrderManagementInterface $orderManagement,
....
) {
....
$this->orderManagement = $orderManagement;
....
}
Then use the following:
$this->orderManagement->cancel($orderId);
use \Magento\Sales\Model\OrderFactory by injecting in the constructor, like below : to cancel the order programmatically
protected $_orderFactory;
public function __construct(
\Magento\Sales\Model\OrderFactory $orderFactory
){
$this->_orderFactory = $orderFactory;
}
public function execute()
{
$orderId = '1234543343'; // your order id
$order = $this->_orderFactory->create()->load($orderId);
$order->cancel()->save();
}
I tried below solution and it works perfect
http://magentocodes.blogspot.com/2017/10/how-to-cancel-order-programatically-in.html