Merhabalar.
Sanal Posla uygulamaları ile daha önceden uğraştıysanız bildiğiniz üzere, uğraşacaksanız bileceğiniz üzere sanal poslar xml yapı ile bankaya istek(request) yapılır banka da bu isteğinize karşı bir cevap(response) döndürür. Gelen cevap da xml yapıdadır. Cevap bir kaç bilgi taşır. Bunlardan bazıları response, procreturncode veya reasoncode, errormsg, hostmsg gibi değerlerdir. Bundan sonra dilerseniz sadece response yi kontrol ederek işlem olumlu veya olumsuz diye kullanıcıya geri dönebilirsiniz ama biraz daha uğraşıp kullanıcıya yardımcı olmak için procreturncode veya reasoncode a göre bir cevap döndürmeniz gerekir. Yani dönen değer örnek verecek olursak 02 döndüyse bu bir durumu temsil etmektedir ve yine örnek verecek olursak 02 kartın son kullanma tarihi yanlış anlamına gelir.
Sanal Pos uygulamaları yaparken didik didik uğraşıp bankadan gelen kod anlamlarını ayıklamıştım. İşinize yarar diye burada paylaşayım istedim.
Kodlar ve cevapları bankalara göre değişiyor.
YapıKredi Bankası (POSNET) için
dönen $posnet->GetResponseCode() koduna göre
switch ($posnet->GetResponseCode()) { case "121" : $msg="Posnet sunucusundan cevap alınamadı, lütfen tekrar deneyiniz."; break; case "131" : $msg="Kredi kartı numarası hatalı, lütfen tekrar deneyiniz."; break; case "138" : $msg="Kredi kartı son kullanma tarihi hatalı, lütfen kontrol edip tekrar deneyiniz."; break; case "139" : $msg="Kredi kartı güvenlik kodu hatalı lütfen tekrar deneyiniz."; break; case "0095" : $msg="İşlem Onaylanmadı, Kredi kartı bilgileriniz hatalı olabilir. Kontrol edip tekrar deneyiniz."; break; case "0110" : $msg="Kart bakiyesi yetersiz."; break; case "0129" : $msg="İşlem başarısız. Başka bir kart ile tekrar deneyiniz."; break; case "0173" : $msg="İşlem Onaylanmadı. Kredi kartınızın internet üzerinden alış verişe açık olduğunu bankanızı arayarak onaylayınız."; break; case "0213" : $msg="Yetersiz bakiye. Lütfen başka bir kredi kartı ile tekrar deneyiniz."; break; case "0225" : $msg="Kredi kartı numarası hatalı, lütfen kontrol edip tekrar deneyiniz."; break; case "0232" : $msg="Kredi kartınızın işlem sınırı aşıldı. Lütfen bankanızı arayınız veya başka bir kart ile işlemi tekrar deneyiniz."; break; case "0877" : $msg="Kredi kartı bilgileri hatalı. Lütfen güvenlik kodunu kontrol edip tekrar deneyiniz."; break; case "0220" : $msg="Taksitli işlemler en az 1 YTL olmalıdır. Kontrol edip tekrar deneyiniz."; break; case "0512" : $msg="Geçersiz kredi kartı girdiniz. Kontrol edip tekrar deneyiniz."; break; case "0229" : $msg="Geçersiz işlem. Yanlış kredi kartı numarası girdiniz veya Yapı Kredi Bankasına ait olmayan bir kart ile taksit talebinde bulundunuz."; break; case "0002" : $msg="Geçersiz işlem. Yanlış kredi kartı numarası girdiniz veya Yapı Kredi Bankasına ait olmayan bir kart ile taksit talebinde bulundunuz."; break; case "0551" : $msg="Girmiş olduğunuz kredi kartı numarası geçerli bir kredi kartı numarası değildir."; break; case "0267" : $msg="Girmiş olduğunuz kredi kartı numarası geçerli bir kredi kartı numarası değildir."; break; case "0363" : $msg="Girmiş olduğunuz kredi kartı numarası geçerli bir kredi kartı numarası değildir."; break; case "0225" : $msg="Girmiş olduğunuz kredi kartı numarası hatalıdır."; break; case "0220" : $msg="Minimum taksit tutarı 1'TL dir."; break; case "0173" : $msg="Kredi kartınız internetten kullanımlara kapalıdır. Lütfen başka bir kartla tekrar deneyiniz."; break; default: $msg = 'İşlem geçersiz, lütfen kart bilgilerinizi kontrol edip tekrar deneyiniz veya bankanızı arayınız.'; break; }
Garanti Bankası için
dönen $ProcReturnCode koduna göre $gecersiz_islem = array(3, 4, 5, 6, 7, 13, 15, 17, 19, 21, 25, 28, 29, 30, 31, 32, 37, 38, 39, 51, 52, 53, 63, 68, 75, 76, 77, 78, 80, 81, 82, 83, 85, 86, 88, 89, 91, 92, 94, 95, 96, 98); if($ProcReturnCode=="99" and $ErrMsg=="The card failed compliancy checks") $msg = "Kredi kart numarası geçerli değil"; elseif($ProcReturnCode=="99" and $ErrMsg=="The card has expired") $msg = "Kartın son kullanım tarihi geçmiş."; elseif($ProcReturnCode=="99" and $ErrMsg=="Insufficient permissions to perform requested operation") $msg = "Kullanıcı hatası (belirli bir işlem yaparken o işleme yetkisi olmayan bir kullanıcı kullanılmış. Mağaza kodunu, kullanıcı adını ve şifresini gözden geçiriniz.)"; elseif($ProcReturnCode=="99" and $ErrMsg=="Value for element 'Total' is not valid.") $msg = "Currency kodu hatalı."; elseif($ProcReturnCode=="99" and ($ErrMsg=="Unable to determine card type. ('length' is '16')" or $ErrMsg=="The card failed compliancy checks")) $msg = "Kart Tanımlanamadı. Geçersiz kredi kartı."; elseif($ProcReturnCode=="93" and $ErrMsg=="Transaction cannot be completed (violation of law)") $msg = "İşlem tamamlanamadı. İşleyiş kurallarından biri çiğnendi."; elseif($ProcReturnCode=="54" and $ErrMsg=="Expired Card") $msg = "Kart son kullanım tarihi hatalı."; elseif($ProcReturnCode=="51" and $ErrMsg=="Not sufficient funds") $msg = "Kredi kartınızın bakiyesi yetersiz. Başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="82" and $ErrMsg=="Incorrect CVV") $msg = "Geçersiz CVV kodu girildi."; elseif($ProcReturnCode=="10" and $ErrMsg=="Reserved") $msg = "Yetkisiz işlem."; elseif($ProcReturnCode=="1" or $ProcReturnCode=="2") $msg = "Kredi kartınız için bankanız provizyon talep etmektedir. İşlem sonuçlanmamıştır."; elseif($ProcReturnCode=="8") $msg = "Kart üzerindeki bilgileri kontrol ederek tekrar deneyiniz."; elseif($ProcReturnCode=="9") $msg = "Kredi kartınız yenilenmiş. Lütfen yeni kredi kartı bilgileriniz ile tekrar deneyiniz."; elseif($ProcReturnCode=="12") $msg = "Kartınızın arka yüzünde bulunan CVV kodu yanlış."; elseif($ProcReturnCode=="14") $msg = "Girmiş olduğunuz kart numarası hatalı."; elseif($ProcReturnCode=="16") $msg = "Kredi kartınızın bakiyesi yetersiz. Başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="18") $msg = "Kartınız kullanıma kapanmış durumdadır."; elseif($ProcReturnCode=="33") $msg = "Kartınızın süresi dolmuş durumdadır."; elseif($ProcReturnCode=="34" or $ProcReturnCode=="43") $msg = "Kartınız çalıntı olarak saptanmış durumda olduğu için işleminizi gerçekleştiremedik."; elseif($ProcReturnCode=="36") $msg = "Kartınız sınırlandırılmış olduğu için işleminizi gerçekleştiremedik."; elseif($ProcReturnCode=="41") $msg = "Kartınız kayıp olarak saptanmış durumda olduğu için işleminizi gerçekleştiremedik."; elseif($ProcReturnCode=="51") $msg = "Kredi kartınızın bakiyesi yetersiz. Başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="54") $msg = "Kredi kartınızın son kullanma tarihi hatalı yada eksik. Bilgileri kontrol edip tekrar deneyiniz."; elseif($ProcReturnCode=="56") $msg = "Girmiş olduğunuz bilgilerle eşleşen kredi kartı bulunmamaktadır. Başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="57") $msg = "Bu işlem için kredi kartınıza izin verilmedi. Başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="58") $msg = "Yetkisiz bir işlem yapıldı. Örn: Kredi kartınızın ait olduğu banka dışında bir bankadan taksitlendirme yapıyor olabilirsiniz. Başka bir kredi kartı ile işlem yapmayı deneyiniz."; elseif($ProcReturnCode=="61") $msg = "Kartınızın para çekme limiti üst sınırdadır. Başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="62") $msg = "Kartınızın kısıtlandırılmıştır. Kartınız sadece kendi ülkenizde geçerlidir. Başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="65") $msg = "Kredi kartınızın günlük işlem limiti dolmuştur. Başka bir kredi kartı ile deneyiniz."; elseif($ProcReturnCode=="90") $msg = "Gün sonu işlemi yapılıyor. Kısa bir süre sonra tekrar deneyiniz."; elseif($ProcReturnCode=="91") $msg = "Bankanıza ulaşılamıyor. Başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="93") $msg = "Hukuki nedenlerden dolayı işleminiz reddedildi."; elseif(in_array($ProcReturnCode, $gecersiz_islem)) $msg = "İşleminiz onaylanmadı. Lütfen kısa bir süre sonra tekrar deneyiniz."; else $msg = 'Bir hata oluştu (Hata Kodu:'.$ProcReturnCode.') Tekrar deneyiniz. Sorun devam ederse lütfen bizimle temasa geçiniz.';
İş Bankasına Göre
dönen $ProcReturnCode koduna göre $gecersiz_islem = array(01, 02, 03, 05, 06, 08, 11, 12, 13, 14, 15, 19, 21, 25, 29, 31, 32, 38, 52, 53, 61, 63, 75, 76, 77, 81, 83, 85, 91, 92, 96, 98); if($ProcReturnCode=="04") $msg = "Geçersiz kredi kartı bilgileri girdiniz. Lütfen başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="07") $msg = "Kredi kartınız çalıntı olarak saptanmış yada özel bir durum ile karşı karşıya. Lütfen yeni kredi kartı bilgileriniz ile tekrar deneyiniz."; elseif($ProcReturnCode=="12") $msg = "Kartınızın arka yüzünde bulunan CVV kodu yanlış."; elseif($ProcReturnCode=="14") $msg = "Girmiş olduğunuz kart numarası hatalı."; elseif($ProcReturnCode=="16") $msg = "Kredi kartınızın bakiyesi yetersiz. Başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="18") $msg = "Kartınız kullanıma kapanmış durumdadır."; elseif($ProcReturnCode=="33") $msg = "Kartınızın süresi dolmuş durumdadır."; elseif($ProcReturnCode=="34" or $ProcReturnCode=="43" or $ProcReturnCode=="37") $msg = "Kartınız çalıntı olarak saptanmış durumda olduğu için işleminizi gerçekleştiremedik."; elseif($ProcReturnCode=="36") $msg = "Kartınız sınırlandırılmış olduğu için işleminizi gerçekleştiremedik."; elseif($ProcReturnCode=="41") $msg = "Kartınız kayıp olarak saptanmış durumda olduğu için işleminizi gerçekleştiremedik."; elseif($ProcReturnCode=="51") $msg = "Kredi kartınızın bakiyesi yetersiz. Başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="54") $msg = "Kredi kartınızın son kullanma tarihi hatalı yada eksik. Bilgileri kontrol edip tekrar deneyiniz."; elseif($ProcReturnCode=="56") $msg = "Girmiş olduğunuz bilgilerle eşleşen kredi kartı bulunmamaktadır. Başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="57") $msg = "Bu işlem için kredi kartınıza izin verilmedi. Başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="58") $msg = "Yetkisiz bir işlem yapıldı. Örn: Kredi kartınızın ait olduğu banka dışında bir bankadan taksitlendirme yapıyor olabilirsiniz. Başka bir kredi kartı ile işlem yapmayı deneyiniz."; elseif($ProcReturnCode=="61") $msg = "Kartınızın para çekme limiti üst sınırdadır. Başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="62") $msg = "Kartınızın kısıtlandırılmıştır. Kartınız sadece kendi ülkenizde geçerlidir. Başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="65") $msg = "Kredi kartınızın günlük işlem limiti dolmuştur. Başka bir kredi kartı ile deneyiniz."; elseif($ProcReturnCode=="80") $msg = "Kredi kartınızın son kullanım tarihi yanlış yada eksik. Lütfen kontrol edip tekrar giriniz."; elseif($ProcReturnCode=="90") $msg = "Gün sonu işlemi yapılıyor. Kısa bir süre sonra tekrar deneyiniz."; elseif($ProcReturnCode=="91") $msg = "Bankanıza ulaşılamıyor. Başka bir kredi kartı ile tekrar deneyiniz."; elseif($ProcReturnCode=="93") $msg = "Geçersiz işlem. Yanlış kredi kartı numarası girdiniz veya İş Bankasına ait olmayan bir kart ile taksit talebinde bulundunuz."; elseif($ProcReturnCode=="99" and $ErrMsg=='Kredi karti numarasi gecerli formatta degil.') $msg = "Geçersiz bir kredi kartı numarası girdiniz. Lütfen başka bir kredi kartıyla tekrar deneyiniz."; elseif($ProcReturnCode=="95") $msg = "Geçersiz işlem. Yanlış kredi kartı numarası girdiniz veya İş Bankasına ait olmayan bir kart ile taksit talebinde bulundunuz."; elseif(in_array($ProcReturnCode, $gecersiz_islem)) $msg = "İşleminiz onaylanmadı. Lütfen kısa bir süre sonra tekrar deneyiniz."; else $msg = 'Bir hata oluştu (Hata Kodu:'.$ProcReturnCode.') Tekrar deneyiniz. Sorun devam ederse lütfen bizimle temasa geçiniz.';
Umarım işinize yarar.
Paylaşıma katkı olsun diye diğer bankaların hata kodları elinizde varsa ulaştırın bu başlık adı altında yayınlayalım.
Herkese kolay gelsin, iyi çalışmalar.
Yazar: Erdi
(Güncelleme) Kaynak: http://www.erditaskin.com/
Yapı krediye 0003 ekleyebilirsiniz hocam. IP hatası , pos panelindeki ip lerinizin dışında bir siteden gönderim gerçekleşirse bu hatayı veriyor.
Verdiğiniz bilgi için teşekkür ederim. Faydası dokunacaktır.
G0 : - BU HATA KODUNUN ANLAMI NEDİR ACABA ?