# 架构

本页为开发人员和高级用户解释 WCPOS 的技术架构。

## 双部系统[​](#two-part-system "直接链接到 双部系统")

WCPOS 被设计为一个双部系统：

1. **PHP 插件：** 托管在您的服务器上，这是一个相对较小的插件，扩展了 [WooCommerce REST API](/zh-CN/reference/wc-rest-api.md)。

2. **JavaScript 客户端：** 该客户端在您的浏览器或桌面应用程序中本地运行，之后还会在 iOS 和 Android 应用中运行。

您可以将其视为两个独立的世界：

* *PHP 世界* 是通过 WordPress 和 WooCommerce 进行数据管理的地方。
* *JavaScript 世界* 本地复制您的 WooCommerce 商店，针对快速搜索和离线使用进行了优化。

![pos-client-woo-server](data:image/svg+xml;base64,PHN2ZyBhcmlhLXJvbGVkZXNjcmlwdGlvbj0ic2VxdWVuY2UiIHJvbGU9ImdyYXBoaWNzLWRvY3VtZW50IGRvY3VtZW50IiB2aWV3Qm94PSItNTAgLTEwIDY3OC41IDQ5MCIgc3R5bGU9Im1heC13aWR0aDogMTAwJTtmb250LWZhbWlseTogc2Fucy1zZXJpZiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTAwJSIgaWQ9ImdyYXBoLWRpdiIgaGVpZ2h0PSIxMDAlIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgPGRlZnM+CiAgICA8bWFya2VyIG9yaWVudD0iYXV0byIgbWFya2VySGVpZ2h0PSIxMiIgbWFya2VyV2lkdGg9IjEyIiBtYXJrZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIHJlZlk9IjUiIHJlZlg9IjcuOSIgaWQ9ImFycm93aGVhZCI+CiAgICAgIDxwYXRoIGQ9Ik0gMCAwIEwgMTAgNSBMIDAgMTAgeiI+PC9wYXRoPgogICAgPC9tYXJrZXI+CiAgICA8c3ltYm9sIGlkPSJ3b29jb21tZXJjZS1sb2dvIiB2aWV3Qm94PSIwIDAgMjU2IDE1MyIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPgogICAgICA8cGF0aCBkPSJtMjMuNzU5IDBoMjA4LjM4YzEzLjE4NyAwIDIzLjg2MyAxMC42NzUgMjMuODYzIDIzLjg2M3Y3OS41NDJjMCAxMy4xODctMTAuNjc1IDIzLjg2My0yMy44NjMgMjMuODYzaC03NC43MjdsMTAuMjU3IDI1LjExOC00NS4xMDktMjUuMTE4aC05OC42OTVjLTEzLjE4NyAwLTIzLjg2My0xMC42NzUtMjMuODYzLTIzLjg2M3YtNzkuNTQyYy0wLjEwNDY2LTEzLjA4MyAxMC41NzEtMjMuODYzIDIzLjc1OC0yMy44NjN6IiBmaWxsPSIjN2Y1NGIzIi8+CiAgICAgIDxwYXRoIGQ9Im0xNC41NzggMjEuNzVjMS40NTY5LTEuOTc3MiAzLjY0MjMtMy4wMTc5IDYuNTU2MS0zLjIyNiA1LjMwNzMtMC40MTYyNiA4LjMyNTIgMi4wODEzIDkuMDUzNyA3LjQ5MjcgMy4yMjYgMjEuNzUgNi43NjQyIDQwLjE2OSAxMC41MTEgNTUuMjU5bDIyLjc5LTQzLjM5NWMyLjA4MTMtMy45NTQ1IDQuNjgyOS02LjAzNTggNy44MDQ5LTYuMjQzOSA0LjU3ODktMC4zMTIyIDcuMzg4NiAyLjYwMTYgOC41MzMzIDguNzQxNSAyLjYwMTYgMTMuODQxIDUuOTMxNyAyNS42IDkuODg2MiAzNS41OSAyLjcwNTctMjYuNDMzIDcuMjg0Ni00NS40NzYgMTMuNzM3LTU3LjIzNiAxLjU2MS0yLjkxMzggMy44NTA0LTQuMzcwNyA2Ljg2ODMtNC41Nzg5IDIuMzkzNS0wLjIwODEzIDQuNTc4OSAwLjUyMDMzIDYuNTU2MSAyLjA4MTMgMS45NzcyIDEuNTYxIDMuMDE3OSAzLjUzODIgMy4yMjYgNS45MzE3IDAuMTA0MDYgMS44NzMyLTAuMjA4MTMgMy40MzQxLTEuMDQwNyA0Ljk5NTEtNC4wNTg1IDcuNDkyNy03LjM4ODYgMjAuMDg1LTEwLjA5NCAzNy41NjctMi42MDE2IDE2Ljk2My0zLjUzODIgMzAuMTc5LTIuOTEzOCAzOS42NDkgMC4yMDgxMyAyLjYwMTYtMC4yMDgxMyA0Ljg5MTEtMS4yNDg4IDYuODY4My0xLjI0ODggMi4yODk0LTMuMTIyIDMuNTM4Mi01LjUxNTQgMy43NDYzLTIuNzA1NyAwLjIwODEzLTUuNTE1NC0xLjA0MDYtOC4yMjExLTMuODUwNC05LjY3OC05Ljg4NjItMTcuMzc5LTI0LjY2My0yMi45OTgtNDQuMzMyLTYuNzY0MiAxMy4zMi0xMS43NTkgMjMuMzExLTE0Ljk4NSAyOS45NzEtNi4xMzk4IDExLjc1OS0xMS4zNDMgMTcuNzk1LTE1LjcxNCAxOC4xMDctMi44MDk4IDAuMjA4MTMtNS4yMDMzLTIuMTg1NC03LjI4NDYtNy4xODA1LTUuMzA3My0xMy42MzMtMTEuMDMxLTM5Ljk2MS0xNy4xNzEtNzguOTg1LTAuNDE2MjYtMi43MDU3IDAuMjA4MTMtNS4wOTkyIDEuNjY1LTYuOTcyNHptMjIzLjY0IDE2LjMzOGMtMy43NDYzLTYuNTU2MS05LjI2MTgtMTAuNTExLTE2LjY1LTEyLjA3Mi0xLjk3NzItMC40MTYyNi0zLjg1MDQtMC42MjQzOS01LjYxOTUtMC42MjQzOS05Ljk5MDIgMC0xOC4xMDcgNS4yMDMzLTI0LjQ1NSAxNS42MS01LjQxMTQgOC44NDU1LTguMTE3MSAxOC42MjgtOC4xMTcxIDI5LjM0NiAwIDguMDEzIDEuNjY1IDE0Ljg4MSA0Ljk5NTEgMjAuNjA1IDMuNzQ2MyA2LjU1NjEgOS4yNjE4IDEwLjUxMSAxNi42NSAxMi4wNzIgMS45NzcyIDAuNDE2MjYgMy44NTA0IDAuNjI0MzkgNS42MTk1IDAuNjI0MzkgMTAuMDk0IDAgMTguMjExLTUuMjAzMyAyNC40NTUtMTUuNjEgNS40MTE0LTguOTQ5NiA4LjExNzEtMTguNzMyIDguMTE3MS0yOS40NSAwLjEwNDA2LTguMTE3MS0xLjY2NS0xNC44ODEtNC45OTUxLTIwLjUwMXptLTEzLjExMiAyOC44MjZjLTEuNDU2OSA2Ljg2ODMtNC4wNTg1IDExLjk2Ny03LjkwODkgMTUuNDAyLTMuMDE3OSAyLjcwNTctNS44Mjc2IDMuODUwNC04LjQyOTMgMy4zMzAxLTIuNDk3Ni0wLjUyMDMzLTQuNTc4OS0yLjcwNTctNi4xMzk4LTYuNzY0Mi0xLjI0ODgtMy4yMjYtMS44NzMyLTYuNDUyLTEuODczMi05LjQ2OTkgMC0yLjYwMTYgMC4yMDgxMy01LjIwMzMgMC43Mjg0Ni03LjU5NjcgMC45MzY1OS00LjI2NjcgMi43MDU3LTguNDI5MyA1LjUxNTQtMTIuMzg0IDMuNDM0MS01LjA5OTIgNy4wNzY0LTcuMTgwNSAxMC44MjMtNi40NTIgMi40OTc2IDAuNTIwMzMgNC41Nzg5IDIuNzA1NyA2LjEzOTggNi43NjQyIDEuMjQ4OCAzLjIyNiAxLjg3MzIgNi40NTIgMS44NzMyIDkuNDY5OSAwIDIuNzA1Ny0wLjIwODEzIDUuMzA3My0wLjcyODQ2IDcuNzAwOHptLTUyLjAzMy0yOC44MjZjLTMuNzQ2My02LjU1NjEtOS4zNjU5LTEwLjUxMS0xNi42NS0xMi4wNzItMS45NzcyLTAuNDE2MjYtMy44NTA0LTAuNjI0MzktNS42MTk1LTAuNjI0MzktOS45OTAyIDAtMTguMTA3IDUuMjAzMy0yNC40NTUgMTUuNjEtNS40MTE0IDguODQ1NS04LjExNzEgMTguNjI4LTguMTE3MSAyOS4zNDYgMCA4LjAxMyAxLjY2NSAxNC44ODEgNC45OTUxIDIwLjYwNSAzLjc0NjMgNi41NTYxIDkuMjYxOCAxMC41MTEgMTYuNjUgMTIuMDcyIDEuOTc3MiAwLjQxNjI2IDMuODUwNCAwLjYyNDM5IDUuNjE5NSAwLjYyNDM5IDEwLjA5NCAwIDE4LjIxMS01LjIwMzMgMjQuNDU1LTE1LjYxIDUuNDExNC04Ljk0OTYgOC4xMTcxLTE4LjczMiA4LjExNzEtMjkuNDUgMC04LjExNzEtMS42NjUtMTQuODgxLTQuOTk1MS0yMC41MDF6bS0xMy4yMTYgMjguODI2Yy0xLjQ1NjkgNi44NjgzLTQuMDU4NSAxMS45NjctNy45MDg5IDE1LjQwMi0zLjAxNzkgMi43MDU3LTUuODI3NiAzLjg1MDQtOC40MjkzIDMuMzMwMS0yLjQ5NzYtMC41MjAzMy00LjU3ODktMi43MDU3LTYuMTM5OC02Ljc2NDItMS4yNDg4LTMuMjI2LTEuODczMi02LjQ1Mi0xLjg3MzItOS40Njk5IDAtMi42MDE2IDAuMjA4MTMtNS4yMDMzIDAuNzI4NDYtNy41OTY3IDAuOTM2NTgtNC4yNjY3IDIuNzA1Ny04LjQyOTMgNS41MTU0LTEyLjM4NCAzLjQzNDEtNS4wOTkyIDcuMDc2NC03LjE4MDUgMTAuODIzLTYuNDUyIDIuNDk3NiAwLjUyMDMzIDQuNTc4OSAyLjcwNTcgNi4xMzk4IDYuNzY0MiAxLjI0ODggMy4yMjYgMS44NzMyIDYuNDUyIDEuODczMiA5LjQ2OTkgMC4xMDQwNiAyLjcwNTctMC4yMDgxMyA1LjMwNzMtMC43Mjg0NiA3LjcwMDh6IiBmaWxsPSIjZmZmIi8+CiAgICA8L3N5bWJvbD4KICAgIDxzeW1ib2wgaWQ9IndjcG9zLWxvZ28iIHZpZXdCb3g9IjAgMCAxMjYwIDEyNjAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgICAgPGc+CiAgICAgICAgPHBhdGggZmlsbD0iI0NEMkMyNCIgZD0iTTAsOTBDMCwzMCwzMCwwLDkwLDBoOTB2MjcwYzAsNDkuNy00MC4zLDkwLTkwLDkwUzAsMzE5LjcsMCwyNzBWOTB6IE0zNjAsMGgxODB2MjcwYzAsNDkuNy00MC4zLDkwLTkwLDkwCiAgICAgICAgICBzLTkwLTQwLjMtOTAtOTBWMHogTTcyMCwwaDE4MHYyNzBjMCw0OS43LTQwLjMsOTAtOTAsOTBzLTkwLTQwLjMtOTAtOTBWMHogTTEwODAsMGg5MGM2MCwwLDkwLDMwLDkwLDkwdjE4MGMwLDQ5LjctNDAuMyw5MC05MCw5MAogICAgICAgICAgcy05MC00MC4zLTkwLTkwVjB6Ii8+CiAgICAgIDwvZz4KICAgIDxnPgoJICAgIDxwYXRoIGZpbGw9IiNGNUU1QzAiIGQ9Ik0xODAsMGgxODB2MjcwYzAsNDkuNy00MC4zLDkwLTkwLDkwcy05MC00MC4zLTkwLTkwVjB6IE01NDAsMGgxODB2MjcwYzAsNDkuNy00MC4zLDkwLTkwLDkwcy05MC00MC4zLTkwLTkwVjAKCQl6IE05MDAsMGgxODB2MjcwYzAsNDkuNy00MC4zLDkwLTkwLDkwYy00OS43LDAtOTAtNDAuMy05MC05MFYweiIvPgogICAgPC9nPgogICAgICA8cGF0aCBmaWxsPSIjMzIzQTQ2IiBkPSJNMTE3MCwzNjAuNWMtNDkuNywwLTkwLTQwLjMtOTAtOTBjMCw0OS43LTQwLjMsOTAtOTAsOTBjLTQ5LjcsMC05MC00MC4zLTkwLTkwYzAsNDkuNy00MC4zLDkwLTkwLDkwCiAgICBzLTkwLTQwLjMtOTAtOTBjMCw0OS43LTQwLjMsOTAtOTAsOTBzLTkwLTQwLjMtOTAtOTBjMCw0OS43LTQwLjMsOTAtOTAsOTBzLTkwLTQwLjMtOTAtOTBjMCw0OS43LTQwLjMsOTAtOTAsOTBzLTkwLTQwLjMtOTAtOTAKICAgIGMwLDQ5LjctNDAuMyw5MC05MCw5MHMtOTAtNDAuMy05MC05MHY5OTBsMzYwLTI3MGg4MTBjNjAsMCw5MC0zMCw5MC05MHYtNjMwQzEyNjAsMzIwLjIsMTIxOS43LDM2MC41LDExNzAsMzYwLjV6IE0yNjAuNSw4MjEKICAgIGMtMzkuMywwLTc1LjMtMTQuNC0xMDMtMzguM1Y5MjRjMCwxNS4yLTEyLjMsMjcuNS0yNy41LDI3LjVzLTI3LjUtMTIuMy0yNy41LTI3LjVWNTMyLjVjMC0xNS4yLDEyLjMtMjcuNSwyNy41LTI3LjUKICAgIHMyNy41LDEyLjMsMjcuNSwyNy41djEwLjhjMjcuNy0yMy44LDYzLjctMzguMywxMDMtMzguM2M4Ny4xLDAsMTU4LDcwLjksMTU4LDE1OEM0MTguNSw3NTAuMSwzNDcuNiw4MjEsMjYwLjUsODIxeiBNNjMwLDgyMQogICAgYy04Ny40LDAtMTU4LjUtNzEuMS0xNTguNS0xNTguNWMwLTg3LjQsNzEuMS0xNTguNSwxNTguNS0xNTguNWM4Ny40LDAsMTU4LjUsNzEuMSwxNTguNSwxNTguNUM3ODguNSw3NDkuOSw3MTcuNCw4MjEsNjMwLDgyMXoKICAgIE05MTQuOSw2MjEuMWMyMi4yLDExLjEsNTguOCwxMy40LDg1LjYsMTMuNGM0OC4zLDAsODQuMyw2LjMsMTEwLjIsMTkuMmMzMC44LDE1LjQsNDcuOCw0MS41LDQ3LjgsNzMuNXMtMTcsNTguMS00Ny44LDczLjUKICAgIGMtMjUuOSwxMi45LTYxLjksMTkuMi0xMTAuMiwxOS4yYy01My4yLDAtMTAxLjgtMTMtMTQ0LjYtMzguN2MtMTMtNy44LTE3LjItMjQuNy05LjQtMzcuN2M3LjgtMTMsMjQuNy0xNy4yLDM3LjctOS40CiAgICBjMzQuMiwyMC41LDczLjMsMzAuOSwxMTYuNCwzMC45YzI2LjgsMCw2My40LTIuMyw4NS42LTEzLjRjMTUuMy03LjcsMTcuNC0xNi4yLDE3LjQtMjQuM3MtMi4xLTE2LjctMTcuNC0yNC4zCiAgICBjLTIyLjItMTEuMS01OC44LTEzLjQtODUuNi0xMy40Yy00OC4zLDAtODQuMy02LjMtMTEwLjItMTkuMmMtMzAuOC0xNS40LTQ3LjgtNDEuNS00Ny44LTczLjVzMTctNTguMSw0Ny44LTczLjUKICAgIGMyNS45LTEyLjksNjEuOS0xOS4yLDExMC4yLTE5LjJjNTMuMiwwLDEwMS44LDEzLDE0NC42LDM4LjdjMTMsNy44LDE3LjIsMjQuNyw5LjQsMzcuN3MtMjQuNywxNy4yLTM3LjcsOS40CiAgICBjLTM0LjItMjAuNS03My4zLTMwLjktMTE2LjQtMzAuOWMtMjYuOCwwLTYzLjQsMi4zLTg1LjYsMTMuNGMtMTUuMyw3LjctMTcuNCwxNi4yLTE3LjQsMjQuM1M4OTkuNiw2MTMuNCw5MTQuOSw2MjEuMXoiLz4KICAgICAgPGNpcmNsZSBmaWxsPSIjMzIzQTQ2IiBjeD0iMjYwLjUiIGN5PSI2NjIuNSIgcj0iMTAzIi8+CiAgICAgIDxjaXJjbGUgZmlsbD0iIzMyM0E0NiIgY3g9IjYzMCIgY3k9IjY2MiIgcj0iMTAzLjUiLz4KICAgIDwvc3ltYm9sPgogIDwvZGVmcz4KICA8Zz4KICAgIDxyZWN0IHJ5PSIzIiByeD0iMyIgaGVpZ2h0PSI2NSIgd2lkdGg9IjE4MyIgc3Ryb2tlPSIjNjY2IiBmaWxsPSIjZWFlYWVhIiB5PSI0MDQiIHg9IjM5NS41Ij48L3JlY3Q+CiAgICA8dGV4dCB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE2cHgiIGZvbnQtd2VpZ2h0PSI0MDAiIGFsaWdubWVudC1iYXNlbGluZT0iY2VudHJhbCIgZG9taW5hbnQtYmFzZWxpbmU9ImhhbmdpbmciIHk9IjQ0MCIgeD0iNDg3IiBmaWxsPSIjMzMzIiBzdHlsZT0iZm9udDogdmFyKC0taWZtLWZvbnQtZmFtaWx5LWJhc2UpIj4KICAgICAgPHRzcGFuIGR5PSIwIiB4PSI0ODciPldvb0NvbW1lcmNl5pyN5Yqh5ZmoPC90c3Bhbj4KICAgIDwvdGV4dD4KICAgIDx1c2UgeGxpbms6aHJlZj0iI3dvb2NvbW1lcmNlLWxvZ28iIHg9IjQ3MCIgeT0iNDE1IiB3aWR0aD0iMzAiIGhlaWdodD0iMTgiPjwvdXNlPgogIDwvZz4KICA8Zz4KICAgIDxyZWN0IHJ5PSIzIiByeD0iMyIgaGVpZ2h0PSI2NSIgd2lkdGg9IjE1MCIgc3Ryb2tlPSIjNjY2IiBmaWxsPSIjZWFlYWVhIiB5PSI0MDQiIHg9IjAiPjwvcmVjdD4KICAgIDx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTZweCIgZm9udC13ZWlnaHQ9IjQwMCIgYWxpZ25tZW50LWJhc2VsaW5lPSJjZW50cmFsIiBkb21pbmFudC1iYXNlbGluZT0iaGFuZ2luZyIgeT0iNDQwIiB4PSI3NSIgZmlsbD0iIzMzMyI+CiAgICAgIDx0c3BhbiBkeT0iMCIgeD0iNzUiPkphdmFTY3JpcHTlrqLmiLfnq688L3RzcGFuPgogICAgPC90ZXh0PgogICAgPHVzZSB4bGluazpocmVmPSIjd2Nwb3MtbG9nbyIgeD0iNjUiIHk9IjQxMyIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIj48L3VzZT4KICA8L2c+CiAgPGc+CiAgICA8bGluZSBzdHJva2U9IiM5OTkiIHN0cm9rZS13aWR0aD0iMC41cHgiIHkyPSI0MDQiIHgyPSI0ODciIHkxPSI1IiB4MT0iNDg3Ij48L2xpbmU+CiAgICA8Zz4KICAgICAgPHJlY3Qgcnk9IjMiIHJ4PSIzIiBoZWlnaHQ9IjY1IiB3aWR0aD0iMTgzIiBzdHJva2U9IiM2NjYiIGZpbGw9IiNlYWVhZWEiIHk9IjAiIHg9IjM5NS41Ij48L3JlY3Q+CiAgICAgIDx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTZweCIgZm9udC13ZWlnaHQ9IjQwMCIgYWxpZ25tZW50LWJhc2VsaW5lPSJjZW50cmFsIiBkb21pbmFudC1iYXNlbGluZT0iaGFuZ2luZyIgeT0iMzciIHg9IjQ4NyIgZmlsbD0iIzMzMyI+CiAgICAgICAgPHRzcGFuIGR5PSIwIiB4PSI0ODciPldvb0NvbW1lcmNl5pyN5Yqh5ZmoPC90c3Bhbj4KICAgICAgPC90ZXh0PgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiN3b29jb21tZXJjZS1sb2dvIiB4PSI0NzAiIHk9IjEyIiB3aWR0aD0iMzAiIGhlaWdodD0iMTgiPjwvdXNlPgogICAgPC9nPgogIDwvZz4KICA8Zz4KICAgIDxsaW5lIHN0cm9rZT0iIzk5OSIgc3Ryb2tlLXdpZHRoPSIwLjVweCIgeTI9IjQwNCIgeDI9Ijc1IiB5MT0iNSIgeDE9Ijc1Ij48L2xpbmU+CiAgICA8Zz4KICAgICAgPHJlY3Qgcnk9IjMiIHJ4PSIzIiBoZWlnaHQ9IjY1IiB3aWR0aD0iMTUwIiBzdHJva2U9IiM2NjYiIGZpbGw9IiNlYWVhZWEiIHk9IjAiIHg9IjAiPjwvcmVjdD4KICAgICAgPHRleHQgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNnB4IiBmb250LXdlaWdodD0iNDAwIiBhbGlnbm1lbnQtYmFzZWxpbmU9ImNlbnRyYWwiIGRvbWluYW50LWJhc2VsaW5lPSJoYW5naW5nIiB5PSIzNyIgeD0iNzUiIGZpbGw9IiMzMzMiPgogICAgICAgIDx0c3BhbiBkeT0iMCIgeD0iNzUiPkphdmFTY3JpcHTlrqLmiLfnq688L3RzcGFuPgogICAgICA8L3RleHQ+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3djcG9zLWxvZ28iIHg9IjY1IiB5PSIxMCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIj48L3VzZT4KICAgIDwvZz4KICA8L2c+CiAgPGc+CiAgICA8cmVjdCByeT0iMCIgcng9IjAiIGhlaWdodD0iMzkiIHdpZHRoPSIzNjIiIHN0cm9rZT0iI0U2QTcwMCIgZmlsbD0iI0ZGRjhFNiIgeT0iMjQ5IiB4PSIxMDAiPjwvcmVjdD4KICAgIDx0ZXh0IGZvbnQtc2l6ZT0iMTZweCIgZm9udC13ZWlnaHQ9IjQwMCIgZHk9IjFlbSIgYWxpZ25tZW50LWJhc2VsaW5lPSJtaWRkbGUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHk9IjI1NCIgeD0iMjgxIiBmaWxsPSIjMzMzIj4KICAgICAgPHRzcGFuIHg9IjI4MSI+5pWw5o2u5Y+v55So5LqO5b+r6YCf5pCc57Si5ZKM56a757q/5L2/55SoPC90c3Bhbj4KICAgIDwvdGV4dD4KICA8L2c+CiAgPHRleHQgZm9udC1zaXplPSIxNnB4IiBmb250LXdlaWdodD0iNDAwIiBkeT0iMWVtIiBhbGlnbm1lbnQtYmFzZWxpbmU9Im1pZGRsZSIgZG9taW5hbnQtYmFzZWxpbmU9Im1pZGRsZSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgeT0iODAiIHg9IjI4MCIgZmlsbD0iIzMzMyI+6K+35rGC5ZWG5bqX5pWw5o2u77yI5Lqn5ZOB77yM5a6i5oi3562J77yJPC90ZXh0PgogIDxsaW5lIHN0eWxlPSJmaWxsOiBub25lOyIgbWFya2VyLWVuZD0idXJsKCNhcnJvd2hlYWQpIiBzdHJva2U9IiMzMzMiIHN0cm9rZS13aWR0aD0iMiIgeTI9IjExMyIgeDI9IjQ4MyIgeTE9IjExMyIgeDE9Ijc2Ij48L2xpbmU+CiAgPHRleHQgZm9udC1zaXplPSIxNnB4IiBmb250LXdlaWdodD0iNDAwIiBkeT0iMWVtIiBhbGlnbm1lbnQtYmFzZWxpbmU9Im1pZGRsZSIgZG9taW5hbnQtYmFzZWxpbmU9Im1pZGRsZSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgeT0iMTI4IiB4PSIyODMiIGZpbGw9IiMzMzMiPuaVsOaNruWTjeW6lDwvdGV4dD4KICA8bGluZSBzdHlsZT0ic3Ryb2tlLWRhc2hhcnJheTogMywgMzsgZmlsbDogbm9uZTsiIG1hcmtlci1lbmQ9InVybCgjYXJyb3doZWFkKSIgc3Ryb2tlPSIjMzMzIiBzdHJva2Utd2lkdGg9IjIiIHkyPSIxNjEiIHgyPSI3OSIgeTE9IjE2MSIgeDE9IjQ4NiI+PC9saW5lPgogIDx0ZXh0IGZvbnQtc2l6ZT0iMTZweCIgZm9udC13ZWlnaHQ9IjQwMCIgZHk9IjFlbSIgYWxpZ25tZW50LWJhc2VsaW5lPSJtaWRkbGUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHk9IjE3NiIgeD0iNzYiIGZpbGw9IiMzMzMiPuacrOWcsOWtmOWCqOaVsOaNrjwvdGV4dD4KICA8cGF0aCBzdHlsZT0iZmlsbDogbm9uZTsiIG1hcmtlci1lbmQ9InVybCgjYXJyb3doZWFkKSIgc3Ryb2tlPSIjMzMzIiBzdHJva2Utd2lkdGg9IjIiIGQ9Ik0gNzYsMjA5IEMgMTM2LDE5OSAxMzYsMjM5IDc2LDIyOSI+PC9wYXRoPgogIDx0ZXh0IGZvbnQtc2l6ZT0iMTZweCIgZm9udC13ZWlnaHQ9IjQwMCIgZHk9IjFlbSIgYWxpZ25tZW50LWJhc2VsaW5lPSJtaWRkbGUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHk9IjMwMyIgeD0iMjgwIiBmaWxsPSIjMzMzIj7lj5HpgIHmm7TmlrDmiJbmlrDmlbDmja48L3RleHQ+CiAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IiBtYXJrZXItZW5kPSJ1cmwoI2Fycm93aGVhZCkiIHN0cm9rZT0iIzMzMyIgc3Ryb2tlLXdpZHRoPSIyIiB5Mj0iMzM2IiB4Mj0iNDgzIiB5MT0iMzM2IiB4MT0iNzYiPjwvbGluZT4KICA8dGV4dCBmb250LXNpemU9IjE2cHgiIGZvbnQtd2VpZ2h0PSI0MDAiIGR5PSIxZW0iIGFsaWdubWVudC1iYXNlbGluZT0ibWlkZGxlIiBkb21pbmFudC1iYXNlbGluZT0ibWlkZGxlIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB5PSIzNTEiIHg9IjI4MyIgZmlsbD0iIzMzMyI+56Gu6K6k5ZON5bqUPC90ZXh0PgogIDxsaW5lIHN0eWxlPSJzdHJva2UtZGFzaGFycmF5OiAzLCAzOyBmaWxsOiBub25lOyIgbWFya2VyLWVuZD0idXJsKCNhcnJvd2hlYWQpIiBzdHJva2U9IiMzMzMiIHN0cm9rZS13aWR0aD0iMiIgeTI9IjM4NCIgeDI9Ijc5IiB5MT0iMzg0IiB4MT0iNDg2Ij48L2xpbmU+Cjwvc3ZnPgo=)

