【问题标题】:Add invoice, payments, expenses, etc. into Quickbooks via ASP.NET通过 ASP.NET 将发票、付款、费用等添加到 Quickbooks
【发布时间】:2013-03-24 22:39:16
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    似乎有各种各样的 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 上的桌面注册演练获得这些。

    如果您需要更多的抽象,您还可以使用 SDK 中包含的 QBFC 库。请注意,“QBOEConnector”.NET 组件过去对人们来说一直是个问题(出于某种奇怪的原因,它们需要一些奇怪的注册表编辑和其他东西......)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      相关资源
      最近更新 更多