我需要将vTiger CRM与Quickbooks 2010集成。因此它是PHP。运行vTiger的QB服务器和Linux机箱位于同一个办公室。我试着弄清楚是否有办法让PHP直接与QB服务器对话而不使用Web连接器。我们需要实时数据访问。不像真正的“实时”,但报告需要在5-30秒内生成。只读数据,不写。有没有办法直接向QB服务器发送/接收qbXML? 提前致谢。 迈克尔
答案 0 :(得分:1)
这可以做到......但请注意,QuickBooks并不总是与实时数据访问集成的最可靠的软件 - 与QuickBooks的连接往往既缓慢又脆弱,这就是为什么你通常使用Web连接器查看排队的模型。
你可以做的是编写一个自定义C#组件(查看SDK附带的示例,特别是这一个:C:\ Program Files(x86)\ Intuit \ IDN \ QBSDK12.0 \ samples \ qbdt \ c- sharp \ qbXML \ CustomerAdd)打开与QuickBooks的连接,然后执行任何操作。
“Whatever”可能是这样的:
或
请注意,每隔5秒在QuickBooks中生成一个报告可能会大大降低QuickBooks的速度。根据您所说的数据量和过滤器数量,甚至可能无法让QuickBooks快速生成报告。
同样,请注意某些事情导致与QuickBooks的连接失败,因此您必须优雅地处理它们。具体做法是:
等
如果您可以提供有关您需要频繁访问报告的原因的详细信息,我们可以提供一些其他信息。
您的代码看起来像这样:
while (true)
{
string input = "your fancy qbXML request goes here";
RequestProcessor2 rp = null;
string ticket = null;
string response = null;
try
{
rp = new RequestProcessor2 ();
rp.OpenConnection("", "Your App Name");
ticket = rp.BeginSession("", QBFileMode.qbFileOpenDoNotCare );
response = rp.ProcessRequest(ticket, input);
}
catch( System.Runtime.InteropServices.COMException ex )
{
MessageBox.Show( "COM Error Description = " + ex.Message, "COM error" );
return;
}
finally
{
if( ticket != null )
{
rp.EndSession(ticket);
}
if( rp != null )
{
rp.CloseConnection();
}
};
// Do something with the response here
...
}