我的任务是为一家小型本地企业提出电子商务解决方案。我的客户使用 Intuit/Quickbooks 销售点软件。我刚刚发现 Intuit 有一系列允许互操作性的 PHP 5+ 类(其他可能偶然发现此问题的链接:https://code.intuit.com/sf/sfmain/do/viewProject/projects.php_devkit)。
该网站将托管在共享主机上,因此这两个系统完全分开。她的桌面确实可以访问互联网。
所以,我的问题:
- 有没有办法让我通过 curl 连接到她的桌面?
- 如果是这样,如果我不能在我的主机上创建 VPN,我有没有办法安全地做到这一点?
- 现在我想起来了,有没有我可以使用的 VPN 服务?
- 还有其他我应该注意的安全事项吗?
支付处理将通过 Stripe ( http://www.stripe.com ) 处理。这实际上只是为了库存/订单同步。
最佳答案
最好的选择是 QuickBooks Web 连接器,以及您提到的那组 PHP 类。请参阅下面我的具体评论:
I've just discovered that Intuit has a series of PHP 5+ classes that allow interoperability (link for anyone else that may stumble on this: 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 integration wiki 的信息这可能会有帮助 - 特别是 QuickBooks integration with PHP section还有这个overview of the QuickBooks Web Connector .
考虑从您发布的链接获取最新的夜间构建,并查看此文件: * 文档/example_web_connector_point_of_sale.php
它说明了 PHP 和 QuickBooks 销售点之间的数据交换。
The website will be hosted on shared hosting, so the two systems are split quite literally. Her desktop does have internet access.
这个^^^就好了,典型的场景。这正是 Web 连接器的设计目的。 Web 连接器本质上充当 PHP SOAP 服务和 QuickBooks 本身之间的“哑代理”——它通过 HTTP(S) 将消息从您的 PHP 应用中继到 QuickBooks。
Is there a way for me to connect to her desktop via curl?
Curl 不行,不行(虽然你可以造一个……但为什么要重新发明轮子?)。 Web 连接器是基于 SOAP 的,但是您的 PHP 组件将是 SOAP 服务器的一半,而不是 SOAP 客户端的一半。
If so, is there a way for me to do it securely if I can't create a VPN on my host?
Web 连接器可以通过 HTTPS 使用 SSL 来保证数据在通过网络传输时的安全。
Now that I think about it, is there a VPN service I could use?
只需购买SSL证书,更简单。 :-)
Any other security things I should be aware of?
不超出您可以在 Stackoverflow 的其他地方找到的典型 Web 应用程序安全指南。
If you're going to sync to a system like Quickbooks, don't do it real-time, do it in a batch process that is resilient to things like her desktop being turned off, the crappy office internet (compared to a datacenter) being slow or down, etc.
这个 ^^^ 是很好的建议,并且正是 Web 连接器的工作原理。
If you need real-time, Quickbooks running on a desktop is NOT the way to go.
事实上,如果您需要实时,QuickBooks period 不是最佳选择。 QuickBooks 是一款出色的中小型企业会计软件……但速度较慢且不够可靠,无法实现一致的实时通信。话虽如此……您所说的不需要实时通信,所以这不应该打扰您。
Batching the orders isn't a problem, but how would I make even a batch process resilient?
PHP 代码使用带有状态的队列,因此您可以跟踪哪些已处理,哪些未处理,以及您从 QuickBooks 返回的响应(“添加客户成功!”与“糟糕,添加失败”添加客户,因为...”)、QuickBooks 抛出的错误消息等,然后对您的代码做出适当的 react ,或手动使用react。
您不需要 cron - Web 连接器可以安排运行,它会将所有错误和大量其他信息转发给您,以便您可以处理错误、发出警告、构建报告以显示向人们讲述失败/成功的事情等。
关于PHP 到 Quickbooks - 如果她在桌面上运行,我如何连接两者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12809721/