2013-02-22 73 views
0

我試圖通過捲曲呼叫服務,這裏是我的代碼每次我得到了連接錯誤的QuickBook在線服務提供了500內部服務器

error_reporting(-1); 
$qbsite = "https://qbo.sbfinance.intuit.com/resource/account/v2/960432556"; 
$headers = array(
     'Content-Type'=>'application/xml', 
     'oauth_version' => "1.0", 
     'oauth_signature_method'=>"HMAC-SHA1", 
     'oauth_nonce'=>"xxx", 
     'oauth_timestamp'=>"xxx", 
     'oauth_consumer_key'=>"qyprdvZraQrBVbrPIptwd6gl6C6knP", 
     'oauth_token'=>"qyprdyLcCq9KMGVzqxtObeOkTvSWhhi7sNSW62u9gwqDXsc7", 
     'oauth_signature'=>"LnVYSgE9YZ77KgKZ1kLT3ouIu1M=", 

); 

$xmlData = '<?xml version="1.0" encoding="utf-16"?> 
      <Account xmlns:ns2="http://www.intuit.com/sb/cdm/qbo" xmlns="http://www.intuit.com/sb/cdm/v2"> 
       <Name>Loan Account </Name> 
       <Desc>Loan Account</Desc> 
       <Subtype>Savings</Subtype> 
       <AcctNum>5001</AcctNum> 
       <OpeningBalanceDate>2010-05-14</OpeningBalanceDate> 
      </Account>'; 

$ch = curl_init($qbsite); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "\n{$xmlData}"); 
$response = curl_exec($ch); 
print($response);die; ! 
時間

enter image description here

回答

2

此:

$headers = array(
     'Content-Type'=>'application/xml', 
     'oauth_version' => "1.0", 
     'oauth_signature_method'=>"HMAC-SHA1", 
     'oauth_nonce'=>"xxx", 
     'oauth_timestamp'=>"xxx", 
     'oauth_consumer_key'=>"qyprdvZraQrBVbrPIptwd6gl6C6knP", 
     'oauth_token'=>"qyprdyLcCq9KMGVzqxtObeOkTvSWhhi7sNSW62u9gwqDXsc7", 
     'oauth_signature'=>"LnVYSgE9YZ77KgKZ1kLT3ouIu1M=", 

); 

甚至沒有接近正確的OAuth簽名。 OAuth簽名將所有這些信息放在一個單獨的Authorization: ... HTTP標頭中,而您已將每段OAuth數據放在單獨的HTTP標頭中。

例如,一個正確的OAuth頭看起來是這樣的:

Authorization: OAuth realm="", 
    oauth_consumer_key="dpf43f3p2l4k3l03", 
    oauth_nonce="kllo9940pd9333jh", 
    oauth_timestamp="1191242096", 
    oauth_signature_method="HMAC-SHA1", 
    oauth_version="1.0", 
    oauth_signature="tR3%2BTy81lMeYAr%2FFid0kMTYa%2FWM%3D" 

此外,OAuth的簽名不是靜態值 - 它們必須被計算,他們每個請求而改變。

您應該下載每晚構建的QuickBooks PHP DevKit(免責聲明:我是作者) - 這是一個特別設計用於完成您正在做的事情(與QuickBooks集成)的庫,它負責構建正確的OAuth請求您。

具體來說,下載它,看看這些例子:

  • 文檔/ example_ipp_oauth.php
  • 文檔/ example_ipp_ids_5.php
+0

是的,但它工作正常,但是當我使用example_ipp_ids_1.php並添加了某些數據(令牌,uname和密碼等正確)$ list = $ CustomerService-> findAll $ Context,$ realmID);在我擁有的QBO中返回emty對象共有12位顧客。任何建議?或者可能是因爲它是每晚構建? – 2013-02-25 05:32:36

+0

docs/example_ipp_ids_1.php未設置爲使用OAuth。因此,除非您將docs/example_ipp_ids_1.php頂部的所有初始化工具換成OAuth安裝程序,否則它將無法工作。如果您比較兩個示例之間的代碼,應該很明顯需要更改。 – 2013-02-25 11:46:54

+0

是的基思我明白,但我只是想從QBO獲取所有客戶名單是否有任何方式來獲取此數據.... – 2013-02-25 12:59:39

0

你有沒有試圖消除,在此行末尾

'oauth_signature'=>"LnVYSgE9YZ77KgKZ1kLT3ouIu1M=", 
+0

是的,但它沒有工作:(我發呆curl url是否正確?是的,謝謝你的快速回放 – 2013-02-22 11:16:26