public ActionResult Index(User user, string BtnPrevious, string BtnNext)
        {
            if (BtnNext != null)
            {
                User userControl = db.Users.FirstOrDefault(x => x.Email == user.Email && x.CreateMethod != UserCreateMethod.NotUserCreate);
                if (userControl == null)
                {
                    if (ModelState.IsValid)
                    {
                        NotUserBasketModel getUser = GetUser();
                        userControl = db.Users.FirstOrDefault(x => x.Email == user.Email && x.Telephone == x.Telephone);
                        if (userControl != null)
                        {
                            user.Id = userControl.Id;
                        }

                        user.CreateMethod   = UserCreateMethod.NotUserCreate;
                        user.CreateDateTime = DateTime.Now;
                        getUser.User        = user;
                        return(View("NotUserBasketAddress"));
                        //return View("CricketerStatistics");
                    }
                }
                else
                {
                    ViewBag.ResultType    = "danger";
                    ViewBag.ResultMessage = "Mail Adresiyle Üyelik İşlemi Gerçekleştirilmiş.Giriş Sayfasına Yönelendiriliyorsunuz.";
                    Response.AppendHeader("Refresh", "5;url=http://sakalliticaret.com/Kullanici/Giris");
                }
            }
            return(View());
        }
 private NotUserBasketModel GetUser()
 {
     if (Session["NotUserBasketModel"] == null)
     {
         Session["NotUserBasketModel"] = new NotUserBasketModel();
     }
     return((NotUserBasketModel)Session["NotUserBasketModel"]);
 }
        public ActionResult NotUserBasketAddress()
        {
            NotUserBasketModel notUserBasketModel = GetUser();

            if (notUserBasketModel.User == null)
            {
                return(Redirect("/Anasayfa"));
            }
            return(View());
        }
        public ActionResult NotUserBasketDetail(string BtnPrevious, string BtnNext)
        {
            NotUserBasketModel notUserBasketModel = GetUser();

            if (BtnPrevious != null)
            {
                return(View("NotUserBasketAddress", notUserBasketModel));
            }
            if (BtnNext != null)
            {
                User user = notUserBasketModel.User;
                user.CreateMethod = UserCreateMethod.NotUserCreate;
                if (user.Id == 0)
                {
                    db.Users.Add(user);
                }
                else
                {
                    db.Entry(user).State = EntityState.Modified;
                }
                UserAddress address = notUserBasketModel.UserAddress;
                address.UserId = user.Id;
                db.UserAddresses.Add(address);
                Basket basket = new Basket();
                basket.CreateDateTime = DateTime.Now;
                basket.CreateUserId   = user.Id;
                basket.BasketKey      = notUserBasketModel.BasketClass.BasketKey;
                basket.StatusId       = 1;
                basket.UserAddressId  = address.Id;
                basket.UserId         = user.Id;
                basket.Quantity       = notUserBasketModel.BasketClass.BasketItems.Count;
                basket.Amount         = notUserBasketModel.BasketClass.TotalAmount;
                db.Baskets.Add(basket);

                foreach (var item in notUserBasketModel.BasketClass.BasketItems)
                {
                    OrderProduct orderProduct = new OrderProduct();
                    orderProduct.UserId         = user.Id;
                    orderProduct.BasketId       = basket.Id;
                    orderProduct.InTheBasket    = true;
                    orderProduct.ProductId      = item.Product.Id;
                    orderProduct.Amount         = (double)item.Total;
                    orderProduct.Quantity       = item.Quantity;
                    orderProduct.CreateDateTime = DateTime.Now;
                    orderProduct.CreateUserId   = user.Id;
                    db.OrderProducts.Add(orderProduct);
                }

                db.SaveChanges();

                return(Redirect("/Sepet/Tamamla/Odeme"));
            }
            return(View());
        }
