- Removido README.md padrão do Laravel (backend) - Removidos scripts de deploy (não mais necessários) - Atualizado copilot-instructions.md para novo fluxo - Adicionada documentação de auditoria do servidor - Sincronizado código de produção com repositório Novo workflow: - Trabalhamos diretamente em /root/webmoney (symlink para /var/www/webmoney) - Mudanças PHP são instantâneas - Mudanças React requerem 'npm run build' - Commit após validação funcional
130 lines
4.5 KiB
Markdown
Executable File
130 lines
4.5 KiB
Markdown
Executable File
# WebMoney SaaS - Status de Implementação
|
|
|
|
> Última atualização: 17 de Dezembro de 2025
|
|
|
|
## ✅ Concluído
|
|
|
|
### Fase 1: Estrutura de Planos
|
|
- [x] Tabela `plans` com 3 planos (Free, Pro Mensual, Pro Anual)
|
|
- [x] Tabela `subscriptions` para gerenciar assinaturas
|
|
- [x] Model Plan com relacionamentos
|
|
- [x] Model Subscription com métodos auxiliares
|
|
|
|
### Fase 2: Integração PayPal
|
|
- [x] PayPalService completo (criar/cancelar/reativar assinaturas)
|
|
- [x] Credenciais PayPal Sandbox configuradas no servidor
|
|
- [x] Planos criados no PayPal com IDs salvos no banco
|
|
- [x] FRONTEND_URL configurado para redirects
|
|
|
|
### Fase 3: Fluxo de Assinatura
|
|
- [x] Endpoint `GET /api/plans` - listar planos
|
|
- [x] Endpoint `POST /api/subscription/create` - criar assinatura
|
|
- [x] Endpoint `GET /api/subscription/status` - status atual
|
|
- [x] Endpoint `POST /api/subscription/cancel` - cancelar
|
|
- [x] Endpoint `POST /api/subscription/reactivate` - reativar
|
|
- [x] Webhooks PayPal funcionando (ID: 4UM53122EW59785)
|
|
- [x] Frontend: página de planos e checkout
|
|
- [x] Assinatura de teste criada: I-RHE4CFSL3T3N (Pro Mensual)
|
|
|
|
### Fase 4: Enforcement de Limites
|
|
- [x] Limites do plano Free definidos:
|
|
- 1 conta bancária
|
|
- 10 categorias
|
|
- 3 orçamentos
|
|
- 100 transações
|
|
- [x] Middleware `CheckPlanLimits` criado
|
|
- [x] Middleware aplicado nas rotas de criação
|
|
- [x] Endpoint `/subscription/status` retorna uso atual
|
|
- [x] Widget `PlanUsageWidget` no Dashboard
|
|
- [x] Translations (es.json, pt-BR.json)
|
|
|
|
## ✅ Testes Realizados (17/12/2025)
|
|
|
|
### Testar com Usuário Free
|
|
- [x] Criar usuário sem assinatura ✅ **FUNCIONA**
|
|
- Usuário de teste: `testfree2@webmoney.test` (ID: 4)
|
|
- Plano Free atribuído automaticamente
|
|
- [x] Validar que middleware bloqueia ao atingir limite ✅ **FUNCIONA**
|
|
- Contas: 1/1 → Bloqueia 2ª conta ✅
|
|
- Categorias: 10/10 → Bloqueia 11ª categoria ✅
|
|
- Budgets: 3/3 → Bloqueia 4º orçamento ✅
|
|
- [x] Validar widget mostra progresso corretamente ✅ **FUNCIONA**
|
|
- API retorna `usage` e `usage_percentages` corretos
|
|
- [x] Testar mensagens de erro amigáveis ✅ **FUNCIONA**
|
|
- Mensagem: "Has alcanzado el límite de X de tu plan. Actualiza a Pro para X ilimitados."
|
|
- Retorna `error: plan_limit_exceeded` com dados do limite
|
|
|
|
### Testar Usuário Pro
|
|
- [x] Admin Pro tem limites `null` (ilimitados) ✅
|
|
- [x] 173 categorias, 1204 transações sem bloqueio ✅
|
|
|
|
### Testar Criação de Usuários Admin
|
|
- [x] Endpoint POST `/api/admin/users` ✅ **FUNCIONA**
|
|
- [x] Tipos de usuário: Free, Pro, Admin ✅
|
|
- [x] Pro/Admin recebem assinatura automática de 100 anos ✅
|
|
|
|
### ⏳ Pendente - Testes de Cancelamento
|
|
- [ ] Cancelar assinatura via PayPal
|
|
- [ ] Verificar grace period funciona
|
|
- [ ] Verificar downgrade para Free após expirar
|
|
|
|
### ⏳ Pendente - Testes de Reativação
|
|
- [ ] Reativar assinatura cancelada via PayPal
|
|
- [ ] Verificar status volta para ativo
|
|
|
|
## 🔧 Melhorias Futuras (Produção)
|
|
|
|
| Prioridade | Item | Descrição |
|
|
|------------|------|-----------|
|
|
| **Alta** | PayPal Live | Trocar credenciais sandbox para produção |
|
|
| **Alta** | Histórico de pagamentos | Tabela `payments` para registrar transações |
|
|
| **Média** | Emails transacionais | Notificar renovação, falha de pagamento, etc. |
|
|
| **Média** | Página de faturamento | Frontend com histórico e faturas |
|
|
| **Baixa** | Upgrade mid-cycle | Trocar de plano durante o ciclo |
|
|
| **Baixa** | Cupons de desconto | Sistema de cupons promocionais |
|
|
|
|
## 📋 Credenciais e Configurações
|
|
|
|
### PayPal Sandbox
|
|
```
|
|
Client ID: AU-E_dptCQSa_xGUmU--0pTPuZ25AWKOFP6uvamzPQZHrg1nfRaVhEebtpJ1jU_8OKyMocglbesAwIpR
|
|
Webhook ID: 4UM53122EW59785
|
|
Mode: sandbox
|
|
```
|
|
|
|
### Planos no Banco de Dados
|
|
| ID | Slug | Preço | PayPal Plan ID |
|
|
|----|------|-------|----------------|
|
|
| 1 | free | 0.00 | - |
|
|
| 2 | pro-monthly | 9.99 | P-3FJ50989UN7098919M7A752Y |
|
|
| 3 | pro-yearly | 99.99 | P-9FN08839NE7915003M7A76JY |
|
|
|
|
### Assinatura de Teste
|
|
```
|
|
User: marco@cnxifly.com (ID: 1)
|
|
Plan: Pro Mensual (ID: 2)
|
|
PayPal ID: I-RHE4CFSL3T3N
|
|
Status: active
|
|
```
|
|
|
|
## 🚀 Como Continuar
|
|
|
|
1. **Para testar limites Free:**
|
|
```bash
|
|
# Criar usuário de teste
|
|
curl -X POST https://webmoney.cnxifly.com/api/register \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"name":"Test Free","email":"testfree@test.com","password":"Test1234!"}'
|
|
```
|
|
|
|
2. **Para ir para produção:**
|
|
- Criar conta PayPal Business
|
|
- Obter credenciais Live
|
|
- Atualizar .env no servidor
|
|
- Criar planos no PayPal Live
|
|
- Atualizar IDs no banco
|
|
|
|
---
|
|
|
|
*Documento criado para referência futura. Voltar aqui quando retomar o desenvolvimento SaaS.*
|