由于 OpenSSL 错误,无法完成 Paypal 即时付款通知

Posted

技术标签:

【中文标题】由于 OpenSSL 错误,无法完成 Paypal 即时付款通知【英文标题】:Unable to complete Paypal Instant Payment Notifications due to OpenSSL Error 【发布时间】:2016-05-26 23:40:30 【问题描述】:

我正在尝试在 paypal 中设置即时付款通知,但在验证阶段无法返回 tls://www.sandbox.paypal.com。

我正在使用此处找到的代码:https://developer.paypal.com/docs/classic/ipn/gs_IPN/

然而,当我尝试连接时,我收到以下错误:

 php Warning:  fsockopen(): SSL operation failed with code 1. OpenSSL Error     messages:
 error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure in /htdocs/test.php
fsockopen(): Failed to enable crypto in /htdocs/test.php

我已阅读信息here,似乎我尝试使用错误的协议进行连接,或者我安装了错误的证书。我的 OpenSSL 是 1.0.1e 版本。

不幸的是,如果需要,我不知道如何调试或安装正确的证书

【问题讨论】:

PayPal IPN acknowledgements failing with SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure的可能重复 【参考方案1】:

您无需安装 SSL 证书。只是您服务器上的软件堆栈需要更新。

查看this guide on the POODLE Vulnerability了解更多详情。

【讨论】:

看来我已经使用了所需的 openssl 版本并安装了 php 5.5.32。那篇文章提到了 CURLOPT_SSLVERSION 到 6 (TLS 1.2),但是来自 paypal 的代码使用 fopen,所以我认为这不适用? 我建议使用 curl 而不是 fopen。 转换为 CURL 并使用以下 curl 选项来修复握手问题。 curl_setopt($ch, CURLOPT_SSLVERSION, 6); 使用当前版本的 OpenSSL 和 PHP,您不必直接指定 ssl 版本。它应该自动回退到工作协议。不管怎样,很高兴它对你有用。

以上是关于由于 OpenSSL 错误,无法完成 Paypal 即时付款通知的主要内容,如果未能解决你的问题,请参考以下文章

适用于 PayPal 的 ActiveMerchant Poodle 补丁

Paypal Payments Pro Sandbox 错误 很抱歉,我们现在无法完成您的付款。请稍后再试

我不断收到关于 paypal php 自适应支付 API 支付的错误“您的支付无法完成......”

PayPal沙盒“抱歉,我们目前无法完成您的购买”

PayPal IPN OPENSSL 错误:14077410:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报握手失败

Magento 2 - Paypal 错误“我们无法启动快速结帐”。