IPN未发送,且握手未经验证。请检查您的信息。

32

我正在使用Paypal的Express Checkout,用于单次用户付款集成。

工作流程:首先创建令牌,然后将用户重定向到Paypal页面,并成功返回我的返回URL页面。具体步骤如下:

  1. SetExpressCheckout(创建令牌)
  2. DoExpressCheckoutPayment(执行付款)

我的问题:

  1. 现在我需要为这个付款系统设置IPN。
  2. 我的通知URL在模拟器上无法正常工作。它会出现错误信息(未发送IPN,握手未经验证,请检查您的信息)。请参考以下链接:https://developer.paypal.com/developer/ipnSimulator/

我需要一些帮助来解决这个问题,因为我自己无法解决。

非常感谢您提前的帮助。


1
按照这里的步骤进行测试PayPal IPN,您应该能够找到问题所在。 - Drew Angell
1
我99%确定模拟器对我来说只是坏了。我转而使用沙盒环境进行测试,一切都正常。 - Kevin Wheeler
1
@kevinWheeler 你是什么意思?你能详细说明一下你如何测试“使用沙盒环境”吗?编辑:我想我明白了...这是一个全新的测试系统,位于www.sandbox.paypal.com下。 - Nilzor
今天我遇到了同样的错误。大多数情况下是ipn-listner脚本出错了。所以,我检查了错误日志并修复了我的脚本中的错误,IPN模拟器上的错误也消失了。 - Dat TT
4个回答

21

握手错误最有可能发生在您的服务器/密钥库配置不符合升级后的PayPal SSL加密算法时。

IPN模拟器将连接到已升级为Versign G5根证书/SHA-2加密算法(顺便说一句,这是行业标准,应该在2016年遍布各地的)的PayPal沙盒环境。 一旦您的IPN主机未达到合规要求,SSL连接将因握手问题而出错。

只需通过运行如下所示的连接脚本对接PayPal沙盒终端进行服务器检查:

openssl s_client -connect api-3t.sandbox.paypal.com:443 -showcerts -CApath /etc/ssl/certs/ 
如果您没有收到“验证返回代码:0(ok)”,那么您可能需要检查证书/ SHA-2 兼容性,按照 PayPal 在此处发布的一般说明进行操作:2015-2016 SSL 证书更改微网站

2
我也遇到了相同的错误,而且我正在使用SH2加密算法。当使用您的openssl命令进行测试时,我也得到了“Verify return cod: 0 (ok)”以及许多其他信息。可能出了什么问题? - Uriel Hernández
2
需要关注的两个部分:1-您的脚本是否捕获了IPN消息?检查Web服务器访问日志和可能阻止PayPal向您的服务器发送帖子的路由/防火墙设置 / 2-当您的脚本将参数发送回PayPal时,它是否收到了验证响应?将返回“已验证”或“无效”。为了回答您最后的担忧,POST-Back是验证(仅验证)消息的安全方式,或者您可以通过设置自己的身份验证规则来跳过它,例如检查它是否来自PayPal IP地址。 - pp_pduan
1
在我的情况下,我是像这样向我的URL末尾添加一个变量的:?tid=701。在将其从URL末尾删除后,握手完成并且IPN重新开始工作。 - iconMatrix
3
我有同样的问题,但我完全不知道你们在说什么哈哈 @pp_pduan - Alain Goldman
1
链接已失效。如果答案中包含更多信息会更好。 - CoryCoolguy
显示剩余4条评论

2
我遇到了同样的问题。一个解决方法是在您的沙盒商业账户上实际设置IPN通知URL并从该处进行测试。
  • 使用您的沙盒商业帐户(sb-xyz@business.example.com)登录https://sandbox.paypal.com
  • 导航到您的帐户设置(Account Settings)页面
  • 网站付款(Website Payments)
  • 更新即时支付通知(Instant payment notifications)
  • 在那里设置您的通知URL。

确保您的IPN监听器不在防火墙后面,并且可以直接从外界访问。


1

PayPal的回应:

“感谢您联系PayPal商家技术服务,很抱歉我们回复您的邮件有所延迟。

我们已经意识到IPN模拟器存在问题,我们的开发团队正在修复中。在此问题得到解决之前,建议您通过在沙盒中进行付款来运行IPN测试,因为我们确实会在每次付款时发送IPN请求。

如果您在付款测试中遇到类似的问题,请告知我们,我们可以进行查看。

对造成的不便,我深表歉意。”


1
我的问题是,由于脚本也无法工作,看起来这个错误是真实存在的,但连接可以在访问日志中看到。你所说的IPN模拟器错误正在淹没搜索结果,并使我难以找到解决方法。所有测试、命令行、远程测试站点等都返回正常和正确的TLS版本等,因为该服务器目前托管着与PayPal良好配合的其他2个站点。 - David Bell

0
使用另一个域名。 问题出在 DNS。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接