为QuickBooks Online编写一次性脚本的最佳方法是什么?

本文关键字:最佳 方法 是什么 脚本 一次性 QuickBooks Online | 更新日期: 2023-09-27 17:57:18

>OK,

我真的花了几个小时在这上面,而且 - 对于我的生活 - 无法弄清楚。

我想做一些非常简单的事情 - 我想轮询我的 QuickBooks Online 实例,以查找所有发票逾期的客户。在某个时候,我想向他们发送警告电子邮件,如果他们逾期 30 天,我想在我的 SaaS 应用程序中暂停他们的实例。

我希望执行此操作的引擎在星期二和星期四唤醒,我的目的是编写一个 C# 应用并使用 Windows 任务计划程序按所述计划运行它。

现在 - 我已经遍历了平台 API 和 Intuit 应用中心,它有很多页面,但不知何故,不连贯。似乎为了在线集成QuickBooks,我需要使用"蓝点"或某种需要UI的联合/OAuth身份验证 - 但是,这不适合我,因为我的应用程序没有UI。其他帖子告诉人们查看QBSDK,但这似乎仅适用于QuickBooks桌面。

不知道为什么这这么难 - 它应该是一个简单的用例。有人可以帮忙吗?如果我能得到示例代码,那就太美了。

安德鲁

为QuickBooks Online编写一次性脚本的最佳方法是什么?

几点澄清,让你开始:

  • 不需要蓝点菜单。忽略任何关于这一点。

  • 不需要使用任何"联合"(已弃用)的内容。

  • 确实需要使用OAuth,并且它确实需要具有GUI,但是GUI仅出现一次之后您将获得长期令牌,您可以存储这些令牌并用于连接所有未来的会话。 即只有第一个连接需要GUI(这是大多数OAuth应用程序的典型特征),之后它可以在没有GUI的情况下无人值守地运行。如果你真的不想构建一个GUI,你可以使用Intuit提供的OAuth游乐场工具来生成一个(例如,使用他们的GUI而不是你的)。

这是允许您生成那些长期代币的游乐场:

  • https://appcenter.intuit.com/Playground/OAuth/IA/

从那里,使用您选择的 OAuth 库(如果您浏览 developer.intuit.com,Intuit 会提供一些库)向 Intuit 的端点发出 REST 请求。

您需要使用标准 Invoice API 终端节点 - 文档在此处:

  • https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/030_entity_services_reference/invoice#Querying_an_Invoice

基本上,您将命中此端点(使用OAuth进行身份验证):

https://quickbooks.api.intuit.com/v3/company/(your company ID)/query?query=SELECT * FROM Invoice WHERE Balance > 0

你将得到一个像这样的XML团:

<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2013-04-23T08:30:37.983-07:00">
  <QueryResponse startPosition="1" maxResults="1" totalCount="1">
    <Invoice domain="QBO" sparse="false">
      <Id>44</Id>
      <SyncToken>1</SyncToken>
      <MetaData>
        <CreateTime>2013-04-23T08:30:17-07:00</CreateTime>
        <LastUpdatedTime>2013-04-23T08:30:18-07:00</LastUpdatedTime>
      </MetaData>
      <CustomField>
        <Name>Custom 1</Name>
        <Type>StringType</Type>
      </CustomField>
      <CustomField>
        <Name>Custom 2</Name>
        <Type>StringType</Type>
      </CustomField>
      <CustomField>
        <Name>Custom 3</Name>
        <Type>StringType</Type>
      </CustomField>
      <DocNumber>1014</DocNumber>
      <TxnDate>2012-04-20</TxnDate>
      <CurrencyRef name="United States Dollar">USD</CurrencyRef>
      <Line>
        <Id>1</Id>
        <LineNum>1</LineNum>
        <Amount>15.00</Amount>
        <DetailType>SalesItemLineDetail</DetailType>
        <SalesItemLineDetail>
          <ItemRef name="Sales">1</ItemRef>
          <TaxCodeRef>NON</TaxCodeRef>
        </SalesItemLineDetail>
      </Line>
      <Line>
        <Amount>15.00</Amount>
        <DetailType>SubTotalLineDetail</DetailType>
        <SubTotalLineDetail/>
      </Line>
      ...