PayTR iFrame API entegrasyonunun tamamlanması için sadece ödeme formunun gösterilmesi yeterli değildir. Gerçek sipariş onayı ya da iptali, Bildirim URL üzerinden gerçekleşir. Bu makalede PayTR Bildirim URL entegrasyonunun nasıl yapılacağını adım adım anlatacağız ve örnek kodlar ile destekleyeceğiz.
Ayrıca ilk adım olan iframe entegrasyonu için mutlaka şu yazıya da göz atmanızı öneririz:
Bildirim URL Nedir?
Müşteri ödemeyi tamamladıktan sonra, PayTR sisteminizde tanımlı Bildirim URL'ye POST isteği yapar. Bu bildirim sayesinde, siparişinizin durumunu (onay/iptal) kesinleştirirsiniz.
Önemli Not:
-
Bildirim URL bir "kullanıcı yönlendirme" sayfası değildir.
-
Server-side çalışır.
-
Bildirimi alır almaz PayTR sistemine "OK" cevabı vermek zorundasınız.
PayTR'nin Bildirim URL'ye Göndereceği Parametreler
Parametre | Zorunlu | Açıklama |
---|---|---|
merchant_oid | Evet | Sipariş numarası |
status | Evet | "success" veya "failed" |
total_amount | Evet | Ödenen toplam tutar (kuruş cinsinden) |
hash | Evet | İmza kontrolü için hash değeri |
failed_reason_code | Hayır | Hata kodu |
failed_reason_msg | Hayır | Hata mesajı |
test_mode | Hayır | Test işlemi mi? |
payment_type | Evet | 'card' veya 'eft' |
currency | Hayır | TL, USD, EUR vb. |
payment_amount | Hayır | İlk gönderilen tutar |
Bildirim URL Entegrasyonu Nasıl Yapılır?
1. Gelen POST Verilerini Alın
$post = $_POST;
2. Gelen Verilerin İmzasını (hash) Doğrulayin
$merchant_key = 'Sizin_Merchant_Key';
$merchant_salt = 'Sizin_Merchant_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');
3. Siparişi Tespit Edin ve Durumunu Güncelleyin
if( $post['status'] == 'success' ) {
// Siparişi ONAYLAYIN
} else {
// Siparişi İPTAL EDİN
}
4. Mutlaka "OK" Cevabı Dönün
echo "OK";
exit;
Güvenlik Önerileri
-
Gelen POST verilerini mutlaka hash kontrolü ile doğrulayın.
-
Bildirimi birden fazla alabileceğiniz için, sipariş durumunu sorgulayarak tekrar işlem yapmayın.
-
Bildirim URL'nize herhangi bir ek çıktı basmayın. Sadece
OK
yazın. -
Session değişkenleri kullanmayın. Siparişleri sadece
merchant_oid
ile bulun.
Hatalı Durumlar ve Sebepleri
failed_reason_code | Açıklama |
---|---|
0 | Detaylı hata mesajı |
1 | Kimlik doğrulama eksik |
2 | Yanlış şifre |
3 | Güvenlik kontrolü başarısız |
6 | Müşteri ödeme yapmadı |
8 | Taksit desteklenmiyor |
9 | Kart işleme yetkisi yok |
10 | 3D Secure zorunlu |
11 | Fraud uyarısı |
99 | Teknik entegrasyon hatası |
Bildirim URL'de Yapılan Sık Hatalar
-
OK cevabı dönülmemesi → Sipariş "Devam Ediyor" gözükür.
-
Bildirimin hash kontrolü yapılmaması → Güvenlik zaafiyeti olur.
-
Session kullanılması → Kullanılamaz, çöker.
-
Aynı siparişe birden fazla onay/iptal işlemi uygulanması → Mükerrer işlemler olur.
Sonuç: PayTR Bildirim URL Olmadan Entegrasyon Tamamlanmaz!
PayTR Bildirim URL entegrasyonu, ödeme sürecinin en kritik parçasıdır. Bu adımı doğru uygulamazsanız, ödemeleriniz tamamlanmaz ve siparişleriniz eksik işlenebilir. Bu rehberi adım adım uygulayarak, PayTR entegrasyonunuzu profesyonel ve güvenli hale getirebilirsiniz.
Bağlantılı İçerikler:
-
PayTR iFrame API Entegrasyonu: Adım Adım Bilgilendirici Rehber
-
API Endpointlerinde Middleware Kullanımı ile Güvenlik Nasıl Artırılır?
-
Frontend ve Backend Ayrı Sunulurken Güvenlik Nasıl Sağlanır? REST API İletişimi ve Güvenlik Rehberi