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: