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

C# 将asp.net应用程序与quickbooks桌面版集成,c#,desktop,quickbooks,C#,Desktop,Quickbooks,我有一个asp.net应用程序,我想将其连接到quickbooks桌面版,在web应用程序中,我想执行以下操作: 1-从quickbooks获取客户列表。 2-创建新发票并保存并将其发送到quickbooks 这是我对示例代码的发现,但我想知道我必须在(sessionManager.BeginSession(“,ENOpenMode.omDontCare);)中的AppId参数中设置的值是什么 }我找到了这个网页: 这说明你可以使用任何东西: 打开连接时,需要指定应用程序标识ID和名称。这将在Q

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

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

}我找到了这个网页:

这说明你可以使用任何东西:

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


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

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

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

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

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

考虑一下看下面的例子。请注意,这仅适用于SaaS类型的应用程序。其基本思想是,人们将其QuickBooks数据文件同步到Intuit的云,然后您可以使用REST web服务交换数据

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

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

QuickBooks Web连接器的全部功能是启用您正在进行的集成

下面是一个很好的概述。它基本上是一个围绕qbXML模式的简单SOAP包装器,QuickBooks本机理解它

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


其中有Web连接器的.NET示例代码,应该会有所帮助

那篇文章糟透了,充满了不准确之处。在quick glace上,有一些明显的错误:“QuickBooks API的目标是无声地失败。”(不,它总是会返回错误消息。他只是没有正确地处理错误。)“……最低要求和约束条件……我在任何地方都找不到这些文档。”(OSR:),等等。等等。
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();
            }
        }