Magento2是否会在2小时后取消订单?

1个

我们在销售清单中看到一些“已取消”的订单,当我们查看它们时,授权失败的原因是:“您必须输入持卡人姓名。”

我认为这有点奇怪,因为Magento不允许您先输入名字和姓氏(自动传递到付款页面)来进入付款页面

我们正在使用Sagepay扩展程序来处理付款,因此我问那些开发者为什么自动取消这些订单。

他们说,Magento在执行付款之前会创建订单。这意味着,如果客户输入错误的数据或什至没有输入任何信息,Magento就会设置相应的状态并在2小时后取消订单。

此行为很可能是用户自己造成的,他们离开了付款页面而未明确取消交易。

Magento 2小时后取消订单,这是真的吗?(我似乎找不到任何有关此信息)是否可以增加此超时时间?

回答:

是的,有一个cron任务负责

<job name="sales_clean_orders" instance="Magento\Sales\Model\CronJob\CleanExpiredOrders" method="execute">
    <schedule>0 * * * *</schedule>
</job>

您可以在vendor / magento / module-sales / Model / CronJob / CleanExpiredOrders.php文件中查看其功能

public function execute()
{
    $lifetimes = $this->storesConfig->getStoresConfigByPath('sales/orders/delete_pending_after');
    foreach ($lifetimes as $storeId => $lifetime) {
        /** @var $orders \Magento\Sales\Model\ResourceModel\Order\Collection */
        $orders = $this->orderCollectionFactory->create();
        $orders->addFieldToFilter('store_id', $storeId);
        $orders->addFieldToFilter('status', Order::STATE_PENDING_PAYMENT);
        $orders->getSelect()->where(
            new \Zend_Db_Expr('TIME_TO_SEC(TIMEDIFF(CURRENT_TIMESTAMP, `updated_at`)) >= ' . $lifetime * 60)
        );

        try {
            $orders->walk('cancel');
            $orders->walk('save');
        } catch (\Exception $e) {
            $this->logger->error('Error cancelling deprecated orders: ' . $e->getMessage());
        }
    }
}

如您所见,您可以在后台参数商店>配置>销售>销售>订单Cron设置中编辑默认取消时间

相关文章

0 0 投票数
文章评分
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论