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