2013-02-19 6 views
6

Я использую curl для проверки IPN PayPal, но он вызывает ошибку: SSL certificate problem: unable to get local issuer certificate. Тот же код работает на сервере разработки, и когда я перешел на клиентский сервер, он не работает.PayPal IPN: не удалось получить сертификат локального эмитента

DO Мне нужно приобрести сертификат 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,1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $req); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close')); 

curl_exec($ch); 
if(curl_errno($ch)) 
{ 
    echo 'Curl error: ' . curl_error($ch); 
} 
+0

Возможный дубликат [Paypal Access - сертификат SSL: не удалось получить сертификат локального эмитента] (http://stackoverflow.com/questions/17478283/paypal-access-ssl-certificate-unable-to-get-local-issuer -сертификат) – jpklzm

ответ

8

Вы говорите Curl для проверки соединения SSL, но вы не говорите ему, что для проверки против;

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 

Убедитесь, что вы указать на список последнюю дату СА доверять, добавив:

curl_setopt($ch, CURLOPT_CAPATH, "./cacert.pem"); 

Если вы не имеете список cacert уточненный себя, я Рекомендуем загрузить файл, предоставленный поддерживающим cURL: cacert.pem.

4

Вы хотите CURLOPT_CAINFO (пункты к PEM файла) не CURLOPT_CAPATH (указывает на каталог, содержащий файлы PEM).