行,
我真的花了几个小时在这上面 - 而且对于我的生活 - 无法弄清楚。
我想做一些非常简单的事情 - 我想为所有过期发票的客户推荐我的QuickBooks Online实例。在某个时刻,我想向他们发送警告电子邮件,如果他们过了30天,我想在我的SaaS应用程序中暂停他们的实例。
我希望执行此操作的引擎在周二和周四醒来,我的目的是编写一个C#应用程序并使用Windows任务计划程序按照所述计划运行它。
现在 - 我已经遍布平台API和Intuit应用程序中心,它的页面数量很多,但不知何故,语无伦次。看来,为了在线集成w / QuickBooks,我需要使用"蓝点"或某种需要UI的联合/ OAuth身份验证 - 但是,由于我的App 没有UI,因此这不适合我。其他帖子告诉大家看看QBSDK,但这似乎只适用于QuickBooks桌面。
不知道为什么这么难 - 它应该是一个简单的用例。有人可以帮忙吗?如果我能得到示例代码,它就会很漂亮。
安德鲁
答案 0 :(得分:1)
要让您前往的几点澄清:
您不需要蓝点菜单。忽略任何相关的事情。
你不需要使用任何“联合”(已弃用)。
你做需要使用OAuth, 需要有一个GUI,但是只有GUI出现一旦之后,您将获得存储并用于连接所有未来会话的长期令牌。即只有第一个连接需要GUI(这是大多数OAuth应用程序的典型),之后它可以在没有GUI的情况下无人值守运行。如果你真的不想构建一个GUI,你可以使用Intuit提供的OAuth游乐场工具来生成一个(例如使用他们的GUI代替你的GUI)。
这是允许您生成那些长寿命令牌的游乐场:
从那里,使用您选择的OAuth库(如果您浏览developer.intuit.com,Intuit会提供一些)来向Intuit的端点发出REST请求。
您需要使用标准Invoice
API端点 - 文档在此处:
基本上你要点击这个端点(使用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>
...