我遇到了类似的问题。我追踪到那些使用 PayPal Express 结账但没有 PayPal 帐户的用户。问题和修复出现在这里:
http://www.magentocommerce.com/bug-tracking/issue/?issue=9894
所有用户都没有遇到错误的面孔可能与有/没有PayPal帐户状态有关。
将 Magento 与 PayPal Express(非 PayPal 标准)集成,用户可以购买我们商店的产品。
但是,有两种不同的情况:
1) 如果客户有 Paypal 帐户,他将能够顺利完成购买过程。
2) 但是,如果客户没有 Paypal 帐户,或者他不想使用它,并且更喜欢使用信用卡购买产品而不使用 PayPal 凭据,则该过程将完成以下操作错误:
“目前无法使用您的贝宝帐户处理此付款
时间”。
问题是卖家会收到钱,但客户的想法正好相反。
此问题已与 PayPal 支持团队讨论并确认。
真正的问题是在购买过程中,“DoExpressCheckoutPayment”PayPal 的函数被调用。但是,当购买过程结束并出现此错误时,名为“successpageredirectrequested”的参数将设置为“true”。此标志指示您是否需要在完成交易后将客户重定向回 PayPal。但是,这是一种过时的 PayPal 行为,不应使用。
由于 Magento 正在使用此参数的功能,当他尝试再次重定向到 PayPal 时(这就是设置为 true 的“successpageredirectrequested”正在执行的操作)PayPal 将返回此错误。
我们可以在 Magento 的源代码中稍作修改,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 的新版本中修复它。