Trial planı normal bir subscription plan gibi admin panelden oluşturulacak, ama özel özellikleri olacak:
Normal plan ekleme ekranını kullanacaksın.
trial (ÖNEMLİ: Sistem bu slug'ı kullanacak!)trial olmalı (sistem bu slug ile bulacak)is_active = true)Setting tablosunda trial_days field'i:
✅ Artıları:
❌ Eksileri:
Trial planının cycle süresini kullan:
✅ Artıları:
❌ Eksileri:
Sistem trial planını bulacak (slug = 'trial') ve o planın cycle süresini kullanacak.
Bu sayede tek yerden yönetim sağlanır.
1. Kullanıcı kayıt olur
2. Sistem trial planını bulur: SubscriptionPlan::where('slug', 'trial')->first()
3. O planın ilk (ve tek) cycle'ını alır
4. Cycle süresini kullanarak subscription oluşturur (örn: 7 gün)
Normal kayıt işlemi (email, şifre vb.)
Kullanıcı daha önce trial kullandı mı?
user.has_used_trial == true → Trial verme!user.has_used_trial == false → Trial ver!Otomatik olarak yeni subscription kaydı:
plan_id = Trial planının ID'sistatus = activestarts_at = Şimdiends_at = 7 gün sonra (plan cycle süresinden)price_per_cycle = ₺0.00Kullanıcının has_used_trial field'ını true yap. Artık bir daha trial alamaz!
has_used_trial bir defa true oldu mu, bir daha false olmaz!Subscriptions tablosunda trial subscription'ları göreceksin:
Kullanıcı detay sayfasında badge gösterilecek:
SQL ile trial subscription'larını bulma:
SELECT s.*, sp.title FROM subscriptions s JOIN subscription_plans sp ON s.plan_id = sp.subscription_plan_id WHERE sp.slug = 'trial' AND s.status = 'active';
Admin panel → Subscription Plans → "Trial" planını düzenle:
Cycle: "7 Günlük Trial" → Süre: 7 gün
Cycle süresini düzenle: 7 → 14 gün
Yeni kayıt olan kullanıcılar 14 günlük trial alacak!
trial, fiyat: ₺0.00, süre: 7 gün)has_used_trial field'ini users tablosuna ekle (migration)has_used_trial kontrol ederhas_used_trial = true işaretleruser->isPremium() → true dönerstatus = expired yapar