首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Magento 2从我的帐户页面取消订单

Magento 2从我的帐户页面取消订单
EN

Stack Overflow用户
提问于 2016-02-11 15:24:54
回答 2查看 1.5K关注 0票数 0

按计划取消magento 2中的订单:

我在magento 1中实现了模块,在该模块中,我将从customer页面取消挂起的订单。

请参阅我在magento 1中实现的代码:

代码语言:javascript
复制
$order = Mage::getModel('sales/order')->load($orderId);
$order_status=$order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true)->save();

我想在magento 2中实现相同的功能。有人知道如何实现吗?

我在magento 2中装载了订单id,但无法取消订单。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-11 15:59:25

为此,您应该使用API (更多关于magento2 API概念),例如如何在您的类中使用它:

代码语言:javascript
复制
<?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);
    }
}
票数 2
EN

Stack Overflow用户

发布于 2017-10-16 12:54:07

请查看下面的代码,它还将验证订单的用户关联。

代码语言:javascript
复制
<?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" ;

        }
}


}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35343306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档