2013-02-12 36 views
0

嗨,我已經寫下了以下代碼以使用bigcommerce API。但它似乎有一些服務器問題。我的服務器是PHP> 5.3 & curl啓用,但API似乎沒有返回任何響應。任何人都可以幫助我解決這個問題嗎?除了cUrl之外,還有哪些更適合您的Big Commerce API?

這裏是我的代碼

$ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, 'https://store-bwvr466.mybigcommerce.com/api/v2'); 
    curl_setopt($ch, CURLOPT_USERPWD, 'demo'.':'.'df38dd10e9665a3cfa667817d78ec91ee9384bc3'); 
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); 

    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: close')); 

    $result = curl_exec($ch); 

    curl_close($ch); 

echo "<textarea>".$result."</textarea>"; 

phpinfo(); 

您可以檢查到我的直播服務器http://fuzonmedia.com/big/server_test.php

感謝

回答

0

所有請求到的Bigcommerce API需要使用SSL_RSA_WITH_RC4_128_SHA密碼進行加密。 API最初的問題是由於在發送請求時不告訴cURL使用正確的密碼。由於您的系統正在使用NSS庫來處理加密,因此可以通過cURL指示cURL使用以下代碼行。

curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'rsa_rc4_128_sha'); 

如果這不能解決您的問題,您將需要檢查cURL是否返回任何錯誤。您可以通過如下修改代碼來完成此操作。

$result = curl_exec($ch); 
    if ($result === false) { 
     echo '<textarea>'.curl_error($ch).'</textarea>'; 
    } else { 
     echo "<textarea>".$result."</textarea>"; 
    } 
    curl_close($ch); 

輸出錯誤消息可能會爲您提供更多線索,以瞭解發生了什麼問題。您也可以通過打開詳細的選項來獲取更多信息。請注意,此信息被輸出到STDERR,所以你不會看到你的網頁上,除非您重定向STDERRSTDOUT,即瀏覽器窗口。

// Switch on verbose information and display it on the web page. 
    curl_setopt($ch, CURLOPT_VERBOSE, true); 
    curl_setopt($ch, CURLOPT_STDERR, fopen('php://output', 'w+')); 

希望以上幫助。

親切的問候,
大衛

+0

我不認爲這個問題是與密碼相關的。但我可能是錯的。在我看來,更多的SSL證書問題。 – Saran 2013-02-21 05:07:13

+0

我不是100%確定,但將_CURLOPT_SSL_VERIFYPEER_設置爲_false_應該禁用SSL證書驗證。麻煩的是,沒有看到從cURL返回的任何信息,問題可能是任何事情。 – 2013-02-26 21:25:32

0

從以前的答案跟進 - 您也可以使用PHP的Bigcommerce庫(https://github.com/bigcommerce/bigcommerce-api-php)它提供了一個更簡單的方法來使用PHP API的交互。您可以訪問產品如 -

require 'vendor/autoload.php'; 
use Bigcommerce\Api\Client as Bigcommerce; 
$products = Bigcommerce::getProducts(); 

    foreach($products as $product) { 
     echo $product->name; 
     echo $product->price; 
    } 

問候大衛的有關密碼的答案,你需要將其設置爲rsa_rc4_128_sha,類似於以下。希望這有助於。 -

Bigcommerce::configure(array(
'store_url' => 'https://store-xxx.mybigcommerce.com', 
'username' => 'admin', 
'api_key' => 'xxxxxx' 
)); 
Bigcommerce_Api::setCipher('rsa_rc4_128_sha') 
Bigcommerce_Api::verifyPeer(false); 
相關問題