2013-03-24 60 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不支持它。