Kupon Sistemi v2 — Simülasyon & Etki Analizi

Kupon Türleri — Simülasyon & Etki Haritası

Her kupon türünün nasıl çalışacağı, hangi modüllere dokunacağı ve zorluk seviyesi

Genel Bakış — Zorluk & Etki Tablosu

Kupon Türü Zorluk Dokunulan Modüller Ödeme Akışı
Yüzdelik İndirim Kolay Coupon Cart Mevcut akışta kalır
Sabit Tutar İndirim Kolay Coupon Cart Mevcut akışta kalır
Ücretsiz Kargo Kolay Coupon Cart Mevcut akışta kalır
X Al Y Öde Orta Coupon Cart Sepet mantığı değişir
Deneme Süresi Uzatma Orta Coupon Subscription User Ödeme akışına GİRMEZ
Bedava Gün Kuponu Orta Coupon Subscription User Ödeme akışına GİRMEZ
Referans / Davet Kuponu Karmaşık Coupon Subscription User Payment İki taraflı + tetiklemeli

Yüzdelik İndirim

percentage Kolay

Simülasyon

KUPON: YILSONU20 — %20 İndirim
Premium Yıllık Plan 799 ₺
KDV (%20) 159,80 ₺
Ara Toplam 958,80 ₺
Kupon İndirimi (%20) -191,76 ₺
Toplam
958,80 ₺ 767,04 ₺
PayTR'ye gönderilen tutar: 767,04 ₺

Etki Haritası

Coupon Modülü Değişiklik yok

Zaten destekliyor. Coupon::apply() hesaplama hazır.

Cart / Checkout 2 dosya değişir

CheckoutPage.php → applyCoupon/removeCoupon metodları
checkout-page.blade.php → kupon input + indirim satırı UI

Payment Değişiklik yok

PayTR'ye grandTotal gidiyor — kupon düşüldükten sonraki tutar otomatik gider.

Subscription Değişiklik yok

Abonelik süresi değişmez. Sadece ödenen tutar düşer.

Akış: Kupon gir validate() Fiyat düş PayTR öde Usage kaydet

Sabit Tutar İndirim

fixed_amount Kolay

Simülasyon

KUPON: HOSGELDIN50 — 50₺ İndirim
Premium Aylık Plan 99 ₺
KDV (%20) 19,80 ₺
Ara Toplam 118,80 ₺
Kupon İndirimi -50,00 ₺
Toplam
118,80 ₺ 68,80 ₺
PayTR'ye gönderilen tutar: 68,80 ₺

Etki Haritası

Coupon Modülü Değişiklik yok

Zaten destekliyor. Coupon::apply()min($discount, $amount) ile sepeti geçmez.

Cart / Checkout 2 dosya (% ile aynı)

Yüzdelik indirimle aynı entegrasyon. Tek fark hesaplama formülü.

Yüzdelik indirim yapıldığında bu da otomatik çalışır. Ek iş gerekmez.

Ücretsiz Kargo

free_shipping Kolay

Simülasyon

KUPON: KARGOBEDAVA — Ücretsiz Kargo
2 x Ürün 350 ₺
KDV (%20) 70 ₺
Kargo Ücreti 49,90 ₺
Kargo İndirimi -49,90 ₺
Toplam 420 ₺
Muzibu şu an dijital ürün satıyor. Fiziksel ürün/kargo yoksa bu tür kullanılmayabilir. Ancak ileride fiziksel ürün (merch, plak) eklenirse hazır olur.

Etki Haritası

Cart / Checkout shipping_cost = 0 yapılır

Cart::recalculateTotals() içinde shipping_cost sıfırlanır. Order'da da aynı şekilde.

Şu an için bekletebilirsiniz. Altyapıda hazır olacak, ileride aktif edilir.

X Al Y Öde

buy_x_get_y Orta

Simülasyon

KUPON: 3AL2ODE — 3 Al 2 Öde
Albüm A 59 ₺
Albüm B 79 ₺
Albüm C (en ucuz) 39 ₺
En ucuz ürün bedava -39 ₺
KDV (%20) 27,60 ₺
Toplam
212,40 ₺ 165,60 ₺

Etki Haritası

Coupon Modülü apply() güncellenmeli

Coupon::apply() şu an sadece percentage ve fixed_amount hesaplıyor. buy_x_get_y mantığı eklenmeli: sepetteki en ucuz ürünü bul, düş.

Cart / Checkout Sepet item sayısı kontrolü

Sepette minimum buy_quantity adet ürün olmalı. CartItem'ları fiyata göre sırala → en ucuz get_quantity kadarını bedava yap.

Muzibu'da çoğu satış tek ürün (abonelik). Sepette 3+ ürün nadiren olabilir. Bu tür düşük öncelikli kalabilir.

Yeni Tür — Ödeme Akışı Dışında Çalışır

Deneme Süresi Uzatma

trial_extension Orta

Simülasyon

