通过ASP.NET将发票,付款,费用等添加到Quickbooks中

时间:2013-03-24 22:39:17

标签: c# asp.net api quickbooks quickbooks-online

我有一个ASP.NET应用程序,我想连接到我的Quickbooks Online帐户,以编程方式输入新发票,对这些发票进行付款,甚至输入新的费用。似乎有各种各样的API和流程多年来经历了许多变化,所以我很困惑从哪里开始。我不打算创建一个应用程序,我将其发布到某种App Store或任何东西,这仅供个人使用(自动化等)我正在寻找一种简单,直接的方法。

1 个答案:

答案 0 :(得分:3)

  

似乎有各种各样的API和流程   多年来经历了许多变化

这是轻描淡写的。 Intuit是令人困惑且执行不佳的API的王者。 : - )

  

我不打算创建一个我发布到某种应用程序的应用程序   存储或任​​何东西

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

(IPP / Intuit Anywhere是最新的API,但作为FAQs州,现在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 integration wiki上的DESKTOP REGISTRATION演练来获取这些内容。

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

您可以使用QuickBooks OSR(选中“OE”复选框,取消选中“US”复选框,使用屏幕顶部的“选择消息”下拉列表,然后选择“XML Ops” tab)查看发送到QuickBooks Online的可用请求。如果您没有在列表中看到它,则QuickBooks Online API不支持它。