LLG

Integração com loja virtual

Para quem desenvolve o site da loja

Como funciona

O LLG é o dono do estoque. O site lê daqui o catálogo e o estoque, e avisa o LLG quando um pedido é pago (ou cancelado). Cada tamanho de cada produto tem um SKU (ex.: 0012-M) — é ele que liga a variação do site à peça da loja.

Só aparecem as peças que o lojista marcou como "Vender na loja virtual" (aba Estoque ou Integrações).

Acesso

Endereço base: https://llgsistemas.com.br/api/v1

O lojista gera uma chave de integração na aba Integrações do LLG. Envie a chave em toda requisição:

Authorization: Bearer llg_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Use a chave só no servidor do site (back-end, função serverless). Nunca no JavaScript que roda no navegador do cliente — quem tiver a chave consegue registrar pedidos.

Teste a chave:

curl https://llgsistemas.com.br/api/v1/loja -H "Authorization: Bearer SUA_CHAVE"

{ "loja": "Nome da Loja" }

1. Catálogo — GET /produtos

Produtos à venda, agrupados por produto, com uma variação por tamanho/modelo. Preços em reais. unidade é un, kg, g, m, l ou ml: fora de un, o preço é por unidade de medida e o estoque pode ter até 3 casas (ex.: 12.5 kg).

curl https://llgsistemas.com.br/api/v1/produtos -H "Authorization: Bearer SUA_CHAVE"

{
  "produtos": [
    {
      "codigo": 12,
      "nome": "Biquíni Tropical",
      "categoria": "Moda Praia",
      "foto": "https://.../foto.jpg",
      "variacoes": [
        { "sku": "0012-P", "tamanho": "P", "cor": null, "preco": 89.9, "unidade": "un",
          "estoque": 3, "codigo_barras": null, "foto": "https://.../foto.jpg" },
        { "sku": "0012-M", "tamanho": "M", "cor": null, "preco": 89.9, "unidade": "un",
          "estoque": 0, "codigo_barras": null, "foto": "https://.../foto.jpg" }
      ]
    }
  ]
}

Sugestão: buscar o catálogo completo algumas vezes por dia (ou quando o lojista pedir).

2. Estoque — GET /estoque

Sem parâmetros: estoque atual de tudo que está à venda.

Com ?desde=: só o que mudou desde aquele momento (vendas no balcão, entradas, ajustes, vendas online...). Guarde o proximo_desde da resposta e mande na chamada seguinte.

curl "https://llgsistemas.com.br/api/v1/estoque?desde=2026-10-01T12:00:00Z" -H "Authorization: Bearer SUA_CHAVE"

{
  "itens": [
    { "sku": "0012-M", "estoque": 2, "a_venda": true },
    { "sku": "0007-G", "estoque": 5, "a_venda": false },
    { "sku": "0003-U", "estoque": 0, "a_venda": false, "removido": true }
  ],
  "proximo_desde": "2026-10-01T12:04:00.000Z"
}
  • estoque é sempre o valor atual (não a diferença): pode aplicar direto no site. Um mesmo SKU pode vir repetido em chamadas seguidas — sem problema.
  • a_venda: false: o lojista tirou a peça da loja virtual. removido: true: a peça foi excluída do LLG.
  • Sugestão: chamar a cada 5 minutos.

3. Pedido pago — POST /pedidos

Chame quando o pagamento for confirmado. O LLG baixa o estoque e registra a venda como "Loja virtual". preco_unitario é opcional (sem ele vale o preço do LLG); desconto é o desconto total do pedido, em reais. Frete não entra.

curl -X POST https://llgsistemas.com.br/api/v1/pedidos \
  -H "Authorization: Bearer SUA_CHAVE" -H "Content-Type: application/json" \
  -d '{
    "numero": "1043",
    "itens": [
      { "sku": "0012-M", "quantidade": 1, "preco_unitario": 89.9 },
      { "sku": "0007-G", "quantidade": 2 }
    ],
    "desconto": 10
  }'

{ "venda_id": "4f0c…", "ja_registrado": false, "total": 259.7 }

Mandou o mesmo numero de novo (ex.: tentativa repetida)? O LLG não baixa duas vezes e responde "ja_registrado": true. Se faltar estoque de algum item, nada é registrado e a resposta diz qual SKU — vale chamar antes de finalizar a compra para confirmar.

4. Pedido cancelado — POST /pedidos/cancelar

Devolve as peças ao estoque e estorna a venda nos relatórios. Cancelar de novo não faz nada.

curl -X POST https://llgsistemas.com.br/api/v1/pedidos/cancelar \
  -H "Authorization: Bearer SUA_CHAVE" -H "Content-Type: application/json" \
  -d '{ "numero": "1043" }'

{ "venda_id": "4f0c…", "ja_cancelado": false }

Erros

Sempre no formato { "erro": "mensagem", "codigo": "..." } (às vezes com sku). Status 400 = pedido recusado, 401 = chave inválida ou loja suspensa, 500 = tente de novo.

codigoQuando
nao_autorizadoChave ausente, errada ou revogada
loja_suspensaO acesso da loja ao LLG está suspenso
estoque_insuficienteAlgum item não tem estoque suficiente (veja "sku")
sku_desconhecidoSKU que não existe no LLG
quantidade_invalidaQuantidade menor ou igual a zero, com mais de 3 casas, ou quebrada num produto vendido por unidade
preco_invalido / desconto_invalidoValor negativo ou maior que o pedido
numero_invalido / pedido_sem_itensFaltou o número do pedido ou os itens
pedido_nao_encontradoCancelamento de pedido que não foi registrado
parametro_invalido"desde" que não é uma data válida