Demo plan + Payment integrations (Stripe/PayPal/Bank)

Models & migrations:
- platform_settings table (key/value JSON store + Cache::remember 5min)
- plans: is_demo bool + trial_days int
- companies: is_demo bool

Plans:
- Demo plan seeded (is_demo=true, is_public=false, all features, 14 trial days)
- Trial 14-day plan seeded (is_public=true, basic features)
- Plan form: is_demo toggle + trial_days field
- Plan table: badge 🎬 Demo / 🎁 N zile trial

Central panel:
- PaymentSettings page (heroicon-credit-card, sort 90)
  Form sections: General, Date legale, Stripe, PayPal, Transfer bancar
  Each gateway collapsible, fields hidden until enabled toggle
  Saves to platform_settings keyed by `payments.{gateway}`
- CompanyResource: is_demo toggle + table description

Payment flow (PaymentController):
- GET  /billing                 — tenant invoices list with Pay button
- POST /pay/{sub}               — start checkout (stripe/paypal/bank)
- GET  /pay/{sub}/{success,cancel}
- POST /payments/stripe/webhook — mark paid + extend company.active_until
- POST /payments/paypal/webhook — same

Views:
- site/billing.blade.php       — invoices list with payment modal (3 methods)
- site/bank-instructions       — IBAN/BIC/reference for manual transfer
- site/checkout-stub           — placeholder until composer require stripe-php
- site/payment-{success,cancel}

Tenant panel:
- userMenuItems → "Facturile mele" link to /billing
This commit is contained in:
2026-05-08 05:55:30 +00:00
parent d1a18848d3
commit 827bf12d89
16 changed files with 904 additions and 3 deletions
@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="ro">
<head>
<meta charset="UTF-8">
<title>Plată reușită</title>
<style>
body { font-family: system-ui, sans-serif; background: #f0fdf4; padding: 60px 20px; text-align: center; color: #1f2937; }
.box { max-width: 480px; margin: 0 auto; background:#fff; padding:40px 24px; border-radius:12px; box-shadow:0 4px 12px rgba(0,0,0,.05); }
h1 { color: #10b981; font-size: 24px; margin: 12px 0; }
.btn { display:inline-block; margin-top: 16px; padding: 10px 24px; background: #10b981; color: #fff; border-radius: 8px; text-decoration: none; font-weight: 500; }
</style>
</head>
<body>
<div class="box">
<div style="font-size:64px;"></div>
<h1>Plată reușită!</h1>
<p style="color:#6b7280;">Factura {{ $sub->invoice_number ?? '#' . $sub->id }} a fost achitată.</p>
<p style="color:#6b7280;font-size:13px;margin-top:8px;">Abonamentul tău a fost extins.</p>
<a href="/app" class="btn"> Mergi la AutoCRM</a>
</div>
</body>
</html>