MAGENTO自动关闭未付款的订单

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


我们首先创建一个“Magease_Order_Model_ObserverObserver类,并且声明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了。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部