与quickbooks桌面版集成asp.net应用程序

时间:2013-02-07 22:26:38

标签: c# desktop quickbooks

我有一个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();
            }
        }

}

2 个答案:

答案 0 :(得分:4)

使用COM的方法可能不起作用。

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

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

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

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

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

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

QuickBooks Web Connector的重点是启用与您正在进行的集成相同的集成。

以下是the QuickBooks Web Connector的概述。它基本上是围绕qbXML模式的简单SOAP包装器,QuickBooks本身可以理解它。

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

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

答案 1 :(得分:1)

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

表示你可以使用任何东西:

  

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

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