【问题标题】:not getting any PayPal IPN没有收到任何 PayPal IPN
【发布时间】:2012-05-15 10:16:08
【问题描述】:

我正在尝试在我的网站上实施贝宝支付系统。 我有点卡在接收 IPN 上。 该网站是用 PHP 开发的,基于 ZendFramework 和 Doctrine 1.2.3

我使用位于贝宝网站上的示例脚本来接收 IPN,但它不起作用。 出于调试目的,我留下了 IPN 页面代码,该代码只是在我的 mysql db 的表中插入一个新条目,所以每次加载页面时,都会在数据库中插入一个新条目。

我再次尝试使用 PayPal 的即时付款通知 (IPN) 模拟器,并尝试向该页面发送新的 IPN,但是数据库中没有插入任何内容,所以我最好的猜测是,paypal 无法访问我的页面,即使它说 IPN 已成功发送。

ipn url 类似于:http://mydomain.com/shop/paypal/ipn

【问题讨论】:

  • 我们可能需要更多信息才能给您一个好的答案,否则我只会列出可能的错误。
  • 无论如何,我会先检查您是否收到回复,方法是检查您的日志文件并查看您是否收到来自 paypal 的发帖请求或是否有错误。
  • 同样在您的 Sandbox 帐户中,您必须确保已启用 IPN。你可能已经这样做了,但我只是在经历显而易见的事情。
  • 我还认为 IPN 请求是 POST 请求而不是 GET 请求。此外,如果您碰巧使用来自 GoDaddy 的共享主机,它们不允许来自 3rd 方服务器的 POST 请求。
  • IPN 在沙盒账户中开启。我刚刚查看了 IPN 历史记录,一切正常,HTTP 响应为 200

标签: paypal paypal-ipn


【解决方案1】:

我得到了正确的答案。 它不起作用的原因不是任何 paypal ipn url-form 限制。我使用 Zend_Translate 进行多语言支持,并将访问者浏览器发回给我的默认语言用作默认语言。问题是当 paypal 向我发送 IPN 时它没有提供任何默认语言,这会在我的代码中生成异常并导致应用程序崩溃,因此没有收到任何 IPN。

此外,如果有人需要在 Zend 中自定义 URL,他们可以使用 Zend_Controller_Router_Route_Regex,更多信息在这里:

http://framework.zend.com/manual/1.10/en/zend.controller.router.html#zend.controller.router.routes.regex

【讨论】:

  • 使用默认语言解决此问题的任何方法!
【解决方案2】:

我终于明白了。 看起来,paypal 不会将 IPN 数据发送到以下网址: domain.com/shop/ipn 。 我创建了一个单独的 php 文件,与我使用的框架无关,因此 ipn url 看起来像:domain.com/ipn.php。现在一切正常。

【讨论】:

  • 这不是真的。 PayPal 可以通过 PHP 发送 IPN 数据,无需 .php 扩展。您的虚拟主机可能会阻止您重写的 URL 上的 POST 数据。尝试将Options -Multiviews 添加到您的.htaccess 文件中。
  • 看看我上面检查的答案:)
猜你喜欢
  • 2023-03-13
  • 2012-08-14
  • 2017-08-01
  • 1970-01-01
  • 2012-05-18
  • 2017-12-15
  • 1970-01-01
  • 2023-03-15
  • 2016-09-06
相关资源
最近更新 更多