Dökümanlar Ödeme Webhook Akışı

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ı

  1. Hash / Signature: Her sağlayıcı isteği kendi merchant_salt veya api_secret ile HMAC hash'ler. CMS aynı algoritma ile doğrular.
  2. Order Match: Gelen merchant_oid veya platform_order_id veritabanında pending statüsünde bulunmalı.
  3. Tutar Match: Gelen tutar DB'deki beklenen tutarla eşleşmeli.
  4. Race Condition Koruma: SELECT ... FOR UPDATE ile satır kilitlenir, çifte ödeme engellenir.

Başarı Akışı

  1. credit_transactions.status = 'success'
  2. users.balance += amount
  3. balance_transactions'a deposit kaydı eklenir.
  4. Sağlayıcıya OK yanı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.

Teşekkürler! Geri bildirimin kaydedildi.