2017-08-03 151 views
1

好日子,我是新的服務器設置。我目前使用laravel 5.4整合我quickbooks app我活的服務器上http://qb.dagnum.com/connect但我不斷收到此錯誤進行API調用時發生cURL錯誤。 cURL錯誤號:[60] SSL證書prob:證書鏈中的自簽名證書

(1/1) SdkException 
cURL error during making API call. cURL Error Number:[60] with error:[SSL certificate problem: self signed certificate in certificate chain] 

我用「作曲家需要的QuickBooks/V3-PHP-SDK」添加程序包。服務器已通過SSL認證安裝,但仍然出現錯誤。

我的代碼:

use App\Http\Controllers\Controller; 
use QuickBooksOnline\API\DataService\DataService; 

class Auth2Controller extends Controller 
{ 
    public function index() 
    { 

     $dataService = DataService::Configure(array(
     'auth_mode' => 'oauth2', 
     'ClientID' => "Q0lCkcEshsGMHOEula2r5RKc2yhxvMsYEpKN1lw1WZwyfd1Si6", 
     'ClientSecret' => "gE0F9hLgwx9OBzRpNxyOvWJH6L2fIhzAwBugPJHq", 
     'accessTokenKey' => 'eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiZGlyIn0..4z4Assj4x1qt8H4DtQco6A.nmV2jTxaDMVdFWEUO16q5qhbd5aD6U-U-RYnSNywqg-HPC_3_jvwpMJU1a1S5X-PgPUy60WvVy_8p1awY7kIoFzTV4IhdFLrZpYtBUGCjcsvjxWeOSgP6oCayBEmCv7zzabtgB6vxU46jQqKX2IXYUGPPtyYO64hrgELFR4SKUK6boZiVnh8z19gnvsReKMmIINA3-NgC6QJqMRp6HWgzCa9RuDN9tCtrAK2dy5xmJRNSNgdv_gyg1bfdX4l4b30fLPzFk31fsTT9NTJq9PuGtdTsvUuCj7Hme6HPldD9TKYRXWU8TKrQQrQWEpdlbPr6F3rhP6IdmCv9t1XH_WzF_1IseRUoYhiTUjubig-j8gzwajIdYQTzpJQKJ92QiAEyt8k40WWg0v69hEC0w7WRBuUE-IJ50xWypqS_P28IWt1G14rovZ97soGOteSik-41g1icR2zxfNhXGq7zO7oU5B8r-ej5Pb52T0MCMktgd6y32bqwo2pcEzblL2bZs7DZ7LDx5peY4TIfGW21crTE6xjhRr7LdqB8K505pRqIOP20eaRgwtGHLZ3bdBt1_negw2AGjc409BM0nLzzmODxr3yo-YdGwkcOjm5QgbGAsrnpoSo9tSpxPHoN0vMRneRdsKCd6CZG5M1OIOMuj7spkm442tvwiAMCx2Fh-STG6fMnhOq7l_f8NW_3kscxtF2.obQxJKjPfi1KlaQQ_OUoNg', 
     'refreshTokenKey' => "L011509163184Q0K7DT40SVXhJXAfyoj6B6EbSr3Ty64yVvF5A", 
     'QBORealmID' => "123145857569084", 
     'baseUrl' => "https://sandbox-quickbooks.api.intuit.com" 
    )); 

     $dataService->setMinorVersion("9"); 
     $CompanyInfo = $dataService->getCompanyInfo(); 
     $error = $dataService->getLastError(); 

    if ($error != null) { 
     echo "The Status code is: " . $error->getHttpStatusCode() . "\n"; 
     echo "The Helper message is: " . $error->getOAuthHelperError() . "\n"; 
     echo "The Response message is: " . $error->getResponseBody() . "\n"; 
     echo "The Intuit Helper message is: IntuitErrorType:{" . $error->getIntuitErrorType() . "} IntuitErrorCode:{" . $error->getIntuitErrorCode() . "} IntuitErrorMessage:{" . $error->getIntuitErrorMessage() . "} IntuitErrorDetail:{" . $error->getIntuitErrorDetail() . "}"; 
    } 

    } 

我也看到了捲曲功能

private function setSSL(&$curl_opt, $verifySSL){ 
     if($verifySSL){ 
      $curl_opt[CURLOPT_SSL_VERIFYPEER] = true; 
      $curl_opt[CURLOPT_SSL_VERIFYHOST] = 2; 
      $curl_opt[CURLOPT_CAINFO] = dirname(dirname(__FILE__)) . "/OAuth/OAuth2/certs/apiintuitcom.pem"; //Pem certification Key Path 
    } 
    } 

試圖取代

$curl_opt[CURLOPT_CAINFO] = dirname(dirname(__FILE__)) . "/OAuth/OAuth2/certs/apiintuitcom.pem"; 

to `$curl_opt[CURLOPT_CAINFO] ="/home/servername/public_html/quickbooks_app/resources/cert/cacert.pem";` 

,但我得到這個錯誤 Http狀態代碼:[401] Http響應正文爲空或空。

我應該怎麼做才能解決這個問題,請..

+0

找到答案的運氣好運嗎? –

回答

0

你去/供應商/ QuickBooks的/ V3-PHP-SDK/src目錄/核心/ HttpClients和編輯CurlHttpClient.php

找到

// $curl_opt[CURLOPT_CAINFO] = dirname(dirname(__FILE__)) . "/OAuth/OAuth2/certs/apiintuitcom.pem"; //Pem certification Key Path 

改變它

' $curl_opt[CURLOPT_CAINFO] ="/home/folder/public_html/quickbooks_app/resources/cert/cacert.pem"; 

注意:您可以將cacert.pem放在任何地方,只需更改鏈接它的地址即可。

你可以得到cacert.pem在這個網站https://curl.haxx.se/docs/caextract.html

1

我已經放棄了apiintuitcom.pem文件自帶的SDK,並使用cacert.pem,你可以找到關於PHP_OAuth2.0示例應用程序開始。我也在使用一個錯誤的baseUrl但我改變了你的。這爲我修復了這個錯誤。我setSSL方法現在看起來是這樣的:

private function setSSL(&$curl_opt, $verifySSL){ 
    if($verifySSL){ 
     $curl_opt[CURLOPT_SSL_VERIFYPEER] = true; 
     $curl_opt[CURLOPT_SSL_VERIFYHOST] = 2; 
     $curl_opt[CURLOPT_CAINFO] = dirname(dirname(__FILE__)) . "/OAuth/OAuth2/certs/cacert.pem"; //Pem certification Key Path 
    } 
} 

$dataService幾乎是一樣的你。

相關問題