按计划取消magento 2中的订单:
我在magento 1中实现了模块,在该模块中,我将从customer页面取消挂起的订单。
请参阅我在magento 1中实现的代码:
$order = Mage::getModel('sales/order')->load($orderId);
$order_status=$order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true)->save();我想在magento 2中实现相同的功能。有人知道如何实现吗?
我在magento 2中装载了订单id,但无法取消订单。
发布于 2016-02-11 15:59:25
为此,您应该使用API (更多关于magento2 API概念),例如如何在您的类中使用它:
<?php
use Magento\Sales\Api\OrderManagementInterface;
class A
{
/**
* @var OrderManagementInterface
*/
private $orderManagement;
/**
* @param OrderManagementInterface $orderManagement
*/
public function __construct(OrderManagementInterface $orderManagement)
{
$this->orderManagement = $orderManagement;
}
public function cancelOrderOne()
{
$orderId = 1;
$isCanceled = $this->orderManagement->cancel($orderId);
}
}发布于 2017-10-16 12:54:07
请查看下面的代码,它还将验证订单的用户关联。
<?php
Nmaespace\Modulename\Controller\Action;
class Cancelorder extends \Magento\Framework\App\Action\Action
{
protected $orderManagement;
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Sales\Api\OrderManagementInterface $orderManagement
) {
$this->orderManagement = $orderManagement;
parent::__construct($context);
}
public function execute()
{
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customerSession = $objectManager->get('Magento\Customer\Model\Session');
if(!$customerSession->isLoggedIn()) {
$this->_redirect('/');
die;
}
/*get request params */
$get_customer_id = $customerSession->getCustomer()->getId();
$get_order_id = $this->getRequest()->getParam('order_id');
/*get request params */
//die;
$order = $objectManager->create('Magento\Sales\Model\Order')->load($get_order_id);
$getcustomerid = $get_customer_id;
$orderdata = $order->getData();
$order_status = $orderdata["status"];
//print_r($orderdata);
$cus_id = $orderdata["customer_id"];
if($getcustomerid != $cus_id){
echo "We cant Cancel this order at this time" ;
//die("go back");
}
if($order_status == "pending"){
$this->orderManagement->cancel($get_order_id);
echo "Order Cancelled successfully" ;
}
else{
echo "We cant Cancel this order at this time" ;
}
}
}https://stackoverflow.com/questions/35343306
复制相似问题