2

我有一个用 magento 开发的电子商务网站,我使用 paypal 作为付款方式。当用户在购物车中为产品“连衣裙”添加 2 件商品并转到结帐页面并单击下订单按钮时​​,我将用户重定向到贝宝网站进行付款。但是也有一些用户放弃支付,离开了paypal页面。

当他们点击下订单时,magento 会在后端生成一个订单并保持其状态为 Pendin,一旦 paypal 付款完成并且用户重定向回我们的网站,该订单的状态会更新为处理中,因为付款已完成。但是如果用户在没有付款的情况下离开 pyapal 支付页面,那么我的产品库存会减少,其他用户无法下订单,直到我取消垃圾订单。

有什么方法可以使这个过程自动化,如果用户不支付贝宝,那么库存/库存应该恢复正常吗?

请帮忙,谢谢!

4

2 回答 2

3

Here is the cron that we are using since past few months. This code checks for pending orders for more than 7 minutes age to 30 minutes and cancels them. For me this restores the inventory.

       public function cancelPending()
        {


        $orderCollection = Mage::getResourceModel('sales/order_collection');
        $orderCollection
            ->addFieldToFilter('status', 'pending')
            ->addFieldToFilter('created_at', array('lt' =>  new Zend_Db_Expr("DATE_ADD('".now()."', INTERVAL -'0:07' HOUR_MINUTE)"),
                                            'gt' => new Zend_Db_Expr("DATE_ADD('".now()."', INTERAL -'0:30' HOUR_MINUTE)")));

        foreach($orderCollection->getItems() as $order)
        {
            $orderModel = Mage::getModel('sales/order');
            $orderModel->load($order['entity_id']);

            if(!$orderModel->canCancel())
                continue;

            $orderModel->cancel();
            $orderModel->setStatus('canceled');
            $orderModel->save();

}

My default status for an order pending payment is "pending". you may have to change that.

于 2012-07-27T10:24:33.333 回答
1

我想您需要设置一个 magento cron 作业,该作业会接收处于待处理状态超过 20 分钟的订单,然后恢复这些订单,从而再次启用您的库存。

我试图用谷歌搜索它,但找不到任何东西。我很确定这样的事情存在

'cron' 是一种在 UNIX 系统上定期(例如每 10 分钟)安排事情的方法,Magento 继承了这个术语,在这里你可以找到一些细节: http: //www.magentocommerce.com/wiki/1_-_installation_and_configuration/how_to_setup_a_cron_job

所以,算法计划:

  • 每 10 分钟
    • 检查处于待处理状态且早于 (current_time -20 分钟) 的订单
    • 自动还原这些订单

(也许你可以给那些订单超过 10 分钟的人发邮件,嘿嘿,你不想付钱吗?)

于 2012-07-27T10:07:25.727 回答