Paypal IPN没有调用问题

hak*_*ste 3 php firewall paypal paypal-ipn 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
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

小智 7

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

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

https://www.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-ipn-notify(首先登录您的帐户,然后按照链接进入IPN设置)

替代方案:

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

IPN有四种状态:

  • 已启用 - >如果系统提示您选择设置,则会启用IPN,并且如果在结帐请求中传递了通知URL,则会发送IPN.

  • 使用默认URL集启用 - >如果显示"通知URL"并且"邮件传递"设置为启用,则每次在结帐请求中未指定其他IPN URL时将使用默认URL(例如,eBay事务将被发送到默认URL,因为eBay的Express Checkout Integration不会传递通知URL)

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

  • 已禁用默认URL集 - >在某个时间点配置了默认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连接的一个很好的测试是在Web服务器本身上运行以下命令:

    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消息中的某些数据或某些编码错误.

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

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