【问题标题】:integration asp.net application with quickbooks desktop edition将 asp.net 应用程序与 quickbooks 桌面版集成
【发布时间】:2013-02-07 22:26:38
【问题描述】:

我有一个 asp.net 应用程序,我想将它连接到 quickbooks 桌面版,在 Web 应用程序中我想执行以下操作: 1- 从快速手册中获取客户列表。 2- 创建新发票并保存发送到 quickbooks。

这是我找到的示例代码,但我想知道我必须在 (sessionManager.BeginSession("", ENOpenMode.omDontCare);) 中的 AppId 参数中设置的值是什么。

private void getCustomers()
{
bool sessionBegun = false;
        bool connectionOpen = false;
        QBSessionManager sessionManager = null;

        try
        {
            //Create the session Manager object
            sessionManager = new QBSessionManager();

            //Create the message set request object to hold our request
            IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 8,      0);
            requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

            //Connect to QuickBooks and begin a session
            sessionManager.OpenConnection(@"D:\A to Z Wholesale Inc.QBW", "QuickBooks Integration Demo");
            connectionOpen = true;
            sessionManager.BeginSession("", ENOpenMode.omDontCare);
            sessionBegun = true;

            ICustomerAdd customerAddRq = requestMsgSet.AppendCustomerAddRq();
            customerAddRq.Name.SetValue("Amer");
            ICustomerQuery customer = requestMsgSet.AppendCustomerQueryRq();
            //Send the request and get the response from QuickBooks
            IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);
            IResponse response = responseMsgSet.ResponseList.GetAt(0);
            ICustomerRet customerRet = (ICustomerRet)response.Detail;
        }
        catch (Exception ex)
        {

        }
        finally
        {
            //End the session and close the connection to QuickBooks
            if (sessionBegun)
            {
                sessionManager.EndSession();
            }
            if (connectionOpen)
            {
                sessionManager.CloseConnection();
            }
        }

}

【问题讨论】:

    标签: c# desktop quickbooks


    【解决方案1】:

    您使用 COM 的方法可能行不通。

    QuickBooks SDK/API 有点愚蠢,因为它使用 Windows COM GUI 消息泵来完成与 QuickBooks 实际通信的肮脏工作。这意味着必须存在 Windows GUI 才能与 QuickBooks 进行数据交换。

    这对您来说是个问题,因为您正在构建一个 Web 应用程序...它将在 IIS 内部运行,因此没有可用的 Windows GUI 会话。

    如果您正在构建 SaaS 应用程序,目标是允许其他多人将他们的 QuickBooks 文件连接到您的 Web 应用程序:

    考虑查看Intuit Partner Platform/Intuit Anywhere。请注意,这仅适用于 SaaS 类型的应用程序。基本思想是人们将他们的 QuickBooks 数据文件同步到 Intuit 的云中,然后您可以使用 REST Web 服务来交换数据。

    Intuit 甚至有一些有用的DevKits,它提供了一些示例代码和对象/方法来进行数据交换。

    否则,如果您不采用 Intuit Anywhere 路线,请查看 QuickBooks Web 连接器:

    QuickBooks Web 连接器的全部意义在于支持您正在做的集成。

    这里是the QuickBooks Web Connector 的一个很好的概述。它基本上是 QuickBooks 原生理解的 qbXML 模式的简单 SOAP 包装器。

    如果您下载QuickBooks SDK,此文件夹中有一些示例代码: C:\Program Files (x86)\Intuit\IDN\QBSDK12.0\samples\qbdt

    那里有 Web 连接器的 .NET 示例代码,应该很有帮助。

    【讨论】:

      【解决方案2】:

      我建议你看看下面的@Keith Palmer Jr.'s answer,它比这个更有帮助。我无法删除这个,因为它已被接受。

      原答案:

      我找到了这个网页:QuickBooks Integration (Mad Computer Scientist)

      它说你可以使用任何东西:

      打开连接时,需要指定应用标识ID和名称。这将在 QuickBooks 中显示给用户以允许/禁止访问。这些是字符串,据我所知,没有运行任何检查,允许用户在此处放置他们关心的任何内容。

      “向用户显示”位意味着如果您在 ASP.NET 服务器上使用它,您可能需要使用 AutoIt 或类似工具来关闭对话框!

      【讨论】:

      • 那篇文章非常糟糕——它充满了不准确之处。快速浏览一下,一些明显的错误:“QuickBooks API 旨在默默地失败。” (不,它总是会给你一条错误消息。他只是没有正确处理错误。)“......最低要求和约束......这些在我能找到的任何地方都没有记录。” (OSR:developer.intuit.com/qbsdk-current/common/newosr/index.html)等等等等。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多