protected void btn_2dpos_Click(object sender, EventArgs e) { POS = SHOPClass.Odemeler.Pos.POSBilgisi(Sistem.Odeme.OdemeSekilleri.KrediKarti.OdemeBilgileri.POSID); #region Puanı Çek if (Sistem.Odeme.OdemeSekilleri.KrediKarti.OdemeBilgileri.PuanKullan) { #region Puan Kullan POSD = SHOPClass.Odemeler.PosIslem(SHOPClass.Fonksiyonlar.IslemID("TEST", 24), SHOPClass.Sabitler.PosIslemTipleri.PuanKullan, POS, Sistem.Odeme.OdemeSekilleri.KrediKarti.KartBilgileri, Sistem.Odeme.OdemeSekilleri.KrediKarti.OdemeBilgileri); #endregion if (POSD.Message.Type != Class.Sabitler.MessageTypes.OK) { //tutardan puanı çıkar Sistem.Odeme.OdemeSekilleri.KrediKarti.OdemeBilgileri.Tutar = (Sistem.Odeme.OdemeSekilleri.KrediKarti.OdemeBilgileri.Tutar - Sistem.Odeme.OdemeSekilleri.KrediKarti.OdemeBilgileri.Puan); } else { //hata ver ekrana puan kullanılamadı normal çekiyoruz de. } } #endregion ParaCek(); }
protected void Page_Load(object sender, EventArgs e) { #region Ödeme Bilgileri OB.ParaBirimiID = 1; OB.Taksit = 6; OB.Tutar = 15.22; #endregion POS = SHOPClass.Odemeler.Pos.Bilgiler(1); TestKartlari = SHOPClass.Odemeler.Pos.TestKrediKart(1); EnumIcerigi = Enum.GetValues(typeof(SHOPClass.Sabitler.PosIslemTipleri)).Cast <SHOPClass.Sabitler.PosIslemTipleri>().Select(t => new KeyValuePair <int, string>((int)t, t.ToString())).ToDictionary(p => p.Key, p => p.Value); if (!IsPostBack) { DropDownDoldur(); } }
/// <summary> /// Seçilen banka için Bin kontrolü ve gönderilen kart için Bin doğrulama işlemi yapıyor. /// </summary> /* Create FÜ - 10.08.2012 * Edit FÜ - 12.08.2012 - 18:23 If kısmına comment eklendi, Summary alanı açıklaması değiştirildi. */ /// <param name="P">SHOPObjeler.Tanimlar.POS</param> /// <param name="K">SHOPObjeler.Tanimlar.KrediKart</param> /// <returns> /// Bool döndürür /// </returns> public bool BinKontrol(SHOPObjeler.Tanimlar.POS P, SHOPObjeler.Tanimlar.KrediKart K) { if (P != null && K != null) { if (K.BankaID > 0) { bool B = (from p in P.Bankalar where p.Key == K.BankaID select p.Value).FirstOrDefault(); #region Seçilen Bankada Bin Kontrolü Açıksa if (B) { if (!string.IsNullOrEmpty(K.KartNo)) { return(SHOPClass.Odemeler.Pos.BinNoKontrol(K.BankaID, K.KartNo.Substring(0, 6))); } else { return(false); } } #endregion else { return(false); } } else { return(false); } } else { return(false); } }
// Create HY 24.09.2012 00:30 END /* * Create FÜ 10.09.2012 00:06 * Edit FÜ - 16.09.2012 04:20 Pesin Alanı, Bankalar ve Para Birimleri obje yapısına göre güncellendi. * Edit FÜ - 30.09.2012 07:29 Vade Kontrol Eklendi * Edit FÜ - 30.09.2012 23:44 Kod ID eklendi. * Edit FÜ - 21.10.2012 21:20 Gereksiz taglar temizlendi. Elmah eklendi. */ void PosBilgileri() { #if DEBUG try { #endif using (BaglantiCumlesi db = new BaglantiCumlesi()) { var SQL = (from p in db.tbl_sbt_sanal_pos let Bankalar = db.tbl_sbt_sanal_pos_banka.Where(x => x.sanal_pos_id == p.id).Select(x => new { x.banka_id, x.ana_banka, x.bin_kontrol }).AsEnumerable() let ParaBirimleri = db.tbl_sbt_sanal_pos_para_birim.Where(x => x.sanal_pos_id == p.id).Select(x => new { x.para_birim_id, x.kisaltma }).AsEnumerable() select new { p.id, p.kod_id, Bankalar, ParaBirimleri, p.magaza_no, p.api_kullanicisi, p.pos_no, p.url, p.xml_url, p.C3d_secure, p.C3d_secure_key, p.C3d_secure_url, p.C3d_secure_geri_donus_url, p.C3d_secure_hata_url, p.on_otorizasyon, p.pesin, p.sifir_komisyon, p.puan_kullanim, p.vade_kontrol, p.test, p.test_url, p.kampanya_kodu }).AsEnumerable(); if (SQL.Any()) { foreach (var i in SQL) { #region POS Objesi using (SHOPObjeler.Tanimlar.POS P = new SHOPObjeler.Tanimlar.POS()) { P.ID = i.id; P.KodID = i.kod_id; #region Banka Objesi List <SHOPObjeler.Tanimlar.POSBankalar> L1 = new List <SHOPObjeler.Tanimlar.POSBankalar>(); foreach (var t in i.Bankalar) { using (SHOPObjeler.Tanimlar.POSBankalar B = new SHOPObjeler.Tanimlar.POSBankalar()) { B.SanalPOSID = P.ID; B.BankaID = t.banka_id; B.BinKontrol = t.bin_kontrol; B.AnaBanka = t.ana_banka; L1.Add(B); } } P.Bankalar = L1; #endregion #region Para Birimleri Objesi List <SHOPObjeler.Tanimlar.POSParaBirimleri> L2 = new List <SHOPObjeler.Tanimlar.POSParaBirimleri>(); foreach (var t in i.ParaBirimleri) { using (SHOPObjeler.Tanimlar.POSParaBirimleri PB = new SHOPObjeler.Tanimlar.POSParaBirimleri()) { PB.SanalPOSID = P.ID; PB.ParaBirimID = t.para_birim_id; PB.Kisaltma = t.kisaltma; L2.Add(PB); } } P.ParaBirimleri = L2; #endregion P.TID = i.api_kullanicisi; P.MID = i.magaza_no; P.PosNo = i.pos_no; P.URL = i.url; P.XmlURL = i.xml_url; P.TDSecure = i.C3d_secure; P.TDSecureKey = i.C3d_secure_key; P.TDSecureURL = i.C3d_secure_url; P.TDSecureGeriDonusURL = i.C3d_secure_geri_donus_url; P.TDSecureHataURL = i.C3d_secure_hata_url; P.OnOtorizasyon = i.on_otorizasyon; P.Test = i.test; P.TestURL = i.test_url; P.Pesin = i.pesin; P.SifirKomisyon = i.sifir_komisyon; P.PuanKullanim = i.puan_kullanim; P.VadeKontrol = i.vade_kontrol; P.KampanyaKodu = i.kampanya_kodu; SHOPObjeler.Listeler.POS.Add(P); } #endregion } } } #if DEBUG } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); } #endif }
public void Gonder() { try { ObjeSetle(); Sistem.Sepet.SiparisDurumID = 2; //- İşlem -> Bin Kontrolü Evet -> Puan Sorgula Evet -> Ön Otorizasyon Yada da Satış //- İşlem -> Bin Kontrolü Evet -> Puan Sorgula Hayır -> Vade Farkı Sorgulama Evet -> Ön Otorizasyon Yada da Satış //- İşlem -> Bin Kontrolü Hayır -> Vade Farkı Sorgulama Evet -> Ön Otorizasyon Yada da Satış #region POS Bilgileri Alınıyor ve Objeye Setleniyor //POS ID Al int POSID = SHOPClass.Odemeler.Pos.POSID(Sistem.Odeme.OdemeSekilleri.KrediKarti.KartBilgileri.BankaID); //Taksit posu alınamazsa peşin posunu çağır if (POSID == 0) { POSID = SHOPClass.Odemeler.Pos.PesinPOSU(); } //POS Bilgisi Al ve Objeye Setle if (POSID != 0) { POS = SHOPClass.Odemeler.Pos.POSBilgisi(POSID); } else { //Hata Ver } #endregion Sistem.Odeme.OdemeSekilleri.KrediKarti.OdemeBilgileri.POSID = POSID; //test için yazıldı Sistem.Odeme.OdemeSekilleri.KrediKarti.OdemeBilgileri.Puan = 20; #region Bin Kontrolünden Geçerse if (SHOPClass.Odemeler.Pos.BinNoKontrol(Sistem.Odeme.OdemeSekilleri.KrediKarti.KartBilgileri.BankaID, Sistem.Odeme.OdemeSekilleri.KrediKarti.KartBilgileri.KartNo.Substring(0, 6))) { if (POS.PuanKullanim) { #region Puan Sorgula POSD = SHOPClass.Odemeler.PosIslem(SHOPClass.Fonksiyonlar.IslemID("TEST", 24), SHOPClass.Sabitler.PosIslemTipleri.PuanSorgula, POS, Sistem.Odeme.OdemeSekilleri.KrediKarti.KartBilgileri, Sistem.Odeme.OdemeSekilleri.KrediKarti.OdemeBilgileri); #endregion if (POSD.Message.Type != Class.Sabitler.MessageTypes.OK) { Sistem.Odeme.OdemeSekilleri.KrediKarti.OdemeBilgileri.Puan = double.Parse(POSD.POSIslem.KullanilabilirToplamPuanTutari); Response.Redirect("/payment-pos.aspx", false); Context.ApplicationInstance.CompleteRequest(); } } else { #region Vade Kontrolü (Kart Doğrulama) if (POS.VadeKontrol) { #region Vade Farkı Sorgula (Bu işleme kart doğrulama da denilebilir) POSD = SHOPClass.Odemeler.PosIslem(SHOPClass.Fonksiyonlar.IslemID("TEST", 24), SHOPClass.Sabitler.PosIslemTipleri.Vade, POS, Sistem.Odeme.OdemeSekilleri.KrediKarti.KartBilgileri, Sistem.Odeme.OdemeSekilleri.KrediKarti.OdemeBilgileri); #endregion if (POSD.Message.Type != Class.Sabitler.MessageTypes.OK) { Response.Redirect("/payment-pos.aspx", false); Context.ApplicationInstance.CompleteRequest(); } else { //HATA } } else { //vade kontrol yok! } #endregion } } #endregion #region Bin Kontrolünden Geçemezse else { #region Vade Kontrolü (Kart Doğrulama) if (POS.VadeKontrol) { #region Vade Farkı Sorgula (Bu işleme kart doğrulama da denilebilir) POSD = SHOPClass.Odemeler.PosIslem(SHOPClass.Fonksiyonlar.IslemID("TEST", 24), SHOPClass.Sabitler.PosIslemTipleri.Vade, POS, Sistem.Odeme.OdemeSekilleri.KrediKarti.KartBilgileri, Sistem.Odeme.OdemeSekilleri.KrediKarti.OdemeBilgileri); #endregion if (POSD.Message.Type != Class.Sabitler.MessageTypes.OK) { Response.Redirect("/payment-pos.aspx", false); Context.ApplicationInstance.CompleteRequest(); } else { //HATA } } else { //vade kontrol yok! } #endregion } #endregion //POS İşlemi Sonucu Dönen Değer Yazılıyor Sistem.Odeme.OdemeSekilleri.KrediKarti.PosIslem = POSD.POSIslem; } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); } }
/// <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); }