PayPal IPN 和 PDT 突然不再工作了

Posted

技术标签:

【中文标题】PayPal IPN 和 PDT 突然不再工作了【英文标题】:PayPal IPN and PDT suddenly does not work anymore 【发布时间】:2017-08-09 16:15:49 【问题描述】:

从本周开始,付款后转发到我们的网站在生产模式下不再起作用,但它仍然在沙盒中起作用。

实际上我们使用PDT作为直接转发和IPN作为备份。由于某种原因,付款没有完全完成。自本周初以来,似乎没有从 PayPal 建立 PDT 或 IPN 连接。 3 月 9 日的付款成功,但 3 月 11 日之后的所有付款都在 PayPal 页面上标记为成功,但我们的网站“不知道”,因此客户不会更新他们的帐户。

在尝试跟踪错误时,我切换到沙盒,但那里一切正常。

最近 PayPal 是否发生了一些变化? (付款过程中的设计是现在,但我不知道从什么时候开始......)

谢谢!

【问题讨论】:

【参考方案1】:

PDT 最大的缺点是消息只发送一次,而 IPN 会重复发送,直到服务器以正确的消息响应。您可以同时运行两者,但根据我的经验,这非常罕见(我以构建电子商务系统为生)。最近,我公司的许多使用 PayPal 作为支付方式的客户来找我们时遇到了类似的问题(RBS WorldPay 更是如此)。解决方案是尝试以下方法:

确认 IPN 侦听器 URL 仍在工作并指向 正确的网站(有些人尝试使用一个 PayPal 帐户 多个站点,并将其更改为第二个站点,而不是认为它会 停止第一个站点的 IPN)。

确保安装了最新版本的 PayPal 网关(如果 在 OpenCart / WooCommerce / Magento / 等...)。最新版本 需要 SHA-256。

确保服务器已启用 SHA-256,如上所述 PayPal 现在要求 用户,以确保他们拥有它以便散列工作。

确保已安装 SSL 证书。这还不是一个特定的要求,但在这个时代,如果你没有一个,你不可能得到很多订单。同样出于某些奇怪的原因,它为某些客户端修复了 IPN。

希望这会有所帮助!

【讨论】:

同服务器同站点,我只是切换“沙盒模式”:if (SANDBOX == 1) $paypal['url']="https://www.sandbox.paypal.com/cgi-bin/webscr"; $paypal['fsock_open']="ssl://www.sandbox.paypal.com"; $paypal['pp_hostname']="www.sandbox.paypal.com"; // Production Site: www.paypal.com else $paypal['url']="https://www.paypal.com/cgi-bin/webscr"; $paypal['fsock_open']="ssl://www.paypal.com"; $paypal['pp_hostname']="www.paypal.com"; 沙盒->作品生产->不转发 这看起来像是您用来向 PayPal 发出请求的代码的一部分,实际上这不太可能是问题所在。我所说的侦听器 URL 是 PayPal 仪表板中设置的一部分。你那里的网址改了吗? 监听器 URL 用于沙盒和生产模式相同。那么为什么沙盒可以工作而生产模式不行呢? 您是否启用了 SHA-256?您的 IPN 是否使用 SHA-256?你有 SSL 证书吗? 启用 SHA-256 是什么意思? OpenSSL 支持 SHA-256。生产服务器使用签名的 SSL 证书,测试服务器仅使用自签名证书。我不完全知道您对使用 SHA-256 的 IPN 的意思。我的服务器正在“侦听”任何 IPN 连接的 URL 是安全 URL。

以上是关于PayPal IPN 和 PDT 突然不再工作了的主要内容,如果未能解决你的问题,请参考以下文章

PayPal:IPN 和 PDT 脚本同时工作

Paypal 中的 IPN 与 PDT

Paypal 中的 IPN 与 PDT

使用 Paypal ipn 和 pdt 进行付款

PayPal 订阅 - 缺少 PDT 发票

无法在 paypal 中配置 PDT 或 IPN