Magento 中的 PayPal 订单自动取消

发布于 2024-10-09 10:35:48 字数 346 浏览 3 评论 0原文

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

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

为了以防万一,ID 被空白)

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

有人听说过这个问题吗?你知道解决办法吗?我正在运行 Magento Enterprise 1.8。

I have this weird issue in Magento when someone places an order using PayPal Express Checkout. Every so often an order will come in and then the order gets canceled a few seconds later. The comment that is left is as follows:

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

(ID blanked out just in case)

Now our customers are swearing they did not cancel their orders and when we ask PayPal they say it is a problem on our side.

Has anyone heard of this issue and do you know of a fix? I am running Magento Enterprise 1.8.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心奴独伤 2024-10-16 10:35:48

我遇到了类似的问题。我追踪到那些使用 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< /code>" PayPal 的函数被调用。但是,当购买过程结束并出现此错误时,名为“successpageredirectrequested”的参数将设置为“true”。此标志表示完成交易后是否需要将客户重定向回 PayPal 但是,这是过时的 PayPal 行为,

因此当他尝试再次重定向到 PayPal 时,不应使用此参数 。 “successpageredirectrequested”设置为 true 的作用)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 的新版本中修复它。

I've run into a similar issue. I tracked it down to those users who checked out with PayPal Express and do not have a PayPal account. The issue and the fix appear here:

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

The face that all users do not encounter the error may be related to the with/without a PayPal account status.


Integrating Magento with PayPal Express (not PayPal standard) the users can buy our store's products.

However, there are two different situations:
1) If the customer has got a Paypal account, he will be able to finish the buy process without issues.
2) However, if the customer hasn't got a Paypal account, or if he doesn't want to use it, and prefers to buy the products using his credit card without use the PayPal credentials, then the process will finish with the following error:

"This payment cannot be processed using your paypal account at this
time".

The problem is the seller will receive the money, but the customer will think just the opposite.

This issue has been discused and confirmed with PayPal support team.

The real issue is during the buy process, the "DoExpressCheckoutPayment" PayPal's function is called. However, when the buy process finish with this error, a parameter called "successpageredirectrequested" is set to "true". This flag indicates whether you need to redirect the customer to back to PayPal after completing the transaction. However, this is an obsolete PayPal's behavior, and should't be used.

As Magento is using this parameter's function, when he tries to redirect again to PayPal (that's what "successpageredirectrequested" set to true is doing) PayPal will return this error.

We can fix it making a little change in Magento's source code, at app/code/core/Mage/Paypal/Controller/Express/Abstract.php

Just changing the function "public function placeOrderAction()".
Look for the following code inside this function:

// 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;
}

We just need to comment the "if", just like this:

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

That's enough to fix the issue. However, this is not a current fix, and this should be reviewed by Magento's programmers just to fix it in the Magento's new versions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文