Paypal IPN not calling Issue



我遇到了一些问题,Paypal IPN没有在我的服务器上被解雇。下面是场景。

1) 我有两个网站,网站A(旧)在服务器X上,网站B(新)在服务器Y上。这两个网站都有相同的Paypal快速结账表单提交和IPN代码。2) 网站A运行顺利,贝宝快递结账表单提交,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

希望以下信息对您来说足够了。如果我们中的任何一个人有一些解决方案需要克服,请提出建议。

提前谢谢。

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

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

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

备选方案:

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

IPN有四种状态:

  • 已启用-->如果系统提示您选择设置,则IPN为如果在结账请求。

  • 使用默认URL设置启用-->如果显示"通知URL"并将"消息传递"设置为启用,则每次您没有在结账请求中指定不同的IPN URL时,都会使用默认URL(例如,易趣交易将发送到默认URL,因为易趣的快速结账集成不会传递通知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,请检查下最后一条IPN消息的状态https://www.paypal.com/cgi-bin/webscr?cmd=%5fdisplay%2dipns%2dhistory&nav=0%2e3%2e4

    它将向您显示服务器发送回的最后一个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 Received),则IPN处理的下一步是将数据发布回PayPal进行验证。您可以在脚本中启用日志记录(将HTTP请求和响应转储到服务器上的文件中),也可以联系PayPal MTS(https://www.paypal.com/mts),并询问PayPal侧的可见内容。

    检查与贝宝连接的一个好测试是在Web服务器上运行以下命令:

    curl-d"cmd=_notify-validate"-vhttps://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-语言编码-将它们设置为UTF8以获得最佳结果。

  6. 如果PayPal以验证响应,但您的脚本在验证付款后没有继续处理,请确保运行TRIM()(或所用语言中的等效程序)来删除空白、换行和CRLF

  7. 之后会发生什么取决于IPN脚本,您可能会在连接到数据库、解析IPN消息以查找某些数据或某些编码错误时遇到错误。

简而言之:如果IPN消息已被接收、发布并验证,那么其他一切都会发生在服务器上您自己的代码中,您必须开始挖掘日志文件(或者确保正在创建日志,这总是一个好主意),以了解发生了什么。如果问题是可重复的,检查其中一个示例脚本(包括日志记录)发生了什么总是一个好主意

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

最新更新