2016-08-12 93 views
0

隨着mpesa B2C集成。我試圖用捲曲如何mpesa ssl握手失敗

 $url = "https://196.201.214.136:18423/mminterface/request"; 




    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1); 
    // curl_setopt($ch, CURLOPT_PORT, 18423); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXml); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
              'Content-type: text/xml', 
              'Content-length: ' . strlen($requestXml) 
             )); 
    $output = curl_exec($ch); 

    if(curl_errno($ch)){ 
     var_dump(curl_error($ch)); 
    } else{ 
     curl_close($ch); 
    } 

我得到一個錯誤

error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure'

這是NSS改變SSL版本OpenSSL的了。 如何解決握手失敗。

+0

客戶端和服務器無法就SSL/TLS版本或密碼套件達成一致。檢查服務器支持哪些協議和密碼套件以及客戶端支持哪些協議和密碼套件。 – vcsjones

回答

0

如果我沒有記錯,MPESA會使用一些您需要與之一起生成的公私密鑰對。如果您沒有正確設置,那麼您的SSL請求將失敗。你做到了嗎?

0

Safaricom發佈了M-Pesa API作爲RESTful API,可通過它們的developer portal訪問。您無需使用Safaricom簽署的SSL證書即可使用API​​。只要您的服務器具有公開簽署的證書,Safaricom API網關應該能夠接收請求並將響應發送到您的服務器。