Tüm Sayfalar / 90 - Webhook Sistemi
Sayfa 90 / 161
Sistem Altyapısı

Webhook Sistemi

Gerçek zamanlı olay bildirimleri

Biz Ne Yaptık?

Webhook sistemi ile dış servislerden anlık bildirim alabiliyoruz. Ödeme yapıldığında, abonelik değiştiğinde otomatik haberdar oluyoruz.

Eski Yöntem

  • Sürekli sorgulama
  • Gecikme olasılığı
  • Kaynak israfı

Modern Mimari

  • Anlık: Olay olunca haber
  • Verimli: Kaynak tasarrufu
  • Güvenli: İmza doğrulama

Webhook Kaynakları

Ödeme Callback

PayTR/Iyzico ödeme bildirimleri

Abonelik Events

Başlama, bitme, iptal

E-posta Events

Bounce, spam bildirimleri

SMS Durumu

İletim/hata bildirimleri

Arkaplanda Neler Çalışıyor?

Bir webhook callback geldiğinde şu teknik süreç işler:

1

Request Reception (İstek Alımı)

Dış servis (PayTR/Iyzico) POST /webhooks/payment endpoint'ine istek gönderir. Laravel VerifyCsrfToken middleware'inden muaf tutar.

2

Signature Verification (İmza Doğrulama)

hash_hmac('sha256', $payload, $secret) ile gelen X-Signature header'ı doğrulanır. Eşleşmezse 401 döner - sahte webhook engellenir.

3

Payload Parsing (Veri Ayrıştırma)

json_decode($request->getContent()) ile payload parse edilir. Event tipi (payment.success, subscription.cancelled) belirlenir.

4

Idempotency Check (Tekrar Kontrolü)

webhook_id daha önce işlendi mi kontrol edilir. webhook_logs tablosunda varsa işlem atlanır - aynı webhook'un tekrar işlenmesi engellenir.

5

Event Dispatch (Olay Tetikleme)

Event tipine göre ilgili Laravel event tetiklenir: PaymentReceived::dispatch($payment). Listener'lar veritabanını günceller, abonelik aktivasyonu yapar.

6

Response & Logging (Yanıt ve Loglama)

Dış servise 200 OK döner (5 saniye içinde dönmezse tekrar gönderir). Webhook webhook_logs tablosuna payload, status ve timestamp ile kaydedilir.

Anahtar Terimler

Webhook

Olay gerçekleştiğinde otomatik gönderilen HTTP isteği.

Kapı zili gibi, misafir gelince çalar

Callback

Dış sistemin işlem sonucunu bildirdiği endpoint.

Geri arama gibi, sonucu bildirmek için arar

PayTR
Webhook
Muzibu
Anlık Bildirim
%99.9 Başarı Oranı
payment.success 200
subscription.created 200