public void YapiKredi(PosForm pf) { // Banka bilgileri. string mid = "xxx"; string tid = "xxx"; try { Random rnd = new Random(); string ccno = pf.kartNumarasi.ToString(), expdate = pf.yil.ToString().Replace("20", string.Empty) + pf.ay, cvc = string.Format("{0:000}", pf.guvenlikKodu), orderid = "1234567890123456789" + rnd.Next(11111, 99999), amount = pf.tutar.ToString(), currencycode = "YT", instnumber = pf.taksit.ToString(); C_Posnet posnetObj = new C_Posnet(); bool result = false; posnetObj.SetURL("https://www.posnet.ykb.com/PosnetWebService/XML"); posnetObj.SetMid(mid); posnetObj.SetTid(tid); result = posnetObj.DoSaleTran(ccno, expdate, cvc, orderid, amount, currencycode, instnumber, "", ""); if (pf.taksit > 0) { posnetObj.SetKOICode(pf.taksit.ToString()); } if (posnetObj.GetApprovedCode() == "1") { this.sonuc = true; this.code = posnetObj.GetAuthcode(); this.referansNo = posnetObj.GetHostlogkey(); } else { this.sonuc = false; this.hataMesaji = posnetObj.GetResponseText(); } } catch (Exception) { this.sonuc = false; this.hataMesaji = this.sistemHatasi; } }
/// <summary> /// Puan Sorgulama, Vade Sorgulama, Ön Otorizasyon, Satış gibi POS İşlemlerini gerçekleştirir. /// </summary> /* Create FÜ - 00.00.00 - 00:00 * Edit FÜ - 12.08.2012 - 18:30 Summary kısmı eklendi. */ /// <param name="PT">POS İşlem Tipleri Objesi</param> /// <param name="P">POS Bilgileri Objesi</param> /// <param name="K">Kredi Kartı Bilgileri Objesi</param> /// <param name="O">Ödeme Bilgileri Objesi</param> /// <returns> /// SHOPClass.Odemeler.POSDurum objesi döndürür. /// </returns> public SHOPClass.Odemeler.POSDurum PosIslem(SHOPClass.Sabitler.PosIslemTipleri PT, SHOPObjeler.Tanimlar.POS P, SHOPObjeler.Tanimlar.KrediKart K, SHOPObjeler.Tanimlar.OdemeBilgileri O) { #region Obje İçin Yeni Instance Oluşturma SHOPObjeler.Tanimlar.POSIslem PI = new SHOPObjeler.Tanimlar.POSIslem(); Objeler.Tanimlar.Messages M = new Objeler.Tanimlar.Messages(); #endregion if (P != null && K != null) { try { #region YKB Pos Instance C_Posnet CP = new C_Posnet(); #endregion #region Empty Bool Instance Boolean B = false; #endregion #region POS Bilgileri #region Mağaza ID, Terminal ID vb. Gibi Bilgileri Atama CP.SetMid(P.MID); CP.SetTid(P.TID); #endregion #region URL Ayarlama if (P.Test) { if (!string.IsNullOrEmpty(P.TestURL)) { CP.SetURL(P.TestURL); } else { CP.SetURL(P.URL); } } else { CP.SetURL(P.URL); } #endregion #endregion #region Islem ID //! 24 karakter istiyor IslemID = IslemID + (new Random((int)DateTime.Now.Ticks)).Next().ToString() + (new Random((int)DateTime.Now.Ticks)).Next().ToString(); IslemID = IslemID.Substring(0, 24); #endregion #region İşlem Tipleri switch (PT) { #region Puan Sorgula case SHOPClass.Sabitler.PosIslemTipleri.Puan: #region İşlem Tipini Atama PD.ProcessType = SHOPClass.Sabitler.PosIslemTipleri.Puan; #endregion B = CP.DoPointInquiryTran(K.KartNo, TersCevir(K.SonKullanim)); break; #endregion #region Vade Farkı Öğren case SHOPClass.Sabitler.PosIslemTipleri.Vade: #region İşlem Tipini Atama PD.ProcessType = SHOPClass.Sabitler.PosIslemTipleri.Vade; #endregion B = CP.DoVFTInquiry(K.KartNo, KurusCevir(O.Tutar.ToString()), O.Taksit.ToString(), P.KampanyaKodu); break; #endregion #region Ön Otorizasyon Yap case SHOPClass.Sabitler.PosIslemTipleri.Otorizasyon: #region İşlem Tipini Atama PD.ProcessType = SHOPClass.Sabitler.PosIslemTipleri.Otorizasyon; #endregion B = CP.DoAuthTran(K.KartNo, TersCevir(K.SonKullanim), K.CVC, IslemID, KurusCevir(O.Tutar.ToString()), P.ParaBirimleri.Where(x => x.Key == 1).Select(x => x.Value).FirstOrDefault(), O.Taksit.ToString()); break; #endregion #region Satış Yap case SHOPClass.Sabitler.PosIslemTipleri.Satis: #region İşlem Tipini Atama PD.ProcessType = SHOPClass.Sabitler.PosIslemTipleri.Satis; #endregion B = CP.DoSaleTran(K.KartNo, TersCevir(K.SonKullanim), K.CVC, IslemID, KurusCevir(O.Tutar.ToString()), P.ParaBirimleri.Where(x => x.Key == 1).Select(x => x.Value).FirstOrDefault(), O.Taksit.ToString()); break; #endregion } #endregion if (B == true) { #region Durum Kodu if (!string.IsNullOrEmpty(CP.GetApprovedCode())) { PI.DurumKodu = CP.GetApprovedCode(); } #endregion if (CP.GetApprovedCode() == "1" || CP.GetApprovedCode() == "2") { //- İşlem Onaylandıysa #region INFO //x GetHostlogkey Referans numarası //x GetAuthcode Onay Kodu //x GetTotalPoint Kullanılabilir Toplam Puan //x GetTotalPointAmount Kullanılabilir Toplam Puan Tutarı (Yeni Kuruş cinsinden) //x GetPoint Kazanılan Toplam Puan //x GetPointAmount Kazanılan Toplam Puan Tutarı (Yeni Kuruş cinsinden) //x GetInstalmentNumber Taksit sayısı //x GetInstalmentAmount Taksit tutarı (Yeni Kuruş cinsinden) #endregion #region Onay Bilgisi #region Onay Kodu if (!string.IsNullOrEmpty(CP.GetAuthcode().Trim())) { PI.OnayKodu = CP.GetAuthcode(); } #endregion #region Referans Numarası if (!string.IsNullOrEmpty(CP.GetHostlogkey().Trim())) { PI.ReferansNumarasi = CP.GetHostlogkey(); } #endregion #endregion #region Puan Bilgileri if (!string.IsNullOrEmpty(CP.GetTotalPoint())) { PI.KullanilabilirToplamPuan = CP.GetTotalPoint(); } if (!string.IsNullOrEmpty(CP.GetTotalPointAmount())) { PI.KullanilabilirToplamPuanTutari = CP.GetTotalPointAmount(); } if (!string.IsNullOrEmpty(CP.GetPoint())) { PI.KazanilanToplamPuan = CP.GetPoint(); } if (!string.IsNullOrEmpty(CP.GetPointAmount())) { PI.KazanilanToplamPuanTutari = CP.GetPointAmount(); } #endregion #region Taksit Bilgileri if (!string.IsNullOrEmpty(CP.GetInstalmentNumber())) { PI.TaksitSayisi = CP.GetInstalmentNumber(); } if (!string.IsNullOrEmpty(CP.GetInstalmentAmount())) { PI.TaksitTutari = TLCevir(CP.GetInstalmentAmount()); } #endregion #region Vade Bilgileri if (!string.IsNullOrEmpty(CP.GetVFTAmount())) { PI.VadeTutari = TLCevir(CP.GetVFTAmount()); } if (!string.IsNullOrEmpty(CP.GetVFTRate())) { PI.VadeOrani = CP.GetVFTRate(); } if (!string.IsNullOrEmpty(CP.GetVFTDayCount())) { PI.VadeGunSayisi = CP.GetVFTDayCount(); } #endregion #region Dönüş Mesajı PD.Message.Type = Class.Sabitler.MessageTypes.OK; PD.Message.Header = "İşlem Başarılı"; PD.Message.Text = "İşlem başarıyla gerçekleştirilmiştir."; #endregion } else { //- İşlem Onaylanmadıysa #region INFO //x GetResponseCode Hata kodu //x GetResponseText Hata mesajı #endregion #region POS Hata Mesajı if (!string.IsNullOrEmpty(CP.GetResponseCode())) { PI.HataMesajiKodu = CP.GetResponseCode(); } if (!string.IsNullOrEmpty(CP.GetResponseText())) { PI.HataMesaji = CP.GetResponseText(); } #endregion #region Dönüş Mesajı PD.Message.Type = Class.Sabitler.MessageTypes.ERROR; PD.Message.Header = "Bir Hata Oluştu"; PD.Message.Text = CP.GetResponseCode() + " - " + CP.GetResponseText(); #endregion } } else { #region Dönüş Mesajı M.Type = Class.Sabitler.MessageTypes.ERROR; M.Header = "Bir Hata Oluştu"; M.Text = "False geldi."; #endregion } } catch (Exception Ex) { #region Dönüş Mesajı M.Type = Class.Sabitler.MessageTypes.ERROR; M.Header = "Bir Hata Oluştu"; M.Text = Ex.Message; #endregion } } else { #region Dönüş Mesajı M.Type = Class.Sabitler.MessageTypes.Other; M.Header = "İşlem Hatası"; M.Text = "POS yada Kart Objesi Boş Geldi."; #endregion } #region Objeye Diğer Objeleri Atama PD.POSIslem = PI; PD.Message = M; #endregion return(PD); }
public override PaymentMessage PeymentCore(ModelLayer.BankRequest bankRequest) { PaymentMessage mesaj = new PaymentMessage(); C_Posnet posnetObj = new C_Posnet(); posnetObj.SetMid(bankaApi.ClientId); posnetObj.SetTid(bankaApi.ApiName); posnetObj.SetURL(bankaApi.HostName); // Yapı Kredi Bilgi Formatı string tarihYil = bankRequest.KrediKart.Yil.Substring(2) + bankRequest.KrediKart.Ay; // Yapı Kredi Toplam Fiyat İşlemi string ykbtaksitToplam = bankRequest.TaksitToplam.ToString("c"); ykbtaksitToplam = ykbtaksitToplam.Replace("TL", ""); ykbtaksitToplam = ykbtaksitToplam.Replace(",", ""); ykbtaksitToplam = ykbtaksitToplam.Replace(".", ""); string taksit = null; if (bankRequest.Taksit.ToString() == "01") { taksit = "00"; } else { taksit = bankRequest.Taksit.ToString(); } bankRequest.KrediKart.AdSoyad = string.Format("{0}-", BusinessLayer.UrlTR.Replace(bankRequest.KrediKart.AdSoyad)); //Ad Soyad için kalan alan int nNameLastIndex = (23 - bankRequest.SiparisNo.Length); for (int i = bankRequest.KrediKart.AdSoyad.Length; i < nNameLastIndex; i++) { bankRequest.KrediKart.AdSoyad += "0"; } if (bankRequest.KrediKart.AdSoyad.Length > nNameLastIndex) { bankRequest.KrediKart.AdSoyad = bankRequest.KrediKart.AdSoyad.Substring(0, nNameLastIndex); } bankRequest.SiparisNo = string.Format("{0}-{1}", bankRequest.KrediKart.AdSoyad, bankRequest.SiparisNo); Boolean baglanti = posnetObj.DoSaleTran(bankRequest.KrediKart.No, tarihYil, bankRequest.KrediKart.CV2, bankRequest.SiparisNo, ykbtaksitToplam, "YT", taksit, "", ""); if (baglanti == false) { mesaj.RedMesaj = "Banka ile Bağlantı Kurulamadı, Lütfen tekrar deneyiniz."; mesaj.RedMesajKodu = "yapikerediBaglanti"; } if (posnetObj.GetApprovedCode() == "1") { if (posnetObj.GetAuthcode().ToString().Trim() != "" && posnetObj.GetHostlogkey().ToString().Trim() != "") { mesaj.Success = true; mesaj.OnayKodu = posnetObj.GetAuthcode(); mesaj.ReferansNo = posnetObj.GetHostlogkey(); } } else if (posnetObj.GetApprovedCode() == "2") { mesaj.RedMesaj = "Kredi kartı ile ödeme işlemini daha önce yapıldı. <br/> Resptext: " + posnetObj.GetResponseText(); mesaj.RedMesajKodu = posnetObj.GetResponseCode(); } else { #region Yapı Kredi Hata Mesajları string hataKodu = posnetObj.GetResponseCode(); string hataMesaji = posnetObj.GetResponseText(); mesaj.RedMesajKodu = posnetObj.GetResponseCode(); if (hataKodu.Trim() == "0095") { mesaj.RedMesaj = "* Hata Mesajı: " + posnetObj.GetResponseText() + "<br/>* Kart bilgilerinden ( KK No, SKT, CVV) biri yada birkaçı hatalı girilmiş veya Worldcard'lar için bankaca tanımlanmış günlük limitler aşılmış olabilir."; } else if (hataKodu.Trim() == "150") { mesaj.RedMesaj = "* Yanlış CVC no hatası."; } else if (hataKodu.Trim() == "0213") { mesaj.RedMesaj = "* Hata Mesajı: " + hataMesaji + "<br/>* Kartın bakiyesi yetersiz. Kartı veren bankayı arayın."; } else if (hataKodu.Trim() == "0220") { mesaj.RedMesaj = "* Hata Mesajı: " + hataMesaji + "<br/>* Taksitli işlemler ancak 1 YTL'nin üstündeki tutarlarla yapılabilirler."; } else if (hataKodu.Trim() == "0225") { mesaj.RedMesaj = "* Hata Mesajı: " + hataMesaji + "<br/>* Kart no hatalı"; } else if (hataKodu.Trim() == "0400") { mesaj.RedMesaj = "* Hata Mesajı: " + hataMesaji + "<br/>* Posnet sunucu teknik bir sorun yaşıyor. Lütfen tekrar deneyin."; } else if (hataKodu.Trim() == "0551") { mesaj.RedMesaj = "* Hata Mesajı: " + hataMesaji + "<br/>* Numara bir kredi kartına ait değil."; } else if (hataKodu.Trim() == "131") { mesaj.RedMesaj = "* Hata Mesajı: " + hataMesaji + "<br/>* Kart no bilgisi hiçbir boşluk içermeden 4912065000461139 şeklinde gönderilmelidir."; } else if (hataKodu.Trim() == "139") { mesaj.RedMesaj = "* Hata Mesajı: " + hataMesaji + "<br/>* Kredi kartı güvenlik numarası (CVC) parametre hatalı."; } else if (hataKodu.Trim() == "0800") { mesaj.RedMesaj = "* Resptext: " + hataMesaji + "<br/>* işlemde kullanılan kredi kartının YKB provizyon sisteminde tutulan çalıntı kredi kartı listesinde bulunmasıdır."; } else if (hataKodu.Trim() == "0876") { mesaj.RedMesaj = "* Hata Mesajı: " + hataMesaji + "<br/>* Kart bilgilerinden ( KK No, SKT, CVV) biri yada birkaçı hatalı girilmiş veya Worldcard'lar için bankaca tanımlanmış günlük limitler aşılmış olabilir."; } else if (hataKodu.Trim() == "0877") { mesaj.RedMesaj = "* CVC no girilmeli"; } else if (hataKodu.Trim() == "0995") { mesaj.RedMesaj = "* Hata Mesajı: " + hataMesaji + "<br/>* Kartı veren banka ile iletişimde zaman aşımı oldu (bankadan zamanında yanıt alınamadı). Lütfen Tekrar deneyin."; } else if (hataKodu.Trim() == "0100") { mesaj.RedMesaj = "* Resptext: " + hataMesaji + "<br/>* Banka sistemlerimizde anlık sorunlar olduğundan. Lütfen tekrar deneyin."; } else if (hataKodu.Trim() == "0173") { mesaj.RedMesaj = "* Hata Mesajı: " + hataMesaji + "<br/>* işlemde kullanılan kredi kartının internetten işlem yapma yetkisi bulunmamaktadır. <br/> Kredi kartını aldığı bankanın kredi kartları servisiyle görüşüp kredi kartını e-ticarette kullanamadığını belirtiniz."; } else { mesaj.RedMesaj = "* Ödeme İşlemi Yapılırken Bankadan Hata Mesajı Döndü.<br/> Hata Mesajı: " + hataMesaji + "<br/>Hata kodu: " + hataKodu; } #endregion } return mesaj; }
/// <summary> /// Process a payment /// </summary> /// <param name="processPaymentRequest">Payment info required for an order processing</param> /// <returns>Process payment result</returns> public ProcessPaymentResult ProcessPayment(ProcessPaymentRequest processPaymentRequest) { var result = new ProcessPaymentResult(); result.AllowStoringCreditCardNumber = true; switch (_manualPaymentSettings.TransactMode) { case TransactMode.Pending: result.NewPaymentStatus = PaymentStatus.Pending; break; case TransactMode.Authorize: result.NewPaymentStatus = PaymentStatus.Authorized; break; case TransactMode.AuthorizeAndCapture: result.NewPaymentStatus = PaymentStatus.Paid; break; default: { result.AddError("Not supported transaction type"); return result; } } C_Posnet objYKB = new C_Posnet(); //Test parametreleri objYKB.SetMid("6706598320"); objYKB.SetTid("67011009"); objYKB.SetURL("http://setmpos.ykb.com/PosnetWebService/XML"); //test card : 4506347011448053 2002/000 string orderBankUniqueID = ("123456" + DateTime.Now.ToString("yyyyMMddHHmmssfff")).PadLeft(24, '0'); bool return_value = objYKB.DoSaleTran( processPaymentRequest.CreditCardNumber, processPaymentRequest.CreditCardExpireYear.ToString() + processPaymentRequest.CreditCardExpireMonth.ToString(), processPaymentRequest.CreditCardCvv2, orderBankUniqueID, String.Format("{0:0.##}", processPaymentRequest.OrderTotal), "TL", "00", "00", "000000"); bool _IsConnectionOk, _IsOperationSuccessful = false; string _ResponseErrorCode,_ResponseErrorMessage; // Baðlantý Baþarýlý if (return_value) { _IsConnectionOk = true; string app_code = objYKB.GetApprovedCode(); if (app_code == "1" || app_code == "2") { _IsOperationSuccessful = true; } else if (app_code == "0") { _IsOperationSuccessful = false; } //test için heo false dönsün //_IsOperationSuccessful = false; result.SubscriptionTransactionId = objYKB.GetHostlogkey() + "|" + objYKB.GetAuthcode(); _ResponseErrorCode = objYKB.GetResponseCode(); if (_IsOperationSuccessful) { //_ResponseErrorMessage += "Banka Onay Kodu : " + _PaymentBankTransactionID; } else { _ResponseErrorMessage = objYKB.GetResponseText(); } } // Baðlantý Baþarýsýz else { _IsOperationSuccessful = false; _ResponseErrorCode = "-100"; _ResponseErrorMessage = "Banka Baðlantýsý Baþarýsýz. (BankResponseCode:" + return_value + ")"; } objYKB = null; //result.Success = _IsOperationSuccessful; return result; }