/// <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); }