Paypal IPN没有调用问题

时间:2014-05-27 06:54:42

标签: php paypal paypal-ipn firewall express-checkout

我有一些问题,关于Paypal IPN没有被我的一台服务器解雇。以下是场景。

1)我有两个站点站点A(旧)在服务器X上,站点B(新)在服务器Y上。具有相同Paypal快递结账表单提交和IPN代码的站点。 2)网站A运行顺利,PayPal快速结账表单提交,IPN被正确解雇。 3)但是对于站点B,虽然我们的表单已正确提交并且付款成功,但IPN并未被解雇。

更多信息:        我查看了Paypal的业务A / c,了解在IPN所在地添加IP /域所需的任何功能。

我还检查过Paypal支持他们说从2014年3月25日起他们告诉我们将Paypal的API相关IP地址添加到我们的服务器防火墙中。我们已经完成了添加这些IP地址,但仍然没有用。

  URL : https://ppmts.custhelp.com/app/answers/detail/a_id/14/related/1/session/L2F2LzEvdGltZS8xNDAxMTcyODkwL3NpZC9VbENEUWhWbA%3D%3D

希望以下信息对您而言足够。如果我们中的任何一个人有解决方案,请建议。

提前致谢。

1 个答案:

答案 0 :(得分:7)

不幸的是,我没有太多具体信息供我使用,所以让我们将其作为IPN故障排除指南以供将来参考:)

检查给定帐户的IPN功能状态 -

https://www.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-ipn-notify(首先登录您的帐户,然后点击要转到IPN设置的链接)

替代方案:

  • 登录PayPal.com
  • 打开个人资料 - >我的销售偏好
  • 查找“即时付款通知”选项

IPN有四种状态:

  • 已启用 - >如果系统提示您选择设置,则IPN为 如果在通过URL中传递通知URL,则将启用和IPN 结帐请求。

  • 启用默认网址设置 - >如果显示“通知URL”并且“消息传递”设置为启用,则每次在结帐请求中未指定其他IPN URL时将使用默认URL(例如,eBay事务将被发送到默认URL,因为易趣的快速结账集成未通过通知网址

  • 已停用 - >您从未设置默认URL,但在事务中传递的IPN URL已经抛出了太多错误。您应该看到空的地址字段和选中的“不接收IPN消息(已禁用)”选项。

  • 使用默认网址设置已停用 - >在某个时间点配置了默认IPN URL,但由于默认URL或动态URL上的故障,IPN功能已被禁用。您将看到URL和“Message Delivery = Disabled”

为什么PayPal禁用IPN传送?

PayPal希望您的服务器以HTTP-200 OK消息进行响应。如果我们收到不同的响应代码,则会启动重试机制。 IPN消息总共发送16次,每次尝试之间的时间帧增加。如果一个URL的错误达到某个阈值,则会自动禁用IPN。您将收到一封电子邮件,其中包含PayPal帐户中列出的主要电子邮件地址,警告您即将停用

  1. 如果启用了IPN,请检查https://www.paypal.com/cgi-bin/webscr?cmd=%5fdisplay%2dipns%2dhistory&nav=0%2e3%2e4下的最后一条IPN消息的状态

    它会显示服务器发回的最后一个HTTP响应代码,您可以过滤失败/重试消息。

    检查http://en.wikipedia.org/wiki/List_of_HTTP_status_codes以查看状态的含义。

  2. 如果没有HTTP响应代码,则在较低级别存在连接问题。 最常见的原因是:

    • 防火墙
    • SSL连接问题(尝试使用HTTP)
    • 黑洞路线

    如果您认为所有内容都配置正确,请查看https://ppmts.custhelp.com/app/answers/detail/a_id/733

  3. 如果IPN消息被标记为“SENT”(HTTP 200已接收),则IPN处理的下一步是将数据发布回PayPal进行验证。您可以在脚本中启用日志记录(将HTTP请求和响应转储到服务器上的文件中) - 或者您可以联系PayPal MTS(https://www.paypal.com/mts)并询问PayPal端可见的内容。

    检查与paypal连接的一个很好的测试是在网络服务器上运行以下命令:

    curl -d“cmd = _notify-validate”-v https://www.paypal.com/cgi-bin/webscr

  4. 如果您发现POST已到达PayPal,但PayPal会针对所有消息回复INVALID:

    检查您的代码,https://github.com/paypal/ipn-code-samples是一个很好的样本来源

  5. 如果PayPal以某些消息的INVALID响应,您可能会遇到编码问题。您最好在https://www.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-language-encoding下设置字符编码设置 - 将它们设置为UTF8以获得最佳效果。

  6. 如果PayPal以VERIFIED响应,但您的脚本在验证付款后仍未继续处理,请确保运行TRIM()(或使用的语言中的等效项)以删除空格,换行符和CRLF

  7. 之后发生的事情取决于IPN脚本,在连接到数据库时可能会遇到错误,解析IPN消息中的某些数据或某些编码错误。

  8. 简而言之:如果收到IPN消息,回发并验证,其他所有内容都会在您服务器上的代码中发生,您必须开始挖掘日志文件(或确保日志正在进行中)创建,这总是一个好主意)来找出发生了什么。如果问题是可重现的,那么检查其中一个示例脚本(包括日志记录)会发生什么事情总是一个好主意

    希望这有助于解决IPN问题 - 任何有关IPN的问题?如果您想调查贝宝方面发生的事情,请联系paypal.com/mts。