标签:paypal-ipn php firewall paypal 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
希望以下信息对您而言足够.如果我们中的任何一个人有解决方案,请建议.
提前致谢.
解决方法:
不幸的是,我没有太多特定信息可供使用,所以让我们将其作为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帐户中列出的主要电子邮件地址的电子邮件,警告您即将停用
>如果启用了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以查看状态的含义.
>如果没有HTTP响应代码,则在较低级别存在连接问题.
最常见的原因是:
>防火墙
> SSL连接问题(尝试使用HTTP)
>黑洞布线
如果您认为所有内容都已正确配置,请查看https://ppmts.custhelp.com/app/answers/detail/a_id/733
>如果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
>如果您发现POST已到达PayPal,但PayPal会对所有消息的INVALID做出响应:
检查您的代码,https://github.com/paypal/ipn-code-samples是一个很好的样本来源
>如果PayPal以某些消息的INVALID响应,您可能会遇到编码问题.您最好在https://www.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-language-encoding下设置字符编码设置 – 将它们设置为UTF8以获得最佳效果.
>如果PayPal以VERIFIED响应,但您的脚本在验证付款后未继续处理,请确保运行TRIM()(或使用的语言中的等效项)以删除空格,换行符和CRLF
>之后发生的事情取决于IPN脚本,在连接到数据库时可能会遇到错误,解析IPN消息中的某些数据或某些编码错误.
简而言之:如果收到IPN消息,回发并验证,其他所有内容都发生在您服务器上自己的代码中,您必须开始挖掘日志文件(或确保创建日志,这总是很好的想法)找出发生了什么.如果问题是可重现的,那么检查其中一个示例脚本(包括日志记录)会发生什么事情总是一个好主意
希望这有助于解决IPN问题 – 任何有关IPN的问题?如果您想调查PayPal侧发生的事情,请联系paypal.com/mts.
标签:paypal-ipn,php,firewall,paypal,express-checkout
来源: https://codeday.me/bug/20190728/1562411.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。