已取消的Paypal订单未显示在Magento admin中

已取消的Paypal订单未显示在Magento admin中,magento,paypal,Magento,Paypal,我已经配置了Magento 1.9社区商店,所有通过Paypal或其他支付方式(如货到付款)付款的订单都显示在后端 但是,当我选择Paypal作为网关结账时,请取消Paypal页面上的订单并返回网站-我的订单不会显示在管理员页面中。它不应该显示为取消的订单吗 由于这是一个从Shopify迁移过来的商店,我们不得不手动创建大约100个订单,并手动更改数据库中的日期。这可能是这种意外行为的原因吗 编辑1:即使paypal窗口关闭,也不会在网格中显示订单信息,而不是像许多答案所建议的那样单击“取消”。

我已经配置了Magento 1.9社区商店,所有通过Paypal或其他支付方式(如货到付款)付款的订单都显示在后端

但是,当我选择Paypal作为网关结账时,请取消Paypal页面上的订单并返回网站-我的订单不会显示在管理员页面中。它不应该显示为取消的订单吗

由于这是一个从Shopify迁移过来的商店,我们不得不手动创建大约100个订单,并手动更改数据库中的日期。这可能是这种意外行为的原因吗


编辑1:即使paypal窗口关闭,也不会在网格中显示订单信息,而不是像许多答案所建议的那样单击“取消”。

当您从paypal页面取消订单而未完成付款时,它会将您重定向回购物车页面。订单将不会下达

如果您在paypal重定向后关闭页面,但未完成付款(请注意,您不必按此处的“取消”),订单将处于“待定付款”状态

要验证paypal是否正常工作,请尝试通过paypal完成付款过程。如果您将其用于测试目的,则可以使用沙箱模式,这样您就不会因为订单而收取费用


希望这有帮助

这是显而易见的,因为当您(作为客户)在PayPal支付页面取消订单时,它会在重定向到商店之前自动销毁(取消设置)订单和订单报价-不要与著名的:取消订单混淆,顾名思义,取消订单显示的是实际完成然后取消的订单

根据您使用的PayPal方法,这可能会有不同的处理方式

在标准PayPal中,您可以在以下控制器中找到它:

\magento\app\code\core\Mage\Paypal\controllers\StandardController.php

当您取消订单时,
cancelAction()
,它首先取消订单:

    public function cancelAction()
{
    $session = Mage::getSingleton('checkout/session');
    $session->setQuoteId($session->getPaypalStandardQuoteId(true));
    if ($session->getLastRealOrderId()) {
        $order = Mage::getModel('sales/order')->loadByIncrementId($session->getLastRealOrderId());
        if ($order->getId()) {
            $order->cancel()->save();
        }
        Mage::helper('paypal/checkout')->restoreQuote();
    }
    $this->_redirect('checkout/cart');
}
然后
redirectAction()
在重定向回购物车页面之前取消设置报价:

    public function redirectAction()
{
    $session = Mage::getSingleton('checkout/session');
    $session->setPaypalStandardQuoteId($session->getQuoteId());
    $this->getResponse()->setBody($this->getLayout()->createBlock('paypal/standard_redirect')->toHtml());
    $session->unsQuoteId();
    $session->unsRedirectUrl();
}
另一方面,在PayPal Express中,此控制器会触发取消操作:

\app\code\core\Mage\Paypal\Controller\Express\Abstract.php

它把所有东西都放在同一个地方

因此,在您的情况下,如果您需要保留报价(我认为这是您在自定义模块中一直利用的),您必须更改PayPal模块的这种行为


请记住,如果要执行此操作,请不要修改原始核心文件,而是在自定义模块中扩展这些类,并在其中应用更改。

在Paypal页面上关闭一次窗口进行检查-但是订单信息不会显示在管理中的订单部分。一旦取消它,您会怎么做?客户是否有购物车中的产品?如果是,则不下订单。根据,您不需要手动创建订单。您可以导入订单,但通过我自己的代码使用自定义支付网关解决方案-客户离开我的网站并进入支付网关的网站后,就会在网格中创建订单。如果他完成了事务,我将获得处理,否则我将获得挂起状态作为订单状态。但是,对于Paypal,只有订单成功时才会显示订单。如果有人取消或关闭Paypal页面上的窗口,我在订单列表中什么也得不到。从您的回答中,我了解到,如果在到达Paypal支付页面时窗口关闭,而不是单击取消,则订单应显示在订单网格中。然而,即使在这种情况下,我也无法在我的网格中获得具有挂起状态的订单。我使用的是快速结帐选项。此外,大多数购物车都有这样的功能:2-3封电子邮件被发送给“放弃结帐”的客户。如果没有此类订单的信息,Magento如何处理放弃的退房。@SarthakGupta实际上,在它进入sales_flat_order表之前,您无法在网格中看到它;在此之前(当它仍然是一个报价或更好地说仍然在购物车中时),它保存在sales\u flat\u quote表中。收到成功消息后,Magento将发送一个事件以将报价转换为订单:
Mage::dispatchEvent('sales_convert_quote_to_order',array('order'=>$order,'quote'=>$quote))
    public function cancelAction()
{
    try {
        $this->_initToken(false);
        // TODO verify if this logic of order cancelation is deprecated
        // if there is an order - cancel it
        $orderId = $this->_getCheckoutSession()->getLastOrderId();
        $order = ($orderId) ? Mage::getModel('sales/order')->load($orderId) : false;
        if ($order && $order->getId() && $order->getQuoteId() == $this->_getCheckoutSession()->getQuoteId()) {
            $order->cancel()->save();
            $this->_getCheckoutSession()
                ->unsLastQuoteId()
                ->unsLastSuccessQuoteId()
                ->unsLastOrderId()
                ->unsLastRealOrderId()
                ->addSuccess($this->__('Express Checkout and Order have been canceled.'))
            ;
        } else {
            $this->_getCheckoutSession()->addSuccess($this->__('Express Checkout has been canceled.'));
        }
    } catch (Mage_Core_Exception $e) {
        $this->_getCheckoutSession()->addError($e->getMessage());
    } catch (Exception $e) {
        $this->_getCheckoutSession()->addError($this->__('Unable to cancel Express Checkout.'));
        Mage::logException($e);
    }

    $this->_redirect('checkout/cart');
}