PayPal Sandbox Classic API Express Checkout NVP 内部服务器错误 (500)

Posted

技术标签:

【中文标题】PayPal Sandbox Classic API Express Checkout NVP 内部服务器错误 (500)【英文标题】:PayPal Sandbox Classic API Express Checkout NVP Internal Server Error (500) 【发布时间】:2015-06-02 04:01:25 【问题描述】:

快速总结

我正在使用 php 开发一个电子商务网站。它使用 PayPal 进行付款。从去年年底到现在,我已经成功地使用(从通过 SetExpressCheckout 发送请求字符串到 DoExpressCheckoutPayment 到 GetExpressCheckoutDetails 到将付款详细信息存储在 mysql 数据库中)PayPal 的沙盒模式及其经典 API Express Checkout (NVP)。直到昨晚一切正常,网站的 PayPal 部分没有发生重大变化。现在,我在每次付款请求时都会在https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=[TOKEN] 收到“内部服务器错误”。

演练

解析支付请求:“...&PAYMENTREQUEST_0_PAYMENTACTION=...”, 调用“SetExpressCheckout”, 获取 [ACK] => 成功(无错误 = 无 LONGMESSAGE), 重定向到提供的令牌https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=[TOKEN], 每次都在上述链接中获取“内部服务器错误”。

我所看到的

Paypal SetExpressCheckout 返回:

Array
(
    [TOKEN] => XX-XXXXXXXXXXXXXXXXX
    [TIMESTAMP] => 2015-03-28T20:27:25Z
    [CORRELATIONID] => XXXXXXXXXXXXX
    [ACK] => Success
    [VERSION] => 109.0
    [BUILD] => 15840636
)

上面列出的链接中的 PayPal 沙盒错误消息:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@paypal.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

为什么我找不到答案

一般的“内部服务器错误”消息意味着我不知道从哪里开始查找,因为我不确定问题是出在我身上(这是我的默认假设)还是出在 PayPal 上。 大多数解决方案都指向生产和沙盒 URL/API 凭据之间的不匹配。这不是问题。我已经通过 Sandbox 链接成功使用 Sandbox 凭据已有一段时间了。 我发现的所有 PayPal 内部服务器错误问题都适用于使用 REST API(或使用 IPN)的人。我正在使用由 Classic-API 驱动的 Express Checkout,但没有看到任何返回的 debug_id 或我将如何获得它。 过去的所有问题都可以通过查看返回的错误消息来解决(ACK=Failure&L_ERRORCODE0=['some error code']&L_SHORTMESSAGE0=['short error message']&L_LONGMESSAGE0=['detailed error message'])。这里没有错误信息,因为它注册为成功。 我已尝试更改 API 凭据并收到标准安全标头错误(然后我切换回来,错误消失并返回到重定向时的内部服务器错误)。 我曾尝试修改请求字符串,但我确信这不是问题所在,因为当我故意将其弄乱时,我会收到标准错误消息。

【问题讨论】:

我也有同样的问题!也许是 Paypal 的问题! 我尝试了一个新测试:1) 运行 API 指南 found here (逐字) 中的示例 cURL 命令,2) 复制返回的令牌并将其粘贴到给出的链接的末尾同一指南的下一页(copy this link,将令牌添加到末尾),3)内部服务器错误 我也遇到了同样的问题。有趣的是,如果我在 SetExpressCheckout api 中指定 billing agreement 而没有任何付款细节,则不会发生内部服务器错误。我相信问题出在贝宝端。给他们发了一封电子邮件。仍在等待回复。 大家的问题都解决了吗? 2天前临时工作后,我似乎又遇到了类似的问题! 【参考方案1】:

在向 PayPal 报告此问题并通过日志向 PayPal 报告后,他们确认这是一个已知问题。

亲爱的菲利普,

感谢您就以下问题联系 PayPal 商家技术服务部 沙盒环境中的内部服务器错误。这是一个已知的 目前正在调查的问题,希望会是 很快解决了。我会在确认问题后通知您 是固定的。谢谢。

此致,

迈克

商家技术支持

PayPal,一家 eBay 公司

来自 PayPal 的更新:

亲爱的 Philip,沙盒问题现在应该得到解决,您应该 没有看到内部服务器 500 错误。如果您还有其他 问题请告诉我们,https://www.paypal.com/mts

此致,

迈克

商家技术支持

PayPal,一家 eBay 公司

我已经测试过,它似乎是固定的。

【讨论】:

我收到了一对类似的消息,进行了几次测试,现在它似乎在所有情况下都对我有效。 这个问题好像最近在临时工作后又出现了。它仍然对其他人有效吗? @YahyaUddin 一切似乎仍在正常工作。检查您的设置,如果仍然存在,请联系 PayPal。【参考方案2】:

内部服务器错误是指 PayPal 服务器内部。这是 PayPal 的“救命!我放弃!”错误信息。

这并不排除您做错了什么导致 PayPal 的代码离开绿色路径并进入被熊吃掉的树林的可能性,但无论如何:按照错误页面的说明进行操作并联系贝宝支持。他们应该能够查找您的相关 ID 并查看发生了什么。然后他们可以让您知道您是否可以通过最终更改来解决该问题,或者您的代码是否都很好并且这是 100% 他们的问题。然后他们可以改进他们的代码,以便下一个可能犯与您类似错误的人得到更好的反馈。

(虽然像这样的页面通常显示给您的客户而不是您,但 PayPal 通常只给出一个相对一般的失败消息。)

在等待 PayPal 回复您的同时,我会检查您是否想在这方面多做一些事情:您验证了 AP​​I 似乎确实像它声称的那样工作。需要检查的事情是明智的,但错误在于网络重定向,所以请关注这一点:如果你传递了一个已知的虚假令牌,你会得到什么?在另一台计算机上或清除 cookie 后会发生什么?如果您尝试使用同一对帐户进行按钮付款(不是快速结帐),您会得到什么?

【讨论】:

这里是我迄今为止尝试过的快速更新:1)伪造的令牌->“此交易无效。请返回收件人的网站以使用他们的常规结帐流程完成您的交易。” , 2) 清除 cookie/everthing/ccleaner + 多个浏览器 + 其他组件 -> 内部服务器错误(未更改),3) 使用相同帐户的按钮支付(在沙箱中)-> PayPal 工作正常。

以上是关于PayPal Sandbox Classic API Express Checkout NVP 内部服务器错误 (500)的主要内容,如果未能解决你的问题,请参考以下文章

PayPal 链式支付 PHP

PayPal响应式结账?

Paypal payKey 让我支付错误

PayPal预先批准的付款按钮

未找到 PayPal 自适应支付的沙箱页面

自定义 sandbox.paypal “订单汇总”