No description
- PHP 73.1%
- Blade 26.8%
| app | ||
| bootstrap | ||
| config | ||
| database | ||
| public | ||
| resources | ||
| routes | ||
| storage | ||
| tests | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .htaccess | ||
| API_GUIDE.md | ||
| artisan | ||
| CLIENTES_API.md | ||
| CLIENTES_AUTOMATICOS.md | ||
| composer.json | ||
| composer.lock | ||
| DOCUMENTACAO_PROJETO.md | ||
| ESTABELECIMENTOS_API.md | ||
| package.json | ||
| phpunit.xml | ||
| README.md | ||
| REMESSAS_PRODUTOS_API.md | ||
| vite.config.js | ||
E-Commerce API Laravel
🚀 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
- Administrator - Acesso total
- Shop - Gerenciar estabelecimento
- Consignee - Monitor de remessas
- 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
- Fork o projeto
- Crie uma branch (
git checkout -b feature/nova-funcionalidade) - Commit suas mudanças (
git commit -m 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/nova-funcionalidade) - 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