4

My requirement is programatically change the order status to Canceled by using order id.

How to achieve this?

13

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);
| improve this answer | |
2

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();   
}
| improve this answer | |
  • thanks, it worked but load() save() are deprecated soon as per @Raphael +1 from me :-) – Bilal Usean May 13 '16 at 11:45
0

I tried below solution and it works perfect

http://magentocodes.blogspot.com/2017/10/how-to-cancel-order-programatically-in.html

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.