Ana içeriğe geç

Genel Hata Modeli & Kodlar

Açıklama

Tüm ödeme servisleri (

  • /pws/paymentSet,
  • /pws/payment,
  • /pws/paymentOptions,
  • /pws/payment/commit,
  • /pws/payment/transaction,
  • /pws/payment/cancel,
  • /pws/payment/refund

ortak bir hata modeline sahiptir.

Servislerden dönen tüm yanıtlar, işlem sonucuna göre HTTP durum kodu (status code) ve işlem mesajı (message) ile birlikte standart bir JSON yapısında döner.

Başarısız işlemler için isSuccess = false döner ve errorCode ile errorMessage alanları hata detayını belirtir.

Bazı hatalar hem işlem düzeyinde (data.errorCode) hem de servis genelinde (errors[]) bulunabilir.

Response Yapısı

Tüm servislerde temel dönüş yapısı aşağıdaki şekildedir

{`  
`"message": "Açıklama metni",`
`"statusCode": 400,`
`"exceptions": null,`
`"data": null,`
`"oldData": null,`
`"errors": [`
`{`
`"code": "P001",`
`"message": "Geçersiz istek parametresi"`
`}`
`]`
`}`
Alan AdıTipAçıklama
messagestringGenel bilgi veya hata mesajı
statusCodeintHTTP durum kodu (ör. 200, 400, 401, 404, 500)
exceptionsobjectUygulama seviyesinde yakalanan özel hata (opsiyonel)
dataobjectBaşarılı işlem yanıt verisi
oldDataobjectGüncellenen veri senaryolarında eski kayıt bilgisi
errorsdiziBirden fazla hata nesnesi içerebilir (code, message alanlarıyla)

Hata Kodları

KoduHTTP StatusAçıklamaÖrnek Durum
P001400Geçersiz istek parametresiZorunlu alanlar eksik veya hatalı formatta gönderildiğinde
P002401Yetkisiz erişimGeçersiz veya süresi dolmuş AccessToken
P003403Yetki reddedildiKullanıcı işlem yapmaya yetkili değil
P004404Kayıt bulunamadıİptal/iade edilmek istenen referans kodu sistemde yok
P005409İşlem çakışmasıAynı işlem için tekrarlı talep gönderildi (ör. iki defa iade)
P006422İşlem doğrulama hatasıKart numarası, BIN veya tutar geçersiz
P007429Çok fazla istekKısa sürede çok sayıda talep gönderildi
P008500Sistem hatasıSunucu tarafında beklenmeyen bir hata oluştu
P009503Banka servisi yanıt vermediProvizyon sistemi veya banka API’si geçici olarak kapalı
P010504Zaman aşımıBanka veya ödeme ağ geçidi yanıt süresi aşıldı
P011600Ödeme başarısızBanka, işlemi reddetti (örneğin limit yetersiz, 3D başarısız)
P012601OTP hatası3D Secure adımında kullanıcı doğrulaması başarısız
P013602İptal başarısızİptal edilecek işlem bankadan onay alamadı
P014603İade başarısızİade isteği banka tarafından reddedildi
P015604Kısmi iade limit aşıldıİade toplam tutarı işlem tutarını geçti
P016605Desteklenmeyen işlem tipiİstek parametrelerinde hatalı işlem tipi belirtildi
P017606İşlem zaten tamamlanmışAynı referansla tekrar işlem gönderildi
P018607BIN tanımsızGönderilen BIN numarası sistemde tanımlı değil
P019608POS bulunamadıİlgili ödeme seti içinde geçerli POS tanımı yok
P020609Kur hata durumuPara birimi sistemde desteklenmiyor veya dönüş oranı bulunamadı

Notlar & En İyi Uygulamalar

  • StatusCode 200 dönen işlemler, sistemsel olarak başarılı sayılır. Ancak bankadan gelen işlem sonucu data.isSuccess=false olabilir.

  • errorMessage kullanıcıya gösterilebilecek kısa açıklamadır. exceptions alanı ise yalnızca hata izleme/loglama içindir.

  • Banka kaynaklı hatalarda (P011–P015) detaylı açıklama errorMessage alanında bulunur.

  • referenceCode üzerinden yapılan işlemlerde, geçersiz kodlar için 404 - P004 hatası döner.

  • Hata yönetimi sırasında, istemci tarafında statusCode ve errorCode birlikte kontrol edilmelidir.

  • Tüm hata kodları geriye dönük uyumluluk için sabit tutulmalıdır.