Пример #1
0
        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();
        }
Пример #2
0
    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();
        }
    }
Пример #3
0
    /// <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);
        }
    }
Пример #4
0
        // 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
        }
Пример #5
0
        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);
            }
        }
Пример #6
0
    /// <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);
    }