IHS Strategic
Tüm Blog Yazıları
HowTo09 Eylül 2026•2 dk okuma

E-Ticarette Sadakat Programları ve Abonelik Modeli Entegrasyon Rehberi

Modern web trendleri odaklı sadakat ve abonelik mimarisi kurulum rehberi. DB şeması, webhook akışı ve entegrasyon adımları içerir.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

1. Mimari Temel: Sadakat ve Abonelik Motoru

Abonelik tekrarlayan gelir (MRR) üretir. Sadakat programı müşteri terk oranını (churn) düşürür. Modern web mimarisinde iki sistemi tek veri modelinde birleştirmek gerekir.

Veritabanı Şeması Tasarımı

İlişkisel DB (PostgreSQL) üzerinde asgari tablo yapısı:

  • users: Kimlik, bakiye, tier_id
  • subscriptions: user_id, plan_id, status, current_period_end
  • loyalty_transactions: user_id, points, type (earn/burn), reference_id
  • loyalty_tiers: id, name, min_points, multiplier

2. Adım Adım Entegrasyon Süreci

Adım 1: Webhook Tabanlı Abonelik Akışı

Ödeme sağlayıcı (Stripe, iyzico) ödeme aldığında webhook tetikler. Webhook işleyici abonelik durumunu günceller, sadakat puanı yazar.

Webhook endpoint idempotency anahtarı içermeli. Mükerrer istek bakiye hatası üretir.

Adım 2: Puan Kazanım / Harcama Motoru

Kural motoru saf fonksiyon olmalı. Örnek pseudocode / mantık:

function applyReward(user, orderAmount):
tier = getTier(user.totalPoints)
earned = orderAmount * tier.multiplier
DB.loyalty_transactions.insert(user.id, earned, 'earn')
DB.users.incrementPoints(user.id, earned)

Adım 3: Abonelik Arayüzü ve Modern Web Trendleri

Kullanıcı portalı SSR/SSG hibrit yapı (Next.js/Remix) ile çalışmalı. Müşteri abonelik dondurma, plan yükseltme ve puan ile ödeme adımlarını tek ekranda yönetir.

3. Dijital Ajans ve Mühendislik İpuçları

  • YAGNI: Başlangıçta karmaşık kural motoru kurma. Sabit çarpan (1 TL = 1 Puan) ile başla.
  • Native Araçlar: Cron yerine DB tabanlı scheduler (pg_cron) veya event broker (Redis Streams) kullan.
  • Churn Engelleme: Kart son kullanma tarihi yaklaşınca otomatik e-posta ve dunning yönetimi ekle.

4. Doğrulama ve Test

Webhook başarısızlığı durumunda exponential backoff ile retry stratejisi doğrulanmalı. Puan bakiyesi eksiye düşemez constraint'i DB seviyesinde (`CHECK (points >= 0)`) tanımlanmalı.