【问题标题】:Magento order status updated to "Processing" even when PayPal payment fails即使 PayPal 付款失败,Magento 订单状态也会更新为“处理中”
【发布时间】:2015-09-05 08:16:42
【问题描述】:

我对 Magento 1.9 和 PayPal 付款方式有疑问。 当客户使用 PayPal 付款并进行付款审核时,在这种情况下订单状态将设置为正确的“付款审核”。

但是,问题是,在付款实际失败的情况下(即客户账户中的资金不足),Magento 会将订单状态更新为“处理中”,客户最终会获得免费商品。

我需要做的是,当调用此类“失败”IPN 时,我需要将“已关闭”状态设置为该特定订单。我花了超过 4 个小时才找到解决方案,但没有找到任何合适的解决方案。

如果有人对此有任何修复,请与我分享。

PayPal IPN 响应变量:

        [payer_email] => xxx@xxx.com
        [payer_id] => xxxxxxxxxxxx
        [payer_status] => unverified
        [payment_date] => 14:33:46 Jun 08, 2015 PDT
        [payment_gross] => 43.24
        [payment_status] => Failed
        [payment_type] => echeck
        [protection_eligibility] => Ineligible

提前致谢。

【问题讨论】:

  • 我们也看到了这种行为。你找到解决办法了吗?
  • 不,我还没有找到任何解决方案,仍在挖掘根本原因。
  • 我们也遇到同样的错误,你找到解决办法了吗?
  • @hakkim,这是一个不常见的问题,所以不知道背后的主要原因。
  • 对我来说这很频繁.. 似乎是一种新的头痛... :(

标签: php paypal paypal-ipn payment-gateway magento-1.9


【解决方案1】:

我们遇到了同样的问题,并找到了它的根本原因。这似乎是 Magento Bug Tracker 上的一个未解决问题。

https://www.magentocommerce.com/bug-tracking/issue/index/id/1041

您可以通过如下重写 Ipn 模型来修复它:

<?php
/**
 * Rewrite the core fix an issue with IPN notifications of "failed" payments
 */
class Magento_CoreFixes_Model_Paypal_Ipn extends Mage_Paypal_Model_Ipn
{

    /**
     * @see https://www.magentocommerce.com/bug-tracking/issue/index/id/1041
     */
    protected function _registerPaymentFailure()
    {
        $this->_importPaymentInformation();

        // This is the fix allowing order to get the cancelled status
        foreach ($this->_order->getInvoiceCollection() as $invoice){
            $invoice->cancel()->save();
        }

        $this->_order
            ->registerCancellation($this->_createIpnComment(''), false)
            ->save();
    }
}

希望对你有帮助!

【讨论】:

    【解决方案2】:

    Pierre MARTIN's answer 直接引导我找到了这个问题的根源,并使其修复起来很简单。

    我已将该修复程序打包到一个模块中,该模块可以轻松安装到任何商店中。你可以找到the source and installation instructions on GitHub

    发生这种情况是因为,如果订单有未取消的发票,对 registerCancellation() 的调用会引发异常。异常意味着状态永远不会改变,默认为“处理中”。

    【讨论】:

      猜你喜欢
      • 2014-07-04
      • 2013-02-13
      • 2019-12-26
      • 2013-02-01
      • 2020-01-03
      • 1970-01-01
      • 2019-02-21
      • 2019-05-06
      • 2012-03-12
      相关资源
      最近更新 更多