我有一个 ASP.NET 应用程序,我想将它连接到我的 Quickbooks Online 帐户,以编程方式输入新发票、根据这些发票付款,甚至输入新费用。多年来,似乎有各种各样的 API 和流程已经发生了很多变化,所以我不知道从哪里开始。我不想创建一个我会发布到某种 App Store 或任何东西的应用程序,这仅供个人使用(自动化等)我正在寻找一种简单、直接的方法。
1 回答
似乎有各种各样的 API 和流程多年来经历了许多变化
这是轻描淡写。Intuit 是令人困惑且实施不佳的 API 之王。:-)
我不想创建一个我会发布到某种 App Store 或任何东西的应用程序
由于这仅供您内部使用,此时您唯一的选择是 QuickBooks Online 的 QuickBooks SDK/qbXML 网关。
(IPP/Intuit Anywhere 是最新的 API,但正如常见问题解答所述,目前 Intuit Anywhere 仅适用于您转售给他人的 SaaS 应用程序。)
开始使用 qbXML 和 QuickBooks Online 的最简单方法是通过 HTTP 将数据直接发送到网关。一些示例代码如下所示:
string requestUrl = null;
requestUrl = "https://apps.quickbooks.com/j/AppGateway";
HttpWebRequest WebRequestObject = null;
StreamReader sr = null;
HttpWebResponse WebResponseObject = null;
StreamWriter swr = null;
try
{
WebRequestObject = (HttpWebRequest)WebRequest.Create(requestUrl);
WebRequestObject.Method = "POST";
WebRequestObject.ContentType = "application/x-qbxml";
WebRequestObject.AllowAutoRedirect = false;
string post = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<?qbxml version=""6.0""?>
<QBXML>
<SignonMsgsRq>
<SignonDesktopRq>
<ClientDateTime>%%CLIENT_DATE_TIME%%</ClientDateTime>
<ApplicationLogin>APPLICATION_LOGIN</ApplicationLogin>
<ConnectionTicket>CONNECTION_TICKET</ConnectionTicket>
<Language>English</Language>
<AppID>APP_ID</AppID>
<AppVer>1</AppVer>
</SignonDesktopRq>
</SignonMsgsRq>
<QBXMLMsgsRq onError=""continueOnError"">
<CustomerQueryRq requestID=""2"" />
</QBXMLMsgsRq>
</QBXML>";
post = post.Replace("%%CLIENT_DATE_TIME%%", DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"));
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(post);
post = xmlDoc.InnerXml;
WebRequestObject.ContentLength = post.Length;
swr = new StreamWriter(WebRequestObject.GetRequestStream());
swr.Write(post);
swr.Close();
WebResponseObject = (HttpWebResponse)WebRequestObject.GetResponse();
sr = new StreamReader(WebResponseObject.GetResponseStream());
string Results = sr.ReadToEnd();
}
finally
{
try
{
sr.Close();
}
catch
{
}
try
{
WebResponseObject.Close();
WebRequestObject.Abort();
}
catch
{
}
请注意,要使用该示例代码,您需要一个应用程序登录名和连接票证。您可以按照我们的QuickBooks 集成 wiki上的 DESKTOP REGISTRATION 演练获得这些。
如果您需要更多的抽象,您还可以使用 SDK 中包含的 QBFC 库。请注意,“QBOEConnector”.NET 组件过去对人们来说一直是个问题(出于某种奇怪的原因,它们需要一些奇怪的注册表编辑和东西......)。
您可以使用QuickBooks OSR(选中“OE”复选框,取消选中“US”复选框,使用屏幕顶部的“Select Message”下拉菜单,然后选择“XML Ops”选项卡)查看可用请求发送到 QuickBooks Online。如果您没有在列表中看到它,则 QuickBooks Online API 不支持它。