架构
本页面解释了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。