2013-03-24 63 views
0

我有一个ASP.NET应用程序,我想连接到我的Quickbooks Online帐户以编程方式输入新发票,对这些发票进行付款,甚至输入新的开支。看起来有多种API和过程在过去几年中经历了许多变化,所以我对从哪里开始感到困惑。我不打算创建一个应用程序,我将发布到某种App Store或任何类别,这仅仅是为了个人使用(自动化等)我正在寻找一个简单,直接的方法。通过ASP.NET将发票,付款,费用等添加到Quickbooks中

回答

3

似乎有API和流程,这是 的各种多年来

这是一个轻描淡写发生了许多变化。 Intuit是API混淆和执行不力的王者。 :-)

我不希望创建一个应用程序,我想释放某种应用 商店或任何

由于这只是供内部使用,你唯一的选择此时是QuickBooks Online的QuickBooks SDK/qbXML网关。

(IPP /忒Anywhere提供最新的API,但随着FAQs状态,现在忒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 integration wiki上的DESKTOP注册步骤获取这些信息。

如果您需要更多的抽象,您还可以使用SDK附带的QBFC库。请注意,“QBOEConnector”.NET组件过去一直存在问题(它们需要一些奇怪的注册表编辑和一些奇怪的原因......)。

您可以使用QuickBooks OSR(勾选“OE”复选框,取消选中“US”复选框,使用屏幕顶部的“Select Message”下拉菜单并选择“XML Ops”选项卡)以查看可用请求以发送到QuickBooks Online。如果您没有在列表中看到它,QuickBooks Online API不支持它。