C# 什么';为QuickBooks Online编写一次性脚本的最佳方式是什么?

C# 什么';为QuickBooks Online编写一次性脚本的最佳方式是什么?,c#,quickbooks-online,C#,Quickbooks Online,嗯 我真的花了好几个小时在这上面,但我一辈子都弄不明白 我想做一件非常简单的事情——我想为所有过期发票的客户轮询我的QuickBooks Online实例。在某个时刻,我想向他们发送警告电子邮件,如果他们逾期30天,我想在我的SaaS应用程序中暂停他们的实例 我想让引擎在周二和周四醒来,我的意图是编写一个C#应用程序,并使用Windows任务调度程序按上述时间表运行它 现在-我已经浏览了整个平台API和Intuit应用程序中心,它有很多页面,但不知怎么的,不连贯。看来,为了集成w/QuickBo

我真的花了好几个小时在这上面,但我一辈子都弄不明白

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

我想让引擎在周二和周四醒来,我的意图是编写一个C#应用程序,并使用Windows任务调度程序按上述时间表运行它

现在-我已经浏览了整个平台API和Intuit应用程序中心,它有很多页面,但不知怎么的,不连贯。看来,为了集成w/QuickBooks online,我需要使用一个“蓝点”或某种需要UI的联邦/OAuth身份验证-但是,这不适合我,因为我的应用程序没有UI。其他的帖子告诉人们去看看QBSDK,但这似乎只适用于QuickBooks桌面

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


Andrew

有几点需要澄清的问题可以帮助您继续:

  • 您不需要蓝点菜单。对那件事置之不理

  • 您不需要使用任何“联合”(不推荐使用)

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

这是一个可以让您生成长寿命代币的游乐场:

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

您需要使用标准的
Invoice
API端点-文档如下:

基本上,您将访问这个端点(使用OAuth进行身份验证):

您将得到一团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>
      ...

44
1.
2013-04-23T08:30:17-07:00
2013-04-23T08:30:18-07:00
海关1
弦型
习惯2
弦型
习惯3
弦型
1014
2012-04-20
美元
1.
1.
15
SalesItemLineDetail
1.
不
15
分类理货明细
...
<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>
      ...