我已经在一个网站上工作了很长一段时间,这个网站很大程度上依赖于Paypal正常工作.没有它,它真的没用.
我早上大约凌晨1点(我在CET时区),一切都很完美,我完善了代码,功能,并且工作正常.我睡觉之前做了三次检查,一切正常.
我早上醒来,没有任何与Paypal有关的事实.在向您展示实际代码和错误之前,先对我使用的内容进行一些解释.我正在使用Express Checkout和Paypal Adaptive Payments SDK.
我在developer.paypal.com上创建了一些"虚拟"帐户,以模拟协调人(所有者)和买家互动,因为我有业主向用户提供资金的情况,反之亦然.无论如何,他们都工作得很好,现在他们都抛出了这个错误(在自适应支付SDK中,它告诉我哪一行代码是错误的,在Express Checkout中,因为那是通过文档完成的代码,它不显示在哪个文件中错误但是它是相同的错误):
'错误:14077410:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报握手失败'
现在我看到这篇文章https://devblog.paypal.com/poodle-ssl-3-0-vulnerability/后你完全禁用了SSL,我意识到问题实际上就在于此.您希望您的用户现在使用TLS,这完全没问题.我三重检查我的服务器启用了TLS,它确实改变了(已经超过一百万次)我的配置设置使用cURL中的TLS(因为我正在使用PHP)通过执行以下操作:
curl_setopt($ch, CURLOPT_SSLVERSION, 1); (这就是Express Checkout和自适应支付中的样子,它只是一个关联数组,但它们两者都是一样的)
我还在某处和你的建议中找到了实际更新我的api凭据.我做到了 我去了paypal.com - > API,然后点击了更新工作,但后来我注意到在我的developer.paypal.com帐户中我有一些虚拟帐户没有任何改变.我应该手动更新这些还是什么?
编辑:
这被发送到Paypal支持,我真的很匆忙,不能再写完整个东西了,很抱歉!问题是固定感谢的人究竟是谁花时间来阅读.
通过添加CURLOPT_SSL_CIPHER_LIST => 'TLSv1'到我的PPHttpConfig.php文件修复了该问题!:)
由于最近在SSLv3中发现了漏洞,许多Web服务提供商(即PayPal,Facebook,Google)正在禁用该漏洞并希望我们使用TLS.我在弄清楚如何做到这一点时遇到了一些麻烦.
我目前正在使用以下函数来处理我的cURL请求.
function CURLRequest($Request = "", $APIName = "", $APIOperation = "", $PrintHeaders = false)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_URL, $this->EndPointURL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $Request);
if($this->APIMode == 'Certificate')
{
curl_setopt($curl, CURLOPT_SSLCERT, $this->PathToCertKeyPEM);
}
$Response = curl_exec($curl);
/*
* If a cURL error occurs, output it for review.
*/
if($this->Sandbox)
{
if(curl_error($curl))
{
echo curl_error($curl).'<br /><br />';
}
}
curl_close($curl);
return $Response;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试点击PayPal的沙箱时,他们已经禁用了这个,我最终得到了一个cURL错误: 错误:14077410:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报握手失败 …