No description
  • PHP 73.1%
  • Blade 26.8%
Find a file
2026-03-09 16:10:29 -03:00
app add initial files 2026-03-09 16:10:29 -03:00
bootstrap add initial files 2026-03-09 16:10:29 -03:00
config add initial files 2026-03-09 16:10:29 -03:00
database add initial files 2026-03-09 16:10:29 -03:00
public add initial files 2026-03-09 16:10:29 -03:00
resources add initial files 2026-03-09 16:10:29 -03:00
routes add initial files 2026-03-09 16:10:29 -03:00
storage add initial files 2026-03-09 16:10:29 -03:00
tests add initial files 2026-03-09 16:10:29 -03:00
.editorconfig add initial files 2026-03-09 16:10:29 -03:00
.env.example add initial files 2026-03-09 16:10:29 -03:00
.gitattributes add initial files 2026-03-09 16:10:29 -03:00
.gitignore add initial files 2026-03-09 16:10:29 -03:00
.htaccess add initial files 2026-03-09 16:10:29 -03:00
API_GUIDE.md add initial files 2026-03-09 16:10:29 -03:00
artisan add initial files 2026-03-09 16:10:29 -03:00
CLIENTES_API.md add initial files 2026-03-09 16:10:29 -03:00
CLIENTES_AUTOMATICOS.md add initial files 2026-03-09 16:10:29 -03:00
composer.json add initial files 2026-03-09 16:10:29 -03:00
composer.lock add initial files 2026-03-09 16:10:29 -03:00
DOCUMENTACAO_PROJETO.md add initial files 2026-03-09 16:10:29 -03:00
ESTABELECIMENTOS_API.md add initial files 2026-03-09 16:10:29 -03:00
package.json add initial files 2026-03-09 16:10:29 -03:00
phpunit.xml add initial files 2026-03-09 16:10:29 -03:00
README.md add initial files 2026-03-09 16:10:29 -03:00
REMESSAS_PRODUTOS_API.md add initial files 2026-03-09 16:10:29 -03:00
vite.config.js add initial files 2026-03-09 16:10:29 -03:00

E-Commerce API Laravel

Laravel PHP MercadoPago

🚀 Visão Geral

API completa de E-Commerce desenvolvida em Laravel 12 com integração ao MercadoPago. O sistema oferece gerenciamento de produtos, carrinho de compras, pagamentos (PIX e Cartão), sistema de estabelecimentos e controle de remessas.

Funcionalidades Principais

  • 🛒 Sistema de Carrinho - Suporte a usuários logados e sessões temporárias
  • 💳 Pagamentos - PIX e Cartão via MercadoPago
  • 🏪 Multi-estabelecimentos - Gestão de múltiplas lojas
  • 👥 Níveis de Usuário - Admin, Estabelecimento, Monitor
  • 📦 Controle de Estoque - Sistema de remessas/consignações
  • 🏷️ Preços Flexíveis - Preços específicos por remessa/localização
  • 🔐 Autenticação - Laravel Sanctum
  • 💰 Sistema de Descontos - Cálculo automático
  • 📱 API REST - Endpoints completos

🛠️ Tecnologias

  • Backend: Laravel 12.0
  • PHP: 8.2+
  • Autenticação: Laravel Sanctum
  • Pagamentos: MercadoPago SDK v3.5
  • Banco: MySQL/SQLite

📋 Pré-requisitos

  • PHP >= 8.2
  • Composer
  • Node.js & NPM
  • MySQL/SQLite
  • Conta MercadoPago (para pagamentos)

Instalação Rápida

# Clone o repositório
git clone <repository-url>
cd e-commerce-api

# Instale as dependências
composer install

# Configure o ambiente
cp .env.example .env
php artisan key:generate

# Configure o banco de dados no .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=ecommerce
DB_USERNAME=root
DB_PASSWORD=

# Configure MercadoPago no .env
MERCADO_PAGO_ACCESS_TOKEN=your_access_token
MERCADO_PAGO_PUBLIC_KEY=your_public_key
MERCADO_PAGO_SANDBOX=true

# Execute as migrações
php artisan migrate

# Inicie o servidor
php artisan serve

🔑 Principais Endpoints

Autenticação

POST /login          # Login de usuário
POST /logout         # Logout
GET  /user           # Dados do usuário autenticado

Carrinho de Compras

POST   /carrinho/adicionar           # Adicionar produto
PUT    /carrinho/atualizar/{item}    # Atualizar quantidade
DELETE /carrinho/remover/{item}      # Remover item
DELETE /carrinho/limpar              # Limpar carrinho
GET    /carrinho/dados               # Obter dados do carrinho

Produtos

GET    /produtos                     # Listar produtos (global)
GET    /produtos/estabelecimento     # Produtos do estabelecimento
POST   /produtos                     # Criar produto
GET    /produtos/{id}                # Detalhes do produto
PUT    /produtos/{id}                # Atualizar produto
DELETE /produtos/{id}                # Deletar produto

