Quickbooks集成(内联网)

时间:2013-01-29 08:38:24

标签: php integration intranet quickbooks

我需要将vTiger CRM与Quickbooks 2010集成。因此它是PHP。运行vTiger的QB服务器和Linux机箱位于同一个办公室。我试着弄清楚是否有办法让PHP直接与QB服务器对话而不使用Web连接器。我们需要实时数据访问。不像真正的“实时”,但报告需要在5-30秒内生成。只读数据,不写。有没有办法直接向QB服务器发送/接收qbXML? 提前致谢。 迈克尔

1 个答案:

答案 0 :(得分:1)

这可以做到......但请注意,QuickBooks并不总是与实时数据访问集成的最可靠的软件 - 与QuickBooks的连接往往既缓慢又脆弱,这就是为什么你通常使用Web连接器查看排队的模型。

你可以做的是编写一个自定义C#组件(查看SDK附带的示例,特别是这一个:C:\ Program Files(x86)\ Intuit \ IDN \ QBSDK12.0 \ samples \ qbdt \ c- sharp \ qbXML \ CustomerAdd)打开与QuickBooks的连接,然后执行任何操作。

“Whatever”可能是这样的:

  • 针对QuickBooks运行查询,然后将数据HTTP POST回vTiger

  • 打开一个套接字并侦听传入的请求,在这种情况下,PHP可以连接到套接字并提供它可以中继到QuickBooks的组件请求,然后返回响应

请注意,每隔5秒在QuickBooks中生成一个报告可能会大大降低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
             ... 
        }