예제 #5
0
        public ActionResult BasketCompletePayment()
        {
            BasketClass s = (BasketClass)Session["AktifSepet"];

            if (s == null)
            {
            }
            else
            {
            }
            NotUserBasketModel basketModel = Session["NotUserBasketModel"] as NotUserBasketModel;

            posVoid();
            return(View());
        }
        public ActionResult Index()
        {
            NotUserBasketModel notUserBasketModel = new NotUserBasketModel();

            notUserBasketModel = GetUser();
            BasketClass s = new BasketClass();

            s = (BasketClass)Session["AktifSepet"];
            notUserBasketModel.BasketClass = s;

            if (notUserBasketModel.BasketClass == null)
            {
                return(Redirect("/Anasayfa"));
            }
            return(View());
        }
        public ActionResult NotUserBasketAddress(UserAddress userAddress, string BtnPrevious, string BtnNext)
        {
            NotUserBasketModel notUserBasketModel = GetUser();

            if (BtnPrevious != null)
            {
                return(View("Index", notUserBasketModel));
            }
            if (BtnNext != null)
            {
                BasketClass s = new BasketClass();
                s = (BasketClass)Session["AktifSepet"];
                userAddress.CreateDateTime     = DateTime.Now;
                notUserBasketModel.UserAddress = userAddress;
                notUserBasketModel.BasketClass = s;
                return(View("NotUserBasketDetail", notUserBasketModel));
            }
            return(View());
        }
예제 #8
0
        public ActionResult BasketPaymentResult()
        {
            PosEntegration     entegration        = db.PosEntegrations.Find(2);
            BasketTransactions basketTransactions = new BasketTransactions();
            NotUserBasketModel basketModel        = Session["NotUserBasketModel"] as NotUserBasketModel;
            Basket             basket             = new Basket();
            string             merchant_id        = entegration.StoreCode;
            string             merchant_key       = entegration.UserName;
            string             merchant_salt      = entegration.Password;
            string             merchant_oid       = Request.Form["merchant_oid"];
            string             status             = Request.Form["status"];
            string             total_amount       = Request.Form["total_amount"];
            string             hash = Request.Form["hash"];
            string             installment_count = Request.Form["installment_count"];
            string             Birlestir         = string.Concat(merchant_oid, merchant_salt, status, total_amount);
            HMACSHA256         hmac = new HMACSHA256(Encoding.UTF8.GetBytes(merchant_key));

            byte[] b     = hmac.ComputeHash(Encoding.UTF8.GetBytes(Birlestir));
            string token = null;

            token = Convert.ToBase64String(b);
            //if (hash != token)
            //{
            //    Response.Write("PAYTR notification failed: bad hash");
            //    return;
            //}

            if (status == "success")
            {
                try
                {
                    Basket dbBasket = db.Baskets.Include(x => x.User).FirstOrDefault(x => x.BasketKey == merchant_oid);
                    dbBasket.StatusId        = 2;
                    db.Entry(dbBasket).State = EntityState.Modified;
                    //basketTransactions.Status = status;
                    //basketTransactions.CreateDateTime = DateTime.Now;
                    //basketTransactions.UserId = dbBasket.UserId;
                    //basketTransactions.BasketKey = dbBasket.BasketKey;
                    //basketTransactions.BasketId = dbBasket.Id;
                    //basketTransactions.Description = "Ödeme İşlemi Başarıyla Gerçekleştirildi.";
                    //basketTransactions.CreateUserId = dbBasket.UserId;
                    //db.BasketTransactionses.Add(basketTransactions);
                    List <OrderProduct> orderProducts = db.OrderProducts.Where(x => x.BasketId == dbBasket.Id).ToList();
                    foreach (var item in orderProducts)
                    {
                        //ProductOperations productOperations = new ProductOperations();
                        //productOperations.ProductOperationsCreate(item.ProductId, 3, "Satış No:" + item.Basket.BasketKey + " - Adet:" + item.Quantity, dbBasket.UserId);
                        //Product product = db.Products.FirstOrDefault(x => x.Id == item.ProductId);
                        //product.Stock = product.Stock - item.Quantity;
                        //db.Entry(product).State = EntityState.Modified;
                        item.InTheBasket     = false;
                        db.Entry(item).State = EntityState.Modified;
                    }

                    db.SaveChanges();

                    Session.Remove("NotUserBasketModel");
                    Session.Remove("AktifSepet");


                    //SendMail sendMail = new SendMail();
                    //sendMail.MailSender("Ödemeniz başarıyla tamamlandı", MailSayfasiGet(merchant_oid), dbBasket.User.Email);
                }
                catch (Exception e)
                {
                    SendMail sendMail = new SendMail();
                    sendMail.MailSender("Ödeme Yapıldı Sepet Kapatılamadı", "Sayfadan gelen hata:<br>" + "Sipariş Numarası:" + merchant_oid + e.InnerException + "<br><br>" + e.Source + "<br><br>" + e.Message, "*****@*****.**");
                }
                Response.Write("OK");
            }

            return(View());
        }
