Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento:当用户取消paypal支付时,库存项目减少_Php_Magento_E Commerce - Fatal编程技术网

Php Magento:当用户取消paypal支付时,库存项目减少

Php Magento:当用户取消paypal支付时,库存项目减少,php,magento,e-commerce,Php,Magento,E Commerce,我有一个在magento开发的电子商务网站,我使用paypal作为支付方式。当用户在购物车中为一件产品“衣服”添加了2个项目,并转到结帐页面,单击下订单按钮,然后我将用户重定向到paypal站点进行付款。但也有一些用户放弃了支付,离开了paypal页面 当他们点击下订单时,magento在后端生成一个订单,并将其状态保持为Pendin,一旦paypal付款完成,用户重定向回我们的网站,该订单的状态将更新为Processing,因为付款已完成。但如果用户离开pyapal付款页面而不付款,那么我的产

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

当他们点击下订单时,magento在后端生成一个订单,并将其状态保持为Pendin,一旦paypal付款完成,用户重定向回我们的网站,该订单的状态将更新为Processing,因为付款已完成。但如果用户离开pyapal付款页面而不付款,那么我的产品库存就会减少,其他用户在我取消垃圾订单之前无法下订单

有没有什么方法可以让我自动化这个过程,如果用户不在贝宝上付款,那么库存应该会恢复正常


请帮忙,谢谢

我想您需要设置一个magento cron作业,它接受处于挂起状态超过20分钟的订单,并恢复这些订单,从而再次启用您的库存

我试着用谷歌搜索,但什么也找不到。我很确定有这样的事情存在

“cron”是在UNIX系统上定期(如每10分钟)安排工作的一种方法,Magento继承了这一术语,在这里您可以找到一些详细信息:

因此,算法计划:

  • 每10分钟
    • 检查处于挂起状态且早于(当前\u时间-20分钟)的订单
    • 自动恢复这些订单

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

我想你需要设置一个magento cron作业,它接收等待状态超过20分钟的订单,并恢复这些订单,从而再次启用你的库存

我试着用谷歌搜索,但什么也找不到。我很确定有这样的事情存在

“cron”是在UNIX系统上定期(如每10分钟)安排工作的一种方法,Magento继承了这一术语,在这里您可以找到一些详细信息:

因此,算法计划:

  • 每10分钟
    • 检查处于挂起状态且早于(当前\u时间-20分钟)的订单
    • 自动恢复这些订单

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

这是我们过去几个月以来一直在使用的cron。此代码检查7分钟到30分钟以上的挂起订单并取消它们。对我来说,这会恢复库存

       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();

}

订单待付款的默认状态为“待付款”。您可能需要更改它。

这是我们从过去几个月开始使用的cron。此代码检查7分钟到30分钟以上的挂起订单并取消它们。对我来说,这会恢复库存

       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();

}

订单待付款的默认状态为“待付款”。您可能需要更改。

看起来是一种解决方案,因为如果用户离开paypal网站,我们将无法生成任何通知。我想cron会起作用的,谢谢,我正在尝试这种方式…:)看起来是一种解决方案,因为如果用户离开paypal网站,我们无法生成任何通知。我想cron会起作用的,谢谢,我正在尝试这种方式…:)在外部使用集合筛选器时,请不要使用直接SQL结构,因为它没有遵循Magento开发中的最佳实践。如果你使用Zend_Date对象,你的代码看起来会更好。谢谢你的建议!!我会努力改变的!在外部使用集合筛选器时,请不要使用直接SQL结构,因为它没有遵循Magento开发中的最佳实践。如果你使用Zend_Date对象,你的代码看起来会更好。谢谢你的建议!!我会努力改变的!