PayPal订单在Magento中自动取消

时间:2010-12-30 15:16:26

标签: magento paypal

当有人使用PayPal Express Checkout下订单时,我在Magento中遇到了这个奇怪的问题。每隔一段时间,订单就会进入,几秒钟后订单就会被取消。留下的评论如下:

Canceled order online. Amount: $59.23. Transaction ID: "XXXXXXXXXXXXXXXXX-void".

(ID以防万一)

现在我们的客户发誓他们没有取消订单,当我们询问PayPal他们说这是我们方面的问题。

有没有人听说过这个问题,你知道修复吗?我正在运行Magento Enterprise 1.8。

1 个答案:

答案 0 :(得分:2)

我遇到了类似的问题。我跟踪了那些使用PayPal Express结账且没有PayPal帐户的用户。问题和修复程序出现在这里:

http://www.magentocommerce.com/bug-tracking/issue/?issue=9894

所有用户未遇到错误的面孔可能与有/没有PayPal帐户状态有关。


将Magento与PayPal Express(非PayPal标准)集成,用户可以购买我们商店的产品。

但是,有两种不同的情况: 1)如果客户有Paypal帐户,他将能够毫无问题地完成购买流程。 2)但是,如果客户没有Paypal帐户,或者他不想使用它,并且更喜欢使用他的信用卡购买产品而不使用PayPal凭证,那么该过程将完成以下操作错误:

  

“此付款无法使用您的PayPal帐户进行处理   时间”。

问题是卖家会收到钱,但客户会认为恰恰相反。

PayPal支持团队已经讨论并确认了这个问题。

真正的问题是在购买过程中,调用了“DoExpressCheckoutPayment”PayPal的功能。但是,当购买流程完成此错误时,名为“successpageredirectrequested”的参数将设置为“true”。此标志指示在完成交易后是否需要将客户重定向回PayPal。但是,这是一个过时的PayPal行为,不应该使用。

由于Magento正在使用此参数的功能,当他尝试再次重定向到PayPal时(那就是“successpageredirectrequested”设置为true)PayPal将返回此错误。

我们可以通过app/code/core/Mage/Paypal/Controller/Express/Abstract.php

修复Magento源代码的一些变化

只需更改“public function placeOrderAction()”函数即可。 在此函数中查找以下代码:

// redirect if PayPal specified some URL (for example, to Giropay bank)
$url = $this->_checkout->getRedirectUrl();
if ($url) {
$this->getResponse()->setRedirect($url);
return;
}
$this->_initToken(false); // no need in token anymore
$this->_redirect(?checkout/onepage/success?);
return;
}

我们只需要评论“if”,就像这样:

//if ($url) {
//$this->getResponse()->setRedirect($url);
// return;
//}

这足以解决问题。但是,这不是当前的修复,Magento的程序员应该对此进行审核,以便在Magento的新版本中修复它。