我是Quickbooks API的新手。我在Quickbooks中的API Exolorer链接下找到了API列表。他们已经显示了Request URI&请求进行API调用所需的标头。我能理解。但是如何调用该URI或如何将该API与PHP集成并不是完全指定的。我试图调用URI并使用curl获得结果,但它没有成功。我已经失去了很多时间进行这种集成。我一直在搜索谷歌。但大多数结果都与PHP SDK有关。但我需要集成Quickbooks Online API。
创建实体的请求URI如下所示。
https:// {{baseurl}} / v3 / company / {{companyid}} / account
请帮我解决这个问题。
答案 0 :(得分:0)
正如大多数人所说,使用PHP SDK将是将QuickBooks Online与PHP集成的更简单方法:https://github.com/intuit/QuickBooks-V3-PHP-SDK
但是,使用普通的PHP cURL也是可能的,但在进行API调用之前需要了解一些概念:
1)OAuth 1.0协议
这是大多数开发人员所困惑的。 QuickBooks Online使用OAuth 1.0作为授权协议。您需要花一些时间来了解它是如何工作的。有关文档,您可以在此处阅读:https://developer.intuit.com/docs/0100_quickbooks_online/0100_essentials/000500_authentication_and_authorization/connect_from_within_your_app
但是,我建议您使用OAuth游乐场,它会让您了解实施它时的样子:https://appcenter.intuit.com/Playground/OAuth/IA/(填写您的使用者密钥和秘密,点击连接到Quickbooks按钮)< / p>
在此过程中,它将返回一个名为:RealmID的东西。这是QBO中的公司,把它放在URL上。
2)基本网址
在developer.intuit.com上创建应用程序时,在“密钥”选项卡下,您将看到“开发密钥”和“生产密钥”。右侧的相应键是您需要为{baseurl}部分填写的内容(例如,除了开发键之外,还有一个名为&#34; Accounting Sandbox Url&#34;:&#34; sandbox-quickbooks。 api.intuit.com&#34)。对于每个API实体端点,请参阅文档:https://developer.intuit.com/docs/api/accounting/customer
3)授权标题
您不太可能自己为OAuth 1.0实现它。 Twitter有一个很好的链接,用于如何使用步骤1)中的访问令牌和访问令牌秘密来生成签名:https://dev.twitter.com/oauth/overview/creating-signatures
您将签名作为授权标题的一部分。
如果您使用的是POSTMAN,则可以使用OAuth 1.0作为授权协议。这是一个例子
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://sandbox-quickbooks.api.intuit.com/v3/company/193514340994122/account/1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"authorization: OAuth oauth_consumer_key=\"qyprdDjYtPpiEpbwFQZuUoAjubpVqm\",oauth_token=\"lvprdfblXv4LqNVhIv2WH2JebiSZgNs9POiEoCJxMwEhqbgc\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1494441064\",oauth_nonce=\"cfh0b7\",oauth_version=\"1.0\",oauth_signature=\"KqpN9ximPGWnWJBaXg1Vs9urJLY%3D\"",
"cache-control: no-cache",
"postman-token: 7c570691-c6cd-a706-67a0-984c5ddb1e6a"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}