下订单一段时间未付款关闭订单php,自动关闭magento未付款的订单

本文介绍了如何在Magento电商平台上配置自动取消等待付款状态超过90分钟的订单。通过创建Observer类,定义cancelPendingpaymentOrders()方法,并使用cron任务每5分钟执行一次,筛选并取消10个以内符合条件的订单。被取消的订单将被赋予新的状态'pendingpayment_canceled',确保订单管理的效率和准确性。
摘要由CSDN通过智能技术生成

出于某些原因,如及时恢复网站的产品库存或者其他原因。我们经常需要取消一些用户下单后一直处于“等待付款”状态的订单。今天这篇文章,我们就来看一下,magento网站如何设置自动关闭未付款订单。

我们首先创建一个“Magease_Order_Model_Observer”Observer类,并且声明cancelPendingPaymentOrders()方法。

我们创建Magease_Order_Model_Observer,并且添加public function cancelPendingpaymentOrders()方法。我们通过调用cron脚本来完成我们想要实现的目的。详细请看config.xml文件。

这个方法中,我们首先筛选出网站等待付款的并且距离下单超过90分钟的订单,为了一次性完成,我们控制这个订单数量在10个以内。

这时我们需要为订单创建一个新的订单状态(status),“pendingpayment_canceled”,我们将所有的因为顾客未支付而关闭的订单都设置一个“待支付-关闭”(pendingpayment_canceled)的状态。

class Magease_Order_Model_Observer{

public function cancelPendingpaymentOrders(){

$orderCollection = Mage::getResourceModel('sales/order_collection');

$orderCollection->addFieldToFilter('status', 'pending_payment')

->addFieldToFilter('created_at', array('lt' => new Zend_Db_Expr("DATE_ADD('".now()."', INTERVAL -'90:00' HOUR_MINUTE)")))

->getSelect()

->order('e.entity_id')

->limit(10);

$orders ="";

foreach($orderCollection->getItems() as $order){

$orderModel = Mage::getModel('sales/order');

$orderModel->load($order['entity_id']);

if(!$orderModel->canCancel())

continue;

$orderModel->cancel();

$orderModel->setStatus('canceled_pendings');

$orderModel->save();

}

}

}

下面我们通过计划任务来设置网站每5分钟执行一次订单清理任务。

*/5 * * * *

order/observer::cancelPendingpaymentOrders

好了,这就ok了。

(责任编辑:最模板)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值