我们在销售清单中看到一些“已取消”的订单,当我们查看它们时,授权失败的原因是:“您必须输入持卡人姓名。”
我认为这有点奇怪,因为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设置中编辑默认取消时间