KUPON: DENE30 — 30 Gün Ücretsiz Premium
Mevcut Durum Ücretsiz Üye (Trial yok)
Kupon Uygulandı +30 gün Premium
Yeni Durum Premium (30 Mart'a kadar)
Ödenen Tutar 0 ₺

Nasıl çalışır?

Kullanıcı kodu girer → Ödeme sayfasına gitmez → Direkt subscription_expires_at güncellenir → Anında premium olur.

SENARYO 2: Zaten Premium Olan Kullanıcı
Mevcut Premium Bitiş 15 Mart 2026
Kupon: +30 gün +30 gün eklenir
Yeni Premium Bitiş 14 Nisan 2026
Premium olan kullanıcıda mevcut bitiş tarihine +30 gün eklenir. Süre sıfırlanmaz!

Etki Haritası — Detaylı

Bu tür checkout'tan geçmez! Ayrı bir kupon giriş sayfası veya profil sayfasında kupon alanı gerekir.

Coupon Modülü 3 dosya değişir

coupons migration → coupon_type enum'a 'trial_extension' eklenmeli

Coupon.php modelextra_days alanı veya metadata kullanımı

CouponService.phpapplyTrialExtension() yeni metod

Subscription Modülü 2 dosya değişir

SubscriptionService.phpextendByDays(User, int $days) yeni metod

Subscription.php model → Yeni subscription kaydı (price=0, source='coupon') veya mevcut uzatma

User Modülü 1 alan güncellenir

users.subscription_expires_atrecalculateSubscriptionExpiry() çağrılır

Frontend (YENİ) Yeni sayfa/alan gerekli

Kupon girişi için: profil sayfasına kupon alanı VEYA ayrı /kupon sayfası

Akış: Kupon gir validate() extendByDays() subscription_expires_at ↑

Bedava Gün Kuponu

free_days Orta

Deneme Süresi Uzatma ile Teknik Olarak Aynı

"Deneme Süresi Uzatma" ve "Bedava Gün Kuponu" arkada aynı işi yapar: subscription_expires_at'a +X gün ekler. Fark sadece isimlendirme ve pazarlama:

Deneme Süresi Uzatma

Trial hakkı bitmiş kullanıcılara "bir şans daha". Genelde yeni üyeler için.

Bedava Gün Kuponu

Premium kullanıcıya +X gün hediye. Kampanya, sadakat ödülü, özür kuponu olarak.

Öneri: İkisini tek tür altında birleştir: free_days. Admin panelinde "gün sayısı" girer, kuponun adını/açıklamasını istediği gibi yazar ("Deneme Uzatma", "Hediye Premium" vs.).

Karmaşık — Birden Fazla Modül Etkileşimi

Referans / Davet Kuponu

referral Karmaşık

Simülasyon

SİSTEM: Referans Davet Akışı
DAVET EDEN (Ahmet)
Referans kodu AHMET-REF-X7K
Arkadaşı üye olunca +7 gün premium
DAVET EDİLEN (Mehmet)
Kayıt olurken kodu girer AHMET-REF-X7K
Ödül %50 ilk ay indirimi
İki taraflı: Davet eden + davet edilen ayrı ayrı ödüllendirilir

Etki Haritası — Detaylı

Coupon Modülü 4+ dosya değişir

coupon_type enum'a 'referral' eklenmeli

Coupon model → referrer_reward_type, referrer_reward_value alanları

CouponService → referral logic (2 taraflı ödül)

CouponUsage → referred_by_user_id ilişkisi

Subscription Tetiklemeli uzatma

Davet edilen kayıt olduğunda → davet edenin subscription_expires_at'ı otomatik uzatılmalı

User / Auth Kayıt akışı değişir

Kayıt formuna "Referans kodu" alanı eklenmeli. referred_by user ilişkisi.

Payment Davet edilen için indirim

Davet edilen checkout'ta otomatik indirim uygulanabilir (percentage/fixed ile aynı akış)

Frontend 3+ yeni sayfa/alan

Kayıt formu → referans kodu alanı

Profil → "Davet linkin" bölümü

Profil → "Davet ettiğin kişiler" listesi

En karmaşık tür. Kupon sistemi + kullanıcı kaydı + abonelik + ödeme → 4 modül aynı anda etkileşir. Ayrı faz olarak planlanması önerilir.

Modül Etki Özeti — Hangi Dosya Ne Zaman Değişir?

Modül / Dosya % / ₺ İndirim Ü. Kargo X Al Y Öde Bedava Gün Referans
Coupon + ++ +++
↳ CouponService.php hazır hazır güncelle yeni metod yeni metod
↳ Coupon.php model hazır hazır hazır apply() güncelle yeni alanlar
↳ Migration (enum) enum değişir enum değişir
Cart / Checkout ++ + ++
↳ CheckoutPage.php yeni metodlar shipping=0 item mantığı
↳ checkout-page.blade.php kupon UI kupon UI kupon UI
Subscription ++ ++
↳ SubscriptionService.php extendByDays() extendByDays()
User + ++
Payment +
Frontend (Yeni) + +++
— Değişiklik yok + Az değişiklik ++ Orta değişiklik +++ Büyük değişiklik

Önerilen Uygulama Sırası

1

Faz 1 — Temel Kupon Entegrasyonu

Kolay

Yüzdelik + Sabit Tutar + Ücretsiz Kargo → Checkout entegrasyonu + Rapor sayfaları

Etkilenen: Coupon (mevcut) + Cart/Checkout (2 dosya) — Diğer modüller değişmez

2

Faz 2 — Bedava Gün Kuponu + X Al Y Öde

Orta

free_days türü + Subscription entegrasyonu + Kupon giriş noktası (profil veya ayrı sayfa)

Etkilenen: Coupon (migration + service) + Subscription (yeni metod) + User (expires_at) + Frontend (yeni alan)

3

Faz 3 — Referans / Davet Sistemi

Karmaşık

İki taraflı ödül sistemi + Kayıt akışı değişikliği + Profil davet bölümü

Etkilenen: Coupon + Subscription + User/Auth + Payment + Frontend (3+ yeni alan) — Tüm modüller etkileşir

28 Şubat 2026 • Muzibu.com.tr