Polymorphic İlişki ile Merkezi Ödeme Altyapısı - Kurulum Rehberi
Şu an Shop modülü var ve sadece ürün satışları için ödeme alabiliyorsun.
YENİ SİSTEM:
Tek ödeme altyapısı ile herhangi bir modülden ödeme alabileceksin:
Tek bir yerde tüm ödemeler!
PayTR, Stripe, Iyzico gibi gateway'leri eklemek çok kolay.
Yeni modül eklersen, ödeme altyapısı hazır!
Basit Türkçe:
ESKI YÖNTEM Her modül kendi ödeme tablosunu yapıyor:
• shop_payments
• membership_payments
• booking_payments
❌ Aynı kod 3 kere yazılıyor!
YENİ YÖNTEM Tek tablo, tüm modüller kullanıyor:
• payments (payable_type, payable_id)
✅ Kod bir kere, her yerde kullan!
payments tablosu → "Ben ShopOrder'dan mı, Subscription'dan mı geliyorum?" biliyor!
| Kolon | Açıklama | Örnek |
|---|---|---|
payment_method_id |
ID | 1, 2, 3... |
gateway |
Hangi gateway? | paytr, stripe, iyzico |
title |
Başlık (JSON çoklu dil) | {"tr":"Kredi Kartı","en":"Credit Card"} |
gateway_config |
API keys (JSON) | {merchant_id, merchant_key, merchant_salt} |
supports_installment |
Taksit var mı? | true / false |
| Kolon | Açıklama | Örnek |
|---|---|---|
payment_id |
ID | 1, 2, 3... |
payable_type |
Hangi model? | Modules\Shop\App\Models\ShopOrder |
payable_id |
Hangi kayıt? | 123 (ShopOrder ID: 123) |
amount |
Tutar | 150.00 TRY |
status |
Durum | pending, completed, failed |
gateway |
Hangi gateway kullanıldı? | paytr |
gateway_transaction_id |
PayTR merchant_oid | ORD-2024-001 |
Her adımı işaretleyerek ilerle:
TAMAMLANDI
Modules/Payment/app/Services/Gateways/PayTRGateway.php dosyasını oluştur.
KOD ÖRNEĞİ Tab 4'te var!
routes/web.php dosyasına ekle:
app/Http/Middleware/VerifyCsrfToken.phppayment/callback route'unu CSRF'den muaf tut!
Modules/Shop/app/Models/ShopOrder.php güncelle:
TEST KARTI
| Kart No: | 4355 0843 5508 4358 |
| Tarih: | 12/26 |
| CVV: | 000 |
✅ Shop siparişleri PayTR ile ödeme alabilecek
✅ Aynı altyapı ile Membership, Booking eklenebilecek
✅ Yeni gateway (Stripe, Iyzico) eklemek kolay olacak
Kopyala-yapıştır ile kullanabilirsin:
Modules/Payment/app/Contracts/Payable.php
Modules/Shop/app/Models/ShopOrder.php
CheckoutPageNew.php submitOrder() metodunda:
PayTR entegrasyonunda mutlaka bilmen gerekenler:
payment_amount KURUŞ cinsinden (100.00 TRY = 10000)merchant_salt en sonda eklenirmerchant_key HMAC key olarak kullanılırraw_output = true parametresi zorunlubase64_encode ile encode edilirUYARI Birim fiyat string olmalı!
| Durum | Kart No | Tarih | CVV |
|---|---|---|---|
| ✅ Başarılı | 4355 0843 5508 4358 | 12/26 | 000 |
| ❌ Başarısız | 5406 6754 0667 5403 | 12/26 | 000 |
| Kod | Açıklama | Çözüm |
|---|---|---|
2 |
Geçersiz token | Hash yanlış hesaplanmış |
10 |
Geçersiz tutar | payment_amount kuruş cinsinden olmalı |
20 |
Kart reddedildi | Müşteri bankasıyla iletişime geçmeli |
21 |
Yetersiz bakiye | Başka kart denenmeli |
22 |
3D Secure başarısız | SMS kodu yanlış girilmiş |
Tüm API detayları, parametreler, örnekler için:
PayTR API Referansını Gör (16 KB)