2016-04-14 20 views
3

Bir PHP'nin canlı web sitesi için CURL yürütme altındaki yanıtınız olarak "SSL bağlantı hatası" alıyorum. Paypal sanal alanı CURL yürütme - "SSL bağlantı hatası" [ÇÖZÜMLÜ]

$ch  = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr'); 

$header = "POST /cgi-bin/webscr HTTP/1.1\r\n"; 
$header .= "Content-Type: application/x-www-form-urlencoded\r\n"; 
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; 
$header .="Connection: close\r\n\r\n"; 
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')); 
if(!($res = curl_exec($ch))) { 
    curl_close($ch); // SSL connection Error 
} 

ben hem Canlı ve kum URL'ler çalıştı. Ama hata aynı.

Bazı forumların söylediği gibi CURL paramlarını değiştirerek denedim.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($ch, CURLOPT_SSLVERSION, 6); 

Ama hiç şans :(.

$req aşağıdaki kod sonucudur.

$req = 'cmd=_notify-validate'; 
if(function_exists('get_magic_quotes_gpc')) { 
    $get_magic_quotes_exists = true; 
} 
foreach ($myPost as $key => $value) {   
    if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) { 
     $value = urlencode(stripslashes($value)); 
    } else { 
     $value = urlencode($value); 
    } 
    $req .= "&$key=$value"; 
} 

POST parametresi, bu konuda emin doğruysa ve edilmektedir.

curl_getinfo olduğunu Aşağıdaki sonucun verilmesi:

[url] => https://www.sandbox.paypal.com/cgi-bin/webscr 
[content_type] => 
[http_code] => 0 
[header_size] => 0 
[request_size] => 1020 
[filetime] => -1 
[ssl_verify_result] => 0 
[redirect_count] => 0 
[total_time] => 0.220374 
[namelookup_time] => 1.7E-5 
[connect_time] => 0.080843 
[pretransfer_time] => 0 
[size_upload] => 855 
[size_download] => 0 
[speed_download] => 0 
[speed_upload] => 3879 
[download_content_length] => -1 
[upload_content_length] => 0 
[starttransfer_time] => 0 
[redirect_time] => 0.220472 
[certinfo] => Array 
    (
    ) 

[redirect_url] => 

Ayrıca, curl_error ($ ch) "SSL Bağlantısı Hatası" gösteriyor. TSL zaten yükseltilmiş ve SSL sürümü tamam.

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1); 

Bu belgenin belirttiği gibi yukarıdaki satırı ekleyerek denedim.

http://jmsliu.com/3511/paypal-ipn-ssl-connection-error-solution.html

Ama hiç şans

.

Herhangi bir yardım için teşekkür ederiz.

+0

Sorununuz hakkında daha fazla bilgi vermeniz gerekir. En iyi yol, HTTP üstbilgileri (istek ve yanıt veren) çıktısıdır. CURL isteğinizle 'CURLOPT_HEADER' ve' CURLINFO_HEADER_OUT' seçeneklerini ayarlayın, ardından yanıt içeriğini ve curl_getinfo'nun çıktısını gönderin. – hindmost

+0

curl_getinfo ($ ch) sonucu eklendi. –

cevap

1

Sitesi onu basitçe çok eski bir OpenSSL sürümünü çalıştıran olabilir Bu durumda ... son 5 yıldır mükemmel

çalışıyordu. Paypal şimdi TLS 1,2 gerektirir. TLS 1.2, 03/2012'de, yani yaklaşık 4 yıl önce OpenSSL versiyon 1.0.1 ile eklenmiştir.
Kullandığınız OpenSSL sürümünü öğrenmek için bkz. How to check if installed OpenSSL version is >= 0.9.8k.

+0

Bu kodu çalıştırarak, "OpenSSL Sürüm Tamam" gibi görünüyor. http: // stackoverflow.com/questions/9693614/nasıl yapılır-check-install-openssl-version-is-0-9-8k –

+0

@EldhoNewAge: Kod çok eski sürüm 0.9.8 için denetler (Bu açıkça bariz olduğunu düşündüm Başlık). Örnek olarak nasıl kontrol edileceği örnek olarak kullanılmıştır. Tabii ki 1.0.1 ya da daha iyisi olup olmadığını öğrenmek için '> = 0x10001000 '' i kontrol etmeniz gerekiyor, bkz. Https://www.openssl.org/docs/manmaster/crypto/OPENSSL_VERSION_NUMBER.html. –

1

SORUN ÇÖZÜM !!!

CURL kütüphanesini güncelledim ve sorun çözüldü.

kontrol etmek

$ php -r '$ ch = curl_init(); curl_setopt ($ ch, CURLOPT_URL, "https://tlstest.paypal.com/"); var_dump (curl_exec ($ ch));'

Başarıyla PayPal_Connection_OK yazdırıldı. Hata durumunda, boole (yanlış) yazdırılır.

İlgili konular