Arquitetura
Esta página explica a arquitetura técnica do WCPOS para desenvolvedores e usuários avançados.
Sistema em Duas Partes
O WCPOS é projetado como um sistema em duas partes:
-
Plugin PHP: Hospedado em seu servidor, este é um plugin relativamente pequeno que estende a API REST do WooCommerce.
-
Cliente JavaScript: Este roda localmente em seu navegador ou no aplicativo de desktop, e posteriormente nos aplicativos iOS e Android.
Você pode pensar nisso como dois mundos separados:
- O mundo PHP é onde a gestão de dados acontece usando WordPress e WooCommerce.
- O mundo JavaScript replica sua loja WooCommerce localmente, otimizado para pesquisa rápida e uso offline.
Sincronização de Dados
Os dados são buscados do WooCommerce usando a API REST do WooCommerce. Isso significa que o POS precisa baixar cada produto, variação, categoria de produto, cliente, taxa de imposto e mais para armazená-los localmente.
Embora isso possa ser demorado inicialmente, uma vez baixados, eles estão disponíveis instantaneamente sem a necessidade de buscar continuamente do servidor.
O que é Sincronizado?
- Produtos e variações
- Categorias e tags de produtos
- Clientes
- Taxas de imposto e classes de imposto
- Gateways de pagamento (para o checkout)
- Pedidos (para histórico de pedidos no Pro)
Estratégia de Sincronização
O WCPOS usa uma estratégia de sincronização incremental:
- Sincronização inicial: Baixa todos os dados na primeira carga
- Atualizações incrementais: Apenas busca as alterações desde a última sincronização
- Sincronização em segundo plano: Verifica periodicamente por atualizações
- Sincronização manual: O usuário pode acionar uma sincronização a qualquer momento
Prós e Contras da Arquitetura
| Bom 😊 | Ruim 😟 |
|---|---|
| A pesquisa de dados locais é instantânea | Manter os dados sincronizados é desafiador |
| Dados em cache disponíveis offline | Limitado pela API REST do WooCommerce |
| Capacidade de criar melhores aplicativos nativos para desktop, iOS e Android | Temas e hooks do WordPress não podem personalizar o aplicativo POS |
Banco de Dados Local
O cliente JavaScript armazena dados no IndexedDB, um banco de dados baseado em navegador. Isso fornece:
- Persistência: Os dados sobrevivem a reinicializações do navegador
- Performance: Consultas rápidas sem latência de rede
- Navegação offline: Dados em cache permanecem acessíveis sem internet
Arquitetura de Checkout
O processo de checkout usa um iframe/webview que carrega a página de Pagamento do Pedido do WooCommerce. Esta abordagem:
- Aproveita gateways de pagamento existentes: Qualquer gateway de pagamento do WooCommerce pode funcionar no POS
- Mantém segurança: O processamento de pagamentos ocorre através da infraestrutura segura do WooCommerce
- Reduz complexidade: Não há necessidade de reimplementar integrações de gateways de pagamento
Extensões da API
O plugin PHP estende a API REST do WooCommerce com endpoints adicionais para funcionalidade específica do POS. Veja a API REST do WooCommerce para detalhes.