5

我的任务是为小型本地企业提供电子商务解决方案。我的客户使用 Intuit/Quickbooks 销售点软件。我刚刚发现 Intuit 有一系列允许互操作性的 PHP 5+ 类(对于可能偶然发现此问题的任何其他人的链接:https ://code.intuit.com/sf/sfmain/do/viewProject/projects.php_devkit )。

该网站将托管在共享主机上,因此这两个系统实际上是分开的。她的桌面确实可以访问互联网。

所以,我的问题:

  1. 有没有办法让我通过 curl 连接到她的桌面?
  2. 如果是这样,如果我无法在我的主机上创建 VPN,是否有办法让我安全地做到这一点?
  3. 现在我想起来了,有没有可以使用的 VPN 服务?
  4. 我应该注意的任何其他安全事项?

付款处理将通过 Stripe ( http://www.stripe.com ) 处理。这实际上仅用于库存/订单同步。

4

1 回答 1

6

您最好的选择是 QuickBooks Web 连接器,以及您提到的那组 PHP 类。请参阅下面的具体评论:

我刚刚发现 Intuit 有一系列允许互操作性的 PHP 5+ 类(对于可能偶然发现此问题的任何其他人的链接:https ://code.intuit.com/sf/sfmain/do/viewProject/projects.php_devkit )。

值得注意的是,该库不是由 Intuit 开发的(免责声明 - 我是该库的开发人员)。Intuit 托管我们的 Subversion 存储库,但我们是一家独立的公司,并且 Intuit 不参与实际的 PHP 代码。Intuit 仅提供基于 Windows COM 的 API,我们提供实际的 PHP 组件,因此您可以通过 Web 连接器从远程服务器与 QuickBooks 对话,而无需使用 COM。

我们有大量关于QuickBooks 集成 wiki的信息,这些信息可能会有所帮助 - 特别是QuickBooks 与 PHP 的集成部分QuickBooks Web 连接器的概述

考虑从您发布的链接中获取最新的夜间构建,并查看此文件:* docs/example_web_connector_point_of_sale.php

它说明了 PHP 和 QuickBooks 销售点之间的数据交换。

该网站将托管在共享主机上,因此这两个系统实际上是分开的。她的桌面确实可以访问互联网。

这个^^^很好,典型的场景。这正是 Web 连接器的设计目的。Web 连接器本质上充当 PHP SOAP 服务和 QuickBooks 本身之间的“哑代理” - 它通过 HTTP(S) 将来自 PHP 应用程序的消息中继到 QuickBooks。

有没有办法让我通过 curl 连接到她的桌面?

没有 Curl,不(虽然你可以建造一个......但为什么要重新发明轮子?)。Web 连接器是基于 SOAP 的,但您的 PHP 组件将是 SOAP 服务器的一半,而不是 SOAP 客户端的一半。

如果是这样,如果我无法在我的主机上创建 VPN,是否有办法让我安全地做到这一点?

Web 连接器可以通过 HTTPS 使用 SSL 来保证数据在网络上传输时的安全。

现在我想起来了,有没有可以使用的 VPN 服务?

只需购买 SSL 证书,就更容易了。:-)

我应该注意的任何其他安全事项?

不超出您可以在 Stackoverflow 其他地方找到的典型 Web 应用程序安全指南。

如果您要同步到 Quickbooks 之类的系统,请不要实时进行,而是在批处理过程中进行,这样可以应对她的桌面被关闭、糟糕的办公室互联网(与数据中心相比)等情况有弹性变慢或减速等

这个 ^^^ 是很好的建议,并且正是 Web 连接器的工作原理。

如果你需要实时,在桌面上运行的 Quickbooks 不是你要走的路。

事实上,如果你需要实时性,QuickBooks时期并不是要走的路。QuickBooks 是一款出色的中小型企业会计软件……但速度慢且不够可靠,无法进行一致的实时通信。话虽如此……你所说的不需要实时通信,所以这不应该打扰你。

批处理订单不是问题,但我如何才能使批处理具有弹性?

PHP 代码使用带有状态的队列,因此您可以跟踪已处理的内容、未处理的内容以及从 QuickBooks 返回的内容作为响应(“成功添加客户!”与“糟糕,添加客户失败因为 ...”),QuickBooks 抛出的错误消息等等,然后用您的代码或手动做出适当的反应。

您不需要 cron - 可以安排 Web 连接器运行,它会将所有错误和大量其他信息转发给您,以便您可以处理错误、发送警告、构建报告以向人们展示失败/成功等

于 2012-10-11T12:33:47.983 回答