PayTR Direkt API entegrasyonunun tamamlanabilmesi için sadece ödeme formundan veri göndermek yeterli değildir. Ödeme sonucunun kesin ve doğrulanmış bir şekilde alınması için Bildirim URL entegrasyonu zorunludur.
Bağlantılı Rehber:
1) Bildirim URL Nedir?
- 
Müşteri ödeme formunu doldurup gönderdiğinde PayTR ödeme sonucu doğrudan sizin belirlediğiniz Bildirim URL adresine POST ile veri yollar. 
- 
Buradan ödemenin başarılı veya başarısız olduğunu alırsınız. 
- 
Siparişi onaylayıp / iptal edip PayTR'a "OK" yanıtı dönmek zorundasınız. 
2) POST ile Gelen Veriler
| Alan Adı | Zorunlu | Açıklama | 
|---|---|---|
| merchant_oid | Evet | Sipariş numarası | 
| status | Evet | success veya failed | 
| total_amount | Evet | Başarılı ise ödeme tutarı, başarısızsa 0 | 
| hash | Evet | Hash kontrol verisi | 
| failed_reason_code | Hayır | Hata kodu (eğer hata varsa) | 
| failed_reason_msg | Hayır | Hata mesajı (eğer hata varsa) | 
| test_mode | Evet | Test mi? | 
| payment_type | Evet | card veya eft | 
| currency | Hayır | TL, USD vb. | 
| payment_amount | Hayır | Sipariş tutarı | 
| installment_count | Hayır | Taksit adedi | 
Yanıt Olarak: sadece echo "OK"; dönmelisiniz.
3) PHP Bildirim URL Örnek Kodu
$post = $_POST;
$merchant_key = 'MAGAZA_KEY';
$merchant_salt = 'MAGAZA_SALT';
$hash = base64_encode(hash_hmac('sha256', $post['merchant_oid'].$merchant_salt.$post['status'].$post['total_amount'], $merchant_key, true));
if($hash != $post['hash'])
    die('PAYTR notification failed: bad hash');
if($post['status'] == 'success') {
    // Siparişi Onayla
} else {
    // Siparişi İptal Et
}
echo "OK";
exit;
4) Kritik Dikkat Edilmesi Gerekenler
- 
Bildirim URL'ye Giriş Kısıtlaması Koymayın: (IP / login koruması vs. olmasın) 
- 
Yanlızca OK dönün: HTML, whitespace vs. eklemeyin. 
- 
Hash Kontrolü yapın: Aksi halde fraud riski olur. 
- 
Bir sipariş için birden fazla bildirim gelebilir: Siparişi zaten onayladıysanız tekrar işleme almayın. 
- 
SSL kullanın: Bildirim URL adresiniz HTTPS olmalı. 
5) Hata Kodları ve Anlamları
| Kod | Açıklama | 
|---|---|
| 0 | Ödemenin detaylı hata mesajı | 
| 1 | Kimlik doğrulama eksik | 
| 2 | Kimlik doğrulama başarısız | 
| 3 | Güvenlik kontrolü başarısız | 
| 6 | Müşteri sayfayı terk etti | 
| 8 | Kart taksit desteklemiyor | 
| 9 | Kart ile işlem yetkisi yok | 
| 10 | 3D Secure zorunlu | 
| 11 | Fraud uyarısı | 
| 99 | Teknik entegrasyon hatası | 
6) Test Ödeme Sonrası Kontroller
- 
PayTR Mağaza Paneli > İşlem Detaylarından gelen Bildirimleri kontrol edin. 
- 
"Başarılı" yerine "Devam Ediyor" görüyorsanız: Bildirim URL OK dönmemiş. 
- 
PHP error log kontrol edin. 
- 
Debug modu aktifse gelen POST verilerini kayıt altına alın. 
Sonuç: Entegrasyonunuz Artık Hazır!
Doğru bir Bildirim URL entegrasyonu ile ödeme sisteminiz %100 sorunsuz çalışır. Bu adım, ödeme sistemlerinde profesyonel çalışmanın temelidir.
Bağlantılı Kaynaklar:
