如何使用PHP集成Quickbooks Online API?

时间:2017-04-10 05:34:46

标签: php quickbooks

我是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

请帮我解决这个问题。

1 个答案:

答案 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;
  }