2016-02-21 2 views
1

Я использую этот код для обработки Paypal передачи данных платежа (PDT):Paypal PDT - SSL подключение ошибки

$url = 'https://www.sandbox.paypal.com/cgi-bin/webscr'; 
$tx_token = $_GET['tx']; 
$auth_token = "my_token"; 

$fields = array(
    'cmd' => '_notify-synch', 
    'tx' => $tx_token, 
    'at' => $auth_token, 
); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POST, count($fields)); 
curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($fields)); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 15); 

$res = curl_exec($ch); 
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

echo 'Curl error: ' . curl_error($ch); 

echo "status: " . $status; 
curl_close($ch); 

И я получаю:

Curl error: SSL connect error 
status: 0 

Я попытался сделать API в Почтальон с тем же URL: www.sandbox.paypal.com с теми же параметрами (cmd, at, tx), и я получил ответ успеха. Что я сделал не так?

ответ

1

PayPal обновил до TLS 1.2 для своих конечных точек API-интерфейса Sandbox. Вы можете узнать больше об обновлении и когда это повлияет на производство на TLS 1.2 and HTTP/1.1 Upgrade Microsite.

Вам понадобится OpenSSL для версии 1.0.1c или выше и последняя версия libcurl. Насколько ваш конкретный код, вы, вероятно, хотите сделать следующее:

curl_setopt($ch, CURLOPT_SSLVERSION, 6); // CURL_SSLLVERSION_TLSv1_2 = 6

Кроме того, вы, вероятно, следует оставить CURLOPT_SSL_VERIFYHOST быть 2 для проверки сертификата SSL для конечной точки.

Дополнительную информацию о требованиях к языковой среде вы можете найти на странице PayPal TLS update repository.

+0

Я добавил: 'curl_setopt ($ ch, CURLOPT_SSLVERSION, 6); // CURL_SSLLVERSION_TLSv1_2 = 6' и лишал 'CURLOPT_SSL_VERIFYHOST' равным 2. Теперь я не получаю ошибку Curl, но получаю:' status: 200' 'string (5)" FAIL "' Спасибо! – user3084703

+0

Мне удалось установить это исправление (у меня была ошибка с tx). Ваше предложение работает !!! Благодаря!! – user3084703