## 数据同步[​](#data-synchronization "直接链接到 数据同步")

数据是通过 [WooCommerce REST API](https://woocommerce.github.io/woocommerce-rest-api-docs/) 从 WooCommerce 中获取的。这意味着 POS 必须下载每个产品、变体、产品类别、客户、税率等，以便将它们存储在本地。

虽然这最初可能会耗时，但一旦下载，它们可以立即使用，而无需不断从服务器获取。

### 同步内容[​](#what-gets-synced "直接链接到 同步内容")

* 产品和变体
* 产品类别和标签
* 客户
* 税率和税类
* 支付网关（用于结账）
* 订单（用于 Pro 中的订单历史）

### 同步策略[​](#sync-strategy "直接链接到 同步策略")

WCPOS 使用增量同步策略：

1. **初始同步：** 在首次加载时下载所有数据
2. **增量更新：** 仅获取自上次同步以来的更改
3. **后台同步：** 定期检查更新
4. **手动同步：** 用户可以随时触发同步

## 架构优缺点[​](#architecture-pros-and-cons "直接链接到 架构优缺点")

| 优点 😊                                       | 缺点 😟                                 |
| --------------------------------------------- | --------------------------------------- |
| 本地数据搜索瞬间完成                          | 保持数据同步具有挑战性                  |
| 缓存数据可在离线时使用                        | 受限于 WooCommerce REST API             |
| 能够为桌面、iOS 和 Android 创建更好的原生应用 | WordPress 主题和钩子无法自定义 POS 应用 |

## 本地数据库[​](#local-database "直接链接到 本地数据库")

JavaScript 客户端将数据存储在 IndexedDB 中，这是一个基于浏览器的数据库。它提供：

* **持久性：** 数据在浏览器重启后仍然存在
* **性能：** 迅速查询而无网络延迟
* **离线浏览：** 缓存数据在没有互联网的情况下仍然可访问

## 结账架构[​](#checkout-architecture "直接链接到 结账架构")

结账过程使用一个 iframe/webview 加载 WooCommerce 订单支付页面。这种方法：

* **利用现有支付网关：** 任何 WooCommerce 支付网关都可以在 POS 中工作
* **保持安全性：** 支付处理通过 WooCommerce 的安全基础设施进行
* **减少复杂性：** 无需重新实现支付网关集成

## API 扩展[​](#api-extensions "直接链接到 API 扩展")

PHP 插件通过附加端点扩展了 WooCommerce REST API，以实现 POS 特定功能。有关详细信息，请参见 [WooCommerce REST API](/zh-CN/reference/wc-rest-api.md)。
