Aboneliklerin Aktif Olmamasının Kök Nedeni
Sorun: Kullanıcı ödeme yapıyor, ödeme başarılı sayfasına geliyor ama abonelik sisteme yansımıyor.
Neden Oluyor: PayTR (ödeme sistemi) ödeme tamamlandığında bizim sitemize bildirim göndermesi gerekiyor. Fakat bu bildirim gelmiyor çünkü:
🔍 Benzetme ile Açıklama:
Bu durum tıpkı kargo göndermek gibi. Müşteri ödemeyi yapıyor (kargo gönderiyor), kargo firması "teslim edildi" diyor (ödeme başarılı sayfası) ama paket bize gelmiyor. Çünkü kargo firmasının kayıtlarında eski adresimiz yazıyor ve paket eski eve gidiyor!
Sonuç: Kullanıcı ödemeyi görüyor, biz göremiyoruz. Abonelik manuel olarak aktif edilmediği sürece başlamıyor.
// Dosya: Modules/Payment/app/Services/PayTRDirectService.php (67-68)
$merchantOkUrl = route('payment.callback.success', ['payment' => $payment->payment_id]);
$merchantFailUrl = route('payment.callback.fail', ['payment' => $payment->payment_id]);
⚠️ Problem: Bu route'lar mevcut değil!
$ php artisan route:list | grep "payment.*callback" POST payment/callback/paytr ✅ MEVCUT GET payment.callback.success ❌ YOK! GET payment.callback.fail ❌ YOK!
Sistem'de zaten doğru callback endpoint mevcut:
POST /payment/callback/paytr
Controller: PayTRCallbackController@handle
Route: Modules/Payment/routes/web.php (18)
✅ Order oluşturuldu
❌ payment_status: "pending" (paid olmalıydı)
❌ confirmed_at: NULL
✅ 16 subscription kaydı oluşturuldu
❌ Tüm subscriptions "pending_payment" durumunda
❌ Tüm subscriptions order_id: NULL
$ grep "POST /payment/callback/paytr" /var/www/vhosts/muzibu.com/logs/access_ssl_log
(Sonuç yok - Hiç callback gelmemiş)
❌ "PayTR callback received" logu yok
❌ PayTRCallbackController hiç çalışmamış
❌ PayTRCallbackService::handleCallback() hiç çağrılmamış
$ curl -X POST https://muzibu.com/payment/callback/paytr
→ HTTP 400 (route çalışıyor, veri eksik)
✅ Endpoint erişilebilir, CSRF exception mevcut
✅ Kullanıcı ödeme penceresini açabiliyor (PayTR credentials doğru)
✅ Kullanıcı ödeme başarılı sayfasına geliyor (browser redirect çalışıyor)
❌ Abonelikler panelde görünmüyor (backend callback gelmiyor)
"önceki sunucuda bu ödemeleri alabiliyorduk"
PayTRDirectService.php'deki yönlendirme URL'lerini düzelt:
// ❌ Eski (Yanlış):
$merchantOkUrl = route('payment.callback.success', ['payment' => $payment->payment_id]);
$merchantFailUrl = route('payment.callback.fail', ['payment' => $payment->payment_id]);
// ✅ Yeni (Doğru):
$orderNumber = $orderInfo['order_number'] ?? $payment->payment_number;
$merchantOkUrl = route('payment.success') . '?order=' . urlencode($orderNumber);
$merchantFailUrl = route('cart.checkout') . '?payment=failed&order=' . urlencode($orderNumber);
💡 Açıklama:
merchant_ok_url ve merchant_fail_url sadece kullanıcının tarayıcısını yönlendirmek için. Bunlar frontend sayfalara işaret etmeli.
PayTR merchant panelinde callback URL'i güncelle:
https://muzibu.com/payment/callback/paytr
⚠️ Önemli:
Düzeltme sonrası test adımları:
PayTRDirectService.php'yi düzelt
Callback URL doğru mu?
Yeni bir abonelik satın al
grep "PayTR callback received" storage/logs/laravel.log
Order payment_status "paid" olmalı, subscriptions "active"
PayTRDirectService yanlış route kullanıyor ve PayTR callback'leri backend'e gelmiyor.
Kullanıcılar ödeme yapıyor ama abonelikler aktif olmuyor. Manuel müdahale gerekiyor.
Kod düzeltmesi + PayTR panel callback URL ayarı + Test
Kullanıcıdan onay alınca PayTRDirectService.php düzeltilecek ve PayTR panel ayarları kontrol edilecek.