当有人使用PayPal Express Checkout下订单时,我在Magento中遇到了这个奇怪的问题。每隔一段时间,订单就会进入,几秒钟后订单就会被取消。留下的评论如下:
Canceled order online. Amount: $59.23. Transaction ID: "XXXXXXXXXXXXXXXXX-void".
(ID以防万一)
现在我们的客户发誓他们没有取消订单,当我们询问PayPal他们说这是我们方面的问题。
有没有人听说过这个问题,你知道修复吗?我正在运行Magento Enterprise 1.8。
答案 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
只需更改“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的新版本中修复它。