Portfolio

Integração do WooCommerce com a API de um grossista: loja de peças automóveis

Case study da integração de uma loja WooCommerce com a REST API de um grossista de peças automóveis: sincronização de catálogo, stock e preços em tempo real, além de lógica de margem automática.

#Lojas online
Integração do WooCommerce com a API de um grossista: loja de peças automóveis

#Integração do WooCommerce com a API de um grossista de peças automóveis

Uma loja de peças automóveis vive ou morre consoante a completude e a atualidade do seu catálogo. Com dezenas de milhares de índices cuja disponibilidade e preço variam no fornecedor de um dia para o outro, manter a oferta à mão é uma batalha perdida. Neste projeto ligámos uma loja WooCommerce diretamente ao web service de um grossista por REST API, para que o catálogo, o stock e os preços se mantenham atualizados sozinhos. Os nomes do cliente e do fornecedor permanecem confidenciais.

#O problema: vender stock que não existe

A falha mais dispendiosa numa loja destas é aceitar e cobrar uma peça que o fornecedor não tem fisicamente em stock. Acaba em reembolsos, tratamento de reclamações e perda de confiança. A isto junta-se o desalinhamento de preços: o grossista altera a sua lista, a loja continua a vender ao preço antigo, por vezes abaixo do próprio custo. Por isso, o objetivo era concreto. O catálogo tem de refletir o que o fornecedor realmente tem disponível e a que preço, sem trabalho manual.

#Arquitetura: WooCommerce ligado ao web service do grossista

A base é o WordPress com WooCommerce, e a camada de integração é código PHP dedicado que comunica com a REST API do grossista. O fornecedor disponibiliza os dados tanto em JSON como em XML, pelo que a integração faz o parse de cada um e reduz ambos a um único modelo interno. A sincronização corre periodicamente em segundo plano (tarefas WP-Cron), dividida entre uma consulta mais leve e frequente de stock e preços e uma atualização mais pesada e menos frequente de todo o sortido.

#Mapeamento dos dados do grossista para produtos WooCommerce

O grossista descreve os produtos com a sua própria estrutura de campos. A tarefa da integração é traduzir isso para o modelo de produtos e atributos do WooCommerce. Entre outros, mapeamos:

  • EAN e índice - as chaves que identificam um produto e ligam o artigo da loja ao respetivo registo no grossista em cada sincronização seguinte.
  • Atributos técnicos - os parâmetros das peças transferidos para atributos e variações do WooCommerce, para que os filtros e a pesquisa por parâmetros funcionem.
  • Media e descrições - imagens e códigos HTML das descrições obtidos dos endpoints do grossista e colocados nas páginas dos produtos.

O mapa de campos é declarativo, pelo que adicionar um novo parâmetro do grossista significa estender o mapeamento, não reescrever a lógica.

#Sincronização de stock e preços em tempo real

O núcleo da integração é a consulta periódica da API a duas coisas: o nível de stock de cada índice e o preço de retalho líquido do distribuidor. Os artigos que o fornecedor não tem em stock são automaticamente marcados como indisponíveis ou ocultados, o que concretiza diretamente o objetivo principal: o cliente não consegue comprar uma peça que não pode ser satisfeita. Uma alteração de preço na lista do grossista propaga-se à loja no ciclo seguinte, sem qualquer intervenção da equipa.

#Lógica de margem

Os preços do grossista são custo, não o preço de venda. Acima da camada de obtenção de dados atua a lógica de margem: o sistema aplica automaticamente uma margem definida da loja sobre o preço de retalho líquido do distribuidor, e só o resultado chega ao WooCommerce como preço do produto. Isto mantém intacta a rentabilidade pretendida da loja mesmo quando as listas do fornecedor mudam, e o proprietário orienta a margem com regras em vez de editar preços à mão.

#Resultado

O catálogo mantém-se sozinho: os novos artigos do grossista aparecem na loja, os descontinuados desaparecem, o stock e os preços acompanham o fornecedor, e a margem protege a rentabilidade. A equipa deixou de atualizar a oferta à mão e deixou de lutar com encomendas de peças que nunca estiveram disponíveis. É o mesmo mecanismo de troca de dados, parse de JSON/XML e mapeamento de stock que está por detrás das integrações do WooCommerce com sistemas de classe ERP - difere na fonte de dados, não no princípio.