827bf12d89
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
35 lines
2.2 KiB
PHP
35 lines
2.2 KiB
PHP
<x-filament-panels::page>
|
|
<form wire:submit="save">
|
|
{{ $this->form }}
|
|
|
|
<div style="margin-top: 16px; display: flex; gap: 8px; justify-content: flex-end;">
|
|
<button type="submit"
|
|
class="fi-btn fi-btn-color-primary"
|
|
style="padding: 10px 24px; background: #6366f1; color: white; border-radius: 8px; border: none; cursor: pointer; font-weight: 500;"
|
|
wire:loading.attr="disabled">
|
|
<span wire:loading.remove>💾 Salvează setările</span>
|
|
<span wire:loading>Se salvează...</span>
|
|
</button>
|
|
</div>
|
|
</form>
|
|
|
|
<div style="margin-top:24px;background:#f9fafb;border:1px dashed #e5e7eb;border-radius:8px;padding:16px;font-size:13px;line-height:1.7;">
|
|
<b style="color:#6366f1;">📚 Cum se face plata în sistem:</b>
|
|
<ol style="margin:8px 0 0 18px;padding:0;">
|
|
<li>Operatorul (tu) creezi factură: <code>/admin/companies/{id}</code> → „Generează factură"</li>
|
|
<li>Tenantul vede factura în interiorul lui la <code>https://{slug}.service.mir.md/billing</code></li>
|
|
<li>Click „Plătește" → opțiuni: card (Stripe), PayPal, sau transfer manual</li>
|
|
<li>La succes: webhook → automat status=paid + extends company.active_until</li>
|
|
<li>La transfer manual: tenant trimite confirmare; operator click „Marchează plătit" în /admin/subscriptions</li>
|
|
</ol>
|
|
<div style="margin-top:12px;padding-top:12px;border-top:1px solid #e5e7eb;">
|
|
<b>⚠ Pentru a primi plăți LIVE:</b>
|
|
<ul style="margin:4px 0 0 18px;padding:0;font-size:12px;">
|
|
<li>Stripe: înregistrează cont la <a href="https://dashboard.stripe.com" target="_blank" style="color:#6366f1;">dashboard.stripe.com</a> → ia keys → setează webhook la URL-ul de mai sus</li>
|
|
<li>PayPal: <a href="https://developer.paypal.com/dashboard/applications" target="_blank" style="color:#6366f1;">developer.paypal.com</a> → creează aplicație live → ia credentials</li>
|
|
<li>Transfer bancar: pune doar IBAN-ul tău, fără cont gateway</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</x-filament-panels::page>
|