예제 #9
0
        private void posVoid()
        {
            PosEntegration entegration = db.PosEntegrations.FirstOrDefault();

            string             merchant_id   = entegration.StoreCode;
            string             merchant_key  = entegration.UserName;
            string             merchant_salt = entegration.Password;
            User               user          = _loginState.IsLoginUser();
            NotUserBasketModel basketModel   = Session["NotUserBasketModel"] as NotUserBasketModel;


            //
            // Tahsil edilecek tutar. 9.99 için 9.99 * 100 = 999 gönderilmelidir.
            Basket basket = new Basket();

            BasketClass s = new BasketClass();

            s = (BasketClass)Session["AktifSepet"];

            int payment_amountstr = (int)s.TotalAmount * 100;

            //
            // Sipariş numarası: Her işlemde benzersiz olmalıdır!! Bu bilgi bildirim sayfanıza yapılacak bildirimde geri gönderilir.

            basket                = db.Baskets.FirstOrDefault(x => x.BasketKey == s.BasketKey);
            s.BasketId            = basket.Id;
            Session["AktifSepet"] = s;
            s = (BasketClass)Session["AktifSepet"];

            string merchant_oid = s.BasketKey;
            //
            // Müşterinizin sitenizde kayıtlı veya form aracılığıyla aldığınız ad ve soyad bilgisi

            //
            // Müşterinizin sitenizde kayıtlı veya form aracılığıyla aldığınız adres bilgisi
            string user_addressstr = "";

            if (user == null)
            {
                user            = basketModel.User;
                user_addressstr = basketModel.UserAddress.Address;
            }
            else
            {
                user_addressstr = db.UserAddresses.Find(s.AddressId).Address;
            }
            string emailstr     = user.Email;
            string user_namestr = user.Name + " " + user.LastName;
            //
            // Müşterinizin sitenizde kayıtlı veya form aracılığıyla aldığınız telefon bilgisi
            string user_phonestr = user.Telephone;
            //
            // Başarılı ödeme sonrası müşterinizin yönlendirileceği sayfa
            // !!! Bu sayfa siparişi onaylayacağınız sayfa değildir! Yalnızca müşterinizi bilgilendireceğiniz sayfadır!
            // !!! Siparişi onaylayacağız sayfa "Bildirim URL" sayfasıdır (Bakınız: 2.ADIM Klasörü).
            string merchant_ok_url = "http://sakalliticaret.com/Sepetim/OdemeTamamlandi";
            //
            // Ödeme sürecinde beklenmedik bir hata oluşması durumunda müşterinizin yönlendirileceği sayfa
            // !!! Bu sayfa siparişi iptal edeceğiniz sayfa değildir! Yalnızca müşterinizi bilgilendireceğiniz sayfadır!
            // !!! Siparişi iptal edeceğiniz sayfa "Bildirim URL" sayfasıdır (Bakınız: 2.ADIM Klasörü).
            string merchant_fail_url = "http://sakalliticaret.com/Sepetim/OdemeHata";
            string user_basketstr    = "";
            //
            // !!! Eğer bu örnek kodu sunucuda değil local makinanızda çalıştırıyorsanız
            // buraya dış ip adresinizi (https://www.whatismyip.com/) yazmalısınız. Aksi halde geçersiz paytr_token hatası alırsınız.
            string user_ip = GetIPAddress();

            //string user_ip = "78.186.172.90";
            if (user_ip == "" || user_ip == null)
            {
                user_ip = Request.ServerVariables["REMOTE_ADDR"];
            }
            //
            // ÖRNEK $user_basket oluşturma - Ürün adedine göre object'leri çoğaltabilirsiniz
            //foreach (var item in s.Urunler)
            //{

            //}
            //object[][] user_basket = {
            //    new object[] {"Örnek ürün 1", "18.00", 1}, // 1. ürün (Ürün Ad - Birim Fiyat - Adet)
            //    new object[] {"Örnek ürün 2", "33.25", 2}, // 2. ürün (Ürün Ad - Birim Fiyat - Adet)
            //    new object[] {"Örnek ürün 3", "45.42", 1}, // 3. ürün (Ürün Ad - Birim Fiyat - Adet)
            //};
            int qArrayCount = s.Products.Count;

            //if (s.KargoBedeli) qArrayCount++;
            object[][] user_basket = new object[qArrayCount][];
            int        i           = 0;

            foreach (var item in s.Products)
            {
                string  qStokKodu = item.Product.Id.ToString();
                decimal qFiyat    = Convert.ToDecimal(item.Product.Price);
                int     qAdet     = Convert.ToInt32(item.Quantity);
                user_basket[i] = new object[] { qStokKodu, qFiyat, qAdet };
                i++;
            }
            //if (s.KargoBedeli)
            //{
            //    user_basket[user_basket.Length - 1] = new object[] { 0, 7, 1 };
            //}
            user_basketstr = make_user_basket(user_basket);
            /* ############################################################################################ */


            // İşlem zaman aşımı süresi - dakika cinsinden
            string timeout_limit = "30";
            //
            // Hata mesajlarının ekrana basılması için entegrasyon ve test sürecinde 1 olarak bırakın. Daha sonra 0 yapabilirsiniz.
            string debug_on = "0";
            //
            // Mağaza canlı modda iken test işlem yapmak için 1 olarak gönderilebilir.
            string test_mode = "0";

            if (entegration.TestModule)
            {
                test_mode = "1";
            }
            else
            {
                test_mode = "0";
            }
            //
            // Taksit yapılmasını istemiyorsanız, sadece tek çekim sunacaksanız 1 yapın
            string no_installment = "1";
            //
            // Sayfada görüntülenecek taksit adedini sınırlamak istiyorsanız uygun şekilde değiştirin.
            // Sıfır (0) gönderilmesi durumunda yürürlükteki en fazla izin verilen taksit geçerli olur.
            string max_installment = "0";
            //
            // Para birimi olarak TL, EUR, USD gönderilebilir. USD ve EUR kullanmak için [email protected]
            // üzerinden bilgi almanız gerekmektedir. Boş gönderilirse TL geçerli olur.
            string currency = "TL";
            //
            // Türkçe için tr veya İngilizce için en gönderilebilir. Boş gönderilirse tr geçerli olur.
            string lang = "tr";
            // Gönderilecek veriler oluşturuluyor
            NameValueCollection data = new NameValueCollection();

            data["merchant_id"]    = merchant_id;
            data["user_ip"]        = user_ip;
            data["merchant_oid"]   = merchant_oid;
            data["email"]          = emailstr;
            data["payment_amount"] = payment_amountstr.ToString();
            //
            // Sepet içerği oluşturma fonksiyonu, değiştirilmeden kullanılabilir.
            JavaScriptSerializer ser = new JavaScriptSerializer();
            string user_basket_json  = ser.Serialize(user_basket);

            //string user_basketstr = Convert.ToBase64String(Encoding.UTF8.GetBytes(user_basket_json));
            data["user_basket"] = user_basketstr;
            //
            // Token oluşturma fonksiyonu, değiştirilmeden kullanılmalıdır.
            string     Birlestir = string.Concat(merchant_id, user_ip, merchant_oid, emailstr, payment_amountstr.ToString(), user_basketstr, no_installment, max_installment, currency, test_mode, merchant_salt);
            HMACSHA256 hmac      = new HMACSHA256(Encoding.UTF8.GetBytes(merchant_key));

            byte[] b = hmac.ComputeHash(Encoding.UTF8.GetBytes(Birlestir));
            data["paytr_token"] = Convert.ToBase64String(b);
            //
            data["debug_on"]          = debug_on;
            data["test_mode"]         = test_mode;
            data["no_installment"]    = no_installment;
            data["max_installment"]   = max_installment;
            data["user_name"]         = user_namestr;
            data["user_address"]      = user_addressstr;
            data["user_phone"]        = user_phonestr;
            data["merchant_ok_url"]   = merchant_ok_url;
            data["merchant_fail_url"] = merchant_fail_url;
            data["timeout_limit"]     = timeout_limit;
            data["currency"]          = currency;
            data["lang"] = lang;
            string qToken = null;

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            using (WebClient client = new WebClient())
            {
                client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
                byte[]  result           = client.UploadValues("https://www.paytr.com/odeme/api/get-token", "POST", data);
                string  ResultAuthTicket = Encoding.UTF8.GetString(result);
                dynamic json             = JValue.Parse(ResultAuthTicket);
                qToken = json.token;
                string durum = json.status;
                if (json.status == "success")
                {
                    Session["qToken"] = qToken;
                    ViewBag.Src       = "https://www.paytr.com/odeme/guvenli/" + json.token + "";
                }
                else
                {
                    Response.Write("PAYTR IFRAME failed. reason:" + json.reason + "");
                }
            }
        }