出于某些原因,如及时恢复网站的产品库存或者其他原因。我们经常需要取消一些用户下单后一直处于“等待付款”状态的订单。今天这篇文章,我们就来看一下,magento网站如何设置自动关闭未付款订单。
我们创建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分钟执行一次订单清理任务。 <config> <crontab> <jobs> <order_cancel_orders> <schedule> <cron_expr>*/5 * * * *</cron_expr> </schedule> <run> <model>order/observer::cancelPendingpaymentOrders</model> </run> </order_cancel_orders> </crontab> </config> 好了,这就ok了。 (责任编辑:最模板) |

Fastest外贸多用途商城mag
人气:221
凡客成品ecshop模板普通版
人气:652
SuperShop跨境电子商务多用
人气:451
ecshop仿烧包网模板|包包模
人气:597
shopex时尚起义服装模板
人气:562
简洁asp服务型企业网站源
人气:669