Webhook Akışı
Ödeme sağlayıcısının CMS'e "ödeme başarılı" bildirimini nasıl yaptığı.
Webhook, ödeme sağlayıcısının CMS'ine sunucu-sunucu POST isteği göndererek ödeme sonucunu bildirmesidir. Kullanıcının tarayıcısından geri dönmesinden bağımsızdır; kullanıcı pencereyi kapatsa bile ödeme tamamlanır.
Endpoint
Her iki sağlayıcı (PayTR, Shopier) aynı URL'ye POST eder:
URL
POST https://alan-adin.com/api/payment-callback.php
Doğrulama Adımları
- Hash / Signature: Her sağlayıcı isteği kendi merchant_salt veya api_secret ile HMAC hash'ler. CMS aynı algoritma ile doğrular.
- Order Match: Gelen
merchant_oidveyaplatform_order_idveritabanındapendingstatüsünde bulunmalı. - Tutar Match: Gelen tutar DB'deki beklenen tutarla eşleşmeli.
- Race Condition Koruma:
SELECT ... FOR UPDATEile satır kilitlenir, çifte ödeme engellenir.
Başarı Akışı
credit_transactions.status = 'success'users.balance += amountbalance_transactions'a deposit kaydı eklenir.- Sağlayıcıya
OKyanıtı dönülür (sağlayıcı bunu beklemediğinde tekrar dener).
Hata Akışı
Hash uyuşmazlığı, order bulunamadı, tutar farkı veya DB hatası durumunda işlem rollback edilir ve sağlayıcıya hata yanıtı dönülür.
Önemli: Webhook URL HTTPS olmalıdır. HTTP üzerinden gelen webhook'lar güvenlik için otomatik reddedilir.