架构
本页面解释了WCPOS的技术架构,面向开发人员和高级用户。
双组件系统
WCPOS被设计为一个双组件系统:
-
**PHP插件:**托管在您的服务器上,这是一款相对较小的插件,扩展了WooCommerce REST API。
-
**JavaScript客户端:**这在您的浏览器或桌面应用程序中运行,之后将在iOS和Android应用程序中运行。
您可以把它想象成两个独立的世界:
- PHP世界 是使用WordPress和WooCommerce进行数据管理的地方。
- JavaScript世界 在本地复制您的WooCommerce商店,优化了快速搜索和离线使用。
数据同步
数据通过WooCommerce REST API从WooCommerce获取。这意味着POS必须下载每个产品、变体、产品类别、客户、税率等,以便在本地存储。
尽管最初这可能会耗费一些时间,但下载后,它们可以立即使用,而无需不断从服务器获取。
同步内容
- 产品和变体
- 产品类别和标签
- 客户
- 税率和税类
- 支付网关(用于结账)
- 订单(用于Pro中的订单历史)
同步策略
WCPOS使用增量同步策略:
- **初始同步:**第一次加载时下载所有数据
- **增量更新:**只获取自上次同步以来的更改
- **后台同步:**定期检查更新
- **手动同步:**用户可以随时触发同步
架构优缺点
| 优点 😊 | 缺点 😟 |
|---|---|
| 本地数据搜索瞬时 | 数据同步困难 |
| 离线可用的缓存数据 | 受限于WooCommerce REST API |
| 能够为桌面、iOS和Android创建更好的原生应用 | WordPress主题和钩子无法自定义POS应用 |
本地数据库
JavaScript客户端将数据存储在IndexedDB中,这是一个基于浏览器的数据库。这提供了:
- **持久性:**数据在浏览器重启后仍然存在
- **性能:**快速查询,无网络延迟
- **离线浏览:**缓存数据在没有互联网的情况下仍然可访问
结账架构
结账过程使用iframe/webview加载WooCommerce订单支付页面。这种方法:
- **利用现有支付网关:**任何WooCommerce支付网关都可以在POS中工作
- **保持安全:**支付处理通过WooCommerce的安全基础设施进行
- **减少复杂性:**无需重新实现支付网关集成
API扩展
PHP插件通过为POS特定功能扩展WooCommerce REST API添加额外的端点。有关详细信息,请参阅WooCommerce REST API。