Pagamentos

POST /api/payments/pix/cart          # PIX para carrinho
POST /api/payments/pix/individual    # PIX produto individual
POST /api/payments/card/cart         # Cartão para carrinho
POST /api/payments/card/individual   # Cartão produto individual
GET  /api/payments/status/{id}       # Status do pagamento

Clientes

GET  /clientes                       # Listar clientes com paginação
GET  /clientes/{id}                  # Detalhes do cliente
GET  /clientes/stats/geral           # Estatísticas gerais

Estabelecimentos

GET    /estabelecimentos             # Listar estabelecimentos
POST   /estabelecimentos             # Criar estabelecimento
GET    /estabelecimentos/{id}        # Detalhes do estabelecimento
PUT    /estabelecimentos/{id}        # Atualizar estabelecimento
DELETE /estabelecimentos/{id}        # Deletar estabelecimento

Remessas

GET    /remessas                     # Listar remessas
POST   /remessas                     # Criar remessa
GET    /remessas/{id}                # Detalhes da remessa
PUT    /remessas/{id}                # Atualizar remessa
DELETE /remessas/{id}                # Deletar remessa

# Produtos nas remessas
GET    /remessas/{id}/produtos       # Listar produtos da remessa
POST   /remessas/{id}/produtos       # Adicionar produto (com preço customizado)
PUT    /remessas/{id}/produtos/{pid} # Atualizar produto na remessa
DELETE /remessas/{id}/produtos/{pid} # Remover produto da remessa

📄 Documentação Completa

Para documentação detalhada, consulte: DOCUMENTACAO_PROJETO.md

A documentação inclui:

  • Estrutura completa do projeto
  • Modelos e relacionamentos
  • Todos os endpoints da API
  • Sistema de autenticação
  • Configuração do MercadoPago
  • Estrutura do banco de dados
  • Considerações de segurança

🧪 Testando a API

Exemplo: Adicionar produto ao carrinho

curl -X POST http://localhost:8000/carrinho/adicionar \
  -H "Content-Type: application/json" \
  -d '{
    "product_id": 1,
    "quantity": 2,
    "session_id": "session-123"
  }'

Exemplo: Obter dados do carrinho

curl -X GET "http://localhost:8000/carrinho/dados?session_id=session-123"

Adicionar produto à remessa com preço customizado

curl -X POST http://localhost:8000/remessas/1/produtos \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "products": [
      {
        "productId": 1,
        "productName": "Smartphone Galaxy S23",
        "quantity": 1,
        "price": 2999.99,
        "color": "Sem Cor",
        "category": "Eletrônicos",
        "featured": true
      }
    ]
  }'

🔒 Segurança

  • Laravel Sanctum para autenticação de API
  • CSRF Protection
  • Validação rigorosa de entrada
  • Autorização baseada em Policies
  • Webhook signature validation (MercadoPago)

🏗️ Arquitetura

Modelos Principais

  • User - Sistema de usuários multi-perfil
  • Product - Catálogo de produtos com especificações
  • Shop - Gerenciamento de estabelecimentos
  • CartItem - Sistema de carrinho
  • Payment - Controle de pagamentos
  • Consignment - Sistema de remessas

Níveis de Usuário

  1. Administrator - Acesso total
  2. Shop - Gerenciar estabelecimento
  3. Consignee - Monitor de remessas
  4. None - Usuário comum

🚀 Comandos Úteis

# Desenvolvimento
composer dev                 # Servidor + queue + logs + vite
php artisan serve           # Apenas servidor
php artisan queue:work      # Processar jobs

# Banco de dados
php artisan migrate         # Executar migrações
php artisan migrate:fresh   # Recriar banco
php artisan db:seed         # Executar seeders

# Setup de dados de exemplo
php artisan setup:clients   # Criar dados de clientes
php artisan setup:clients --fresh # Recriar dados de clientes

# Produtos de teste
php artisan create:test-products --shop-id=1 # Criar produtos para loja específica
php artisan create:test-products --fresh     # Recriar produtos

# Cache e otimização
php artisan config:cache    # Cache de configuração
php artisan route:cache     # Cache de rotas
php artisan optimize        # Otimização geral

📝 TODO

  • Diminuir escopo das transações de banco
  • Implementar geração de SKU baseada em hash
  • Melhorar sistema de categorias
  • Implementar sistema de reviews
  • Adicionar relatórios de vendas

🤝 Contribuindo

  1. Fork o projeto
  2. Crie uma branch (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças (git commit -m 'Adiciona nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

📞 Suporte

Para dúvidas ou suporte, abra uma issue no GitHub.


⚠️ Observações Importantes:

  • Request precisa de authorize() para Policies funcionarem
  • Configurar corretamente as variáveis de ambiente do MercadoPago
  • Em produção, desabilitar o sandbox do MercadoPago