我有一个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();
}
}
}
答案 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或类似方法来关闭对话框!