Quickbook在线服务提供500个内部服务器

时间:2013-02-22 10:59:37

标签: php curl quickbooks quickbooks-online

我正在尝试通过curl调用服务,这是我的代码,每次我收到附加错误

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 个答案:

答案 0 :(得分: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标头中,而您在单独的HTTP标头中打了每个OAuth数据。

例如,正确的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

答案 1 :(得分:0)

您是否尝试删除此行末尾的

'oauth_signature'=>"LnVYSgE9YZ77KgKZ1kLT3ouIu1M=",