Commit Graph

7 Commits

Author SHA1 Message Date
0a10fd0194 fix: Evitar criação de faturas duplicadas no webhook PayPal
🐛 PROBLEMA IDENTIFICADO:
- Cliente pagava 1 assinatura mas recebia 2 faturas
- Fatura 1: subscription_create (método confirm())
- Fatura 2: subscription_cycle (webhook PAYMENT.SALE.COMPLETED)
- Ambas criadas com 8 segundos de diferença

 SOLUÇÃO IMPLEMENTADA:

handlePaymentCompleted() agora verifica:

1. Se já existe fatura com mesmo paypal_payment_id
   - Evita duplicação por webhook reprocessado

2. Se já existe fatura paga HOJE para esta subscription
   - Evita duplicação do pagamento inicial
   - Webhook vem depois do confirm()

3. Só cria nova fatura se for pagamento recorrente genuíno

📊 RESULTADO:
- Pagamento inicial: 1 fatura (subscription_create)
- Renovação mensal/anual: 1 fatura (subscription_cycle)
- Webhooks duplicados: ignorados com log

🗑️ LIMPEZA:
- Removida fatura duplicada WM-2025-000002 do user_id 35
2025-12-19 17:20:12 +01:00
02529adc18 fix: Corrigir bugs no sistema de cancelamento
🐛 BUGS CORRIGIDOS:

1. SubscriptionCancelledMail - Argumentos incorretos
   - Estava: (User, Plan, Carbon, bool)
   - Correto: (User, string, bool, ?string)
   - Linha: SubscriptionController.php:1214

2. PayPal - Evitar cancelar assinaturas admin-granted
   - Detectar paypal_subscription_id com prefixo 'ADMIN_GRANTED_'
   - Skip chamada PayPal para assinaturas gratuitas do admin
   - Aplica em: executeCancellation() e applyRetentionOffer()

3. Log melhorado
   - Adicionado paypal_id aos logs de erro

 Sistema de cancelamento agora funciona com:
- Assinaturas PayPal normais
- Assinaturas admin-granted (gratuitas)
- Email de cancelamento correto
2025-12-19 17:12:46 +01:00
2c883be168 feat: Sistema completo de cancelamento de assinatura v1.60.0
 Novo Sistema de Cancelamento com Retenção Inteligente
- Wizard de 5 etapas com mensagens emocionais personalizadas
- Oferta de 3 meses grátis para cancelamentos por preço (elegível se >= 3 meses pagos)
- Cumprimento legal: período de garantia 7 dias com reembolso total
- Rastreamento de ofertas em DB (impede reuso)
- Analytics de cancelamentos (motivo, feedback, within_guarantee)

🎨 Frontend
- CancellationWizard.jsx (1050+ linhas) com 5 steps
- Profile.jsx com nova seção de assinatura
- i18n completo em 3 idiomas (pt-BR, ES, EN)
- 40+ traduções específicas

🔧 Backend
- SubscriptionController: 4 novos métodos (eligibility, process, offer, execute)
- PayPalService: suspensão temporária de assinatura
- 2 novas tabelas: retention_offers, cancellations
- Email de retenção emotivo em Blade

⚖️ Legal
- 7 dias: cancelamento = reembolso total + acesso imediato termina
- Após 7 dias: cancelamento = acesso até fim do período, sem reembolso
- Grace period apropriado conforme período de garantia
2025-12-19 17:00:54 +01:00
54cccdd095 refactor: migração para desenvolvimento direto no servidor
- 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
2025-12-19 11:45:32 +01:00
marcoitaloesp-ai
6292b62315
feat: complete email system redesign with corporate templates
- Redesigned all email templates with professional corporate style
- Created base layout with dark header, status cards, and footer
- Updated: subscription-cancelled, account-activation, welcome, welcome-new-user, due-payments-alert
- Removed emojis and gradients for cleaner look
- Added multi-language support (ES, PT-BR, EN)
- Fixed email delivery (sync instead of queue)
- Fixed PayPal already-cancelled subscription handling
- Cleaned orphan subscriptions from deleted users
2025-12-18 00:44:37 +00:00
marcoitaloesp-ai
3a336eb692
feat: Admin user management + SaaS limits tested v1.51.0
- Add UserManagementController@store for creating users
- Add POST /api/admin/users endpoint
- Support user types: Free, Pro, Admin
- Auto-create 100-year subscription for Pro/Admin users
- Add user creation modal to Users.jsx
- Complete SaaS limit testing:
  - Free user limits: 1 account, 10 categories, 3 budgets, 100 tx
  - Middleware blocks correctly at limits
  - Error messages are user-friendly
  - Usage stats API working correctly
- Update SAAS_STATUS.md with test results
- Bump version to 1.51.0
2025-12-17 15:22:01 +00:00
marcoitaloesp-ai
679a1bc4b2
feat(subscriptions): Add PayPal integration for SaaS (Fase 3) v1.50.0
Backend:
- PayPalService with OAuth2, subscriptions, webhooks
- SubscriptionController with status, subscribe, confirm, cancel, invoices
- Webhook handlers for PayPal events (activated, cancelled, expired, payment)
- Config for PayPal credentials

Frontend:
- Pricing.jsx: Plans page with cards, FAQ, trust badges
- Billing.jsx: Subscription management, invoices list, cancel modal
- Added routes /pricing (public) and /billing (auth)
- Navigation links in Settings menu

Translations:
- pricing.* and billing.* keys in ES, PT-BR, EN
- nav.pricing, nav.billing

Ready for PayPal Sandbox testing once credentials are configured.
2025-12-17 10:56:54 +00:00