架构
本页为开发人员和高级用户解释 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 插件通过附加端点扩展了 WooCommerce REST API,以实现 POS 特定功能。有关详细信息,请参见 WooCommerce REST API。