我使用curl验证PayPal IPN,但它抛出错误:SSL证书问题:无法获得本地颁发者证书.相同的代码正在开发服务器上,当我移动到客户端服务器时,它无法正常工作.
我是否需要购买ssl认证才能通过PayPal快速结账或我的编码部分的任何更改或任何需要在服务器上进行的设置进行付款.Curl已在服务器上启用.任何帮助将不胜感激.
我的代码如下,以及针对此的简化测试页:
$req = HAVING PARAMETERS FROM PAYPAL; $ch = curl_init("https://www.sandBox.paypal.com/cgi-bin/webscr"); curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_RETURNTRANSFER,CURLOPT_POSTFIELDS,$req); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,CURLOPT_SSL_VERIFYHOST,2); curl_setopt($ch,CURLOPT_FORBID_REUSE,CURLOPT_HTTPHEADER,array('Connection: Close')); curl_exec($ch); if(curl_errno($ch)) { echo 'Curl error: ' . curl_error($ch); }
解决方法
您告诉cURL验证SSL连接,但您没有告诉它要验证什么;
curl_setopt($ch,2);
curl_setopt($ch,CURLOPT_CAPATH,"./cacert.pem");
如果您自己没有最新的cacert列表,我建议您下载cURL维护者提供的那个:cacert.pem.