Esempio n. 1
0
        public object GetToken()
        {
            string PostalCode = HttpContext.Current.Request.Form["PostalCode"];

            if (PostalCode.Length != 10)
            {
                return(new
                {
                    StatusCode = 1,
                    Message = "طول کدپستی باید ده رقم باشد"
                });
            }

            string PhoneNumber = HttpContext.Current.Request.Form["PhoneNumber"];

            if (PhoneNumber.Length > 15 || PhoneNumber.Length < 7)
            {
                return(new
                {
                    StatusCode = 1,
                    Message = "طول ارقام تلفن مجاز نیست"
                });
            }

            string Mobile = HttpContext.Current.Request.Form["Mobile"];

            if (PhoneNumber.Length != 11)
            {
                return(new
                {
                    StatusCode = 1,
                    Message = "طول ارقام موبایل مجاز نیست"
                });
            }

            string Address = HttpContext.Current.Request.Form["Address"];

            if (Address.Length > 1000 || Address.Length < 5)
            {
                return(new
                {
                    StatusCode = 1,
                    Message = "طول آدرس مجاز نیست"
                });
            }
            int City_Id = Convert.ToInt32(HttpContext.Current.Request.Form["City_Id"]);

            if (City_Id != 1 && City_Id != 2 && City_Id != 3)
            {
                return(new
                {
                    StatusCode = 1,
                    Message = "شهر را انتخاب کنید"
                });
            }


            Setting setting        = db.Settings.FirstOrDefault();
            int     transportation = 0;

            if (City_Id == 1)
            {
                transportation = (int)setting.TransportationEsfahan;
            }
            else if (City_Id == 2)
            {
                transportation = (int)setting.TransportationNajafabad;
            }
            else if (City_Id == 3)
            {
                transportation = (int)setting.TransportationOther;
            }

            var utoken = HttpContext.Current.Request.Form["Api_Token"];
            var user   = db.Users.Where(x => x.Api_Token == utoken).FirstOrDefault();
            var id     = user.Id;

            var order = db.Factors.Include("FactorItems.Product.Category").Where(w => w.User.Id == id).Where(w => w.Status == false).FirstOrDefault();

            if (order == null)
            {
                return(new
                {
                    StatusCode = 2,
                    Message = "فاکتوری وجود ندارد"
                });
            }
            if (order.FactorItems == null || order.FactorItems.Count == 0)
            {
                return(new
                {
                    StatusCode = 2,
                    Message = "آیتمی انتخاب نشده"
                });
            }
            foreach (var f in order.FactorItems)
            {
                f.UnitPrice = f.Product.Price - f.Product.Discount;
            }



            order.TransportationFee = transportation;
            order.Date       = DateTime.Now;
            order.Address    = Address;
            order.Buyer      = user.Fullname;
            order.Mobile     = Mobile;
            order.PostalCode = PostalCode;
            order.TotalPrice = order.ComputeTotalPrice();
            try
            {
                db.SaveChanges();
            }

            catch (DbEntityValidationException ex)
            {
                var errorMessages = ex.EntityValidationErrors
                                    .SelectMany(x => x.ValidationErrors)
                                    .Select(x => x.ErrorMessage);
                return(new
                {
                    StatusCode = 2,
                    Message = errorMessages
                });
            }

            //payment

            int paymentId = 0;


            Models.Payment p = new Models.Payment();
            p.User            = user;
            p.Amount          = order.ComputeTotalPrice() * 10;
            p.StatusPayment   = "-100";
            p.PaymentFinished = false;
            p.Date            = DateTime.Now;
            p.Factor          = order;
            p.IsForMarketer   = false;
            db.Payments.Add(p);
            db.SaveChanges();
            paymentId = p.Id;

            var RedirectPage = "https://sarzamintejarat.com/Payment/Pay";

            var url = "https://ikc.shaparak.ir/TPayment/Payment/index";

            var    client = new BankToken.TokensClient();
            string token  = client.MakeToken(p.Amount.ToString(), "HED1", paymentId.ToString(), paymentId.ToString(), "", RedirectPage, "").token;
            var    pay    = db.Payments.Include("User").Where(q => q.Id == paymentId).FirstOrDefault();

            pay.StatusPayment = token;
            db.SaveChanges();

            if (!string.IsNullOrEmpty(token) && (token.Length > 5))
            {
                pay.ReferenceNumber = token;
                p.PaymentFinished   = false;
                p.StatusPayment     = "-100";
                db.Entry(p).State   = EntityState.Modified;
                db.SaveChanges();

                return(new { StatusCode = 0, Url = url, Token = token, MerchantId = "HED1" });
            }

            p.StatusPayment   = token;
            p.ReferenceNumber = null;
            p.PaymentFinished = false;
            db.SaveChanges();

            return(new
            {
                StatusCode = 2,
                Message = "درحال حاضر امکان اتصال به درگاه وجود ندارد"
            });
        }
Esempio n. 2
0
        public ActionResult Index()
        {
            var email = User.Identity.Name;
            var usr   = db.Users.Where(a => a.Email == email).FirstOrDefault();
            var id    = usr.Id;
            var order = db.Factors.Include("FactorItems.Product.Category").Where(q => q.User.Id == id).Where(q => q.Status == false).FirstOrDefault();

            if (order == null)
            {
                throw new Exception();
            }
            if (order.FactorItems == null || order.FactorItems.Count == 0)
            {
                throw new Exception();
            }
            foreach (var f in order.FactorItems)
            {
                f.UnitPrice = f.Product.Price - f.Product.Discount;
            }
            int     transportation = 0;
            int     City_Id        = order.City_Id;
            Setting s = db.Settings.FirstOrDefault();

            if (City_Id == 1)
            {
                transportation = (int)s.TransportationEsfahan;
            }
            else if (City_Id == 2)
            {
                transportation = (int)s.TransportationNajafabad;
            }
            else if (City_Id == 3)
            {
                transportation = (int)s.TransportationOther;
            }
            else
            {
                return(Redirect("/Factor/Index"));
            }
            order.TransportationFee = transportation;
            order.TotalPrice        = order.ComputeTotalPrice();
            db.SaveChanges();

            int paymentId = 0;


            var TotalPrice   = order.ComputeTotalPrice();
            var RedirectPage = "https://sarzamintejarat.com/Payment/Pay";

            Models.Payment p = new Models.Payment();
            p.Factor          = order;
            p.User            = usr;
            p.Amount          = order.ComputeTotalPrice() * 10;
            p.StatusPayment   = "-100";
            p.PaymentFinished = false;
            p.Date            = DateTime.Now;
            p.IsForMarketer   = false;
            db.Payments.Add(p);
            db.SaveChanges();
            paymentId = p.Id;

            var    client = new BankToken.TokensClient();
            string token  = client.MakeToken(p.Amount.ToString(), "HED1", paymentId.ToString(), paymentId.ToString(), "", RedirectPage, "").token;
            var    pay    = db.Payments.Include("User").Where(q => q.Id == paymentId).FirstOrDefault();

            pay.StatusPayment = token;
            db.SaveChanges();

            if (!string.IsNullOrEmpty(token) && (token.Length > 5))
            {
                pay.ReferenceNumber = token;
                p.PaymentFinished   = false;
                p.StatusPayment     = "-100";
                db.Entry(p).State   = EntityState.Modified;
                db.SaveChanges();

                //NameValueCollection collection = new NameValueCollection();
                //collection.Add("Token", token);
                //collection.Add("RedirectURL", RedirectPage);
                //Response.Write(HttpHelper.PreparePOSTForm("https://sep.shaparak.ir/payment.aspx", collection));
                ViewBag.Url         = "https://ikc.shaparak.ir/TPayment/Payment/index";
                ViewBag.RedirectURL = RedirectPage;
                ViewBag.Token       = token;
                return(View("RedirectToBank"));
            }

            p.StatusPayment   = token;
            p.ReferenceNumber = null;
            p.PaymentFinished = false;
            db.SaveChanges();
            TempData["BankMessage"] = "درحال حاضر امکان اتصال به درگاه وجود ندارد";
            return(Redirect("/Factor/Shipping"));
        }
Esempio n. 3
0
        public object GetTokenForMarketer()
        {
            var tr     = db.Database.BeginTransaction();
            var mtoken = HttpContext.Current.Request.Form["Api_Token"];
            var fid    = Convert.ToInt32(HttpContext.Current.Request.Form["Factor_Id"]);

            var usr    = db.MarketerUsers.Where(w => w.Api_Token == mtoken).FirstOrDefault();
            int id     = usr.Id;
            var factor = db.MarketerFactor.Include("MarketerFactorItems.Product.Category").Where(x => x.Id == fid).Where(x => x.Status == 1).Where(x => x.MarketerUser.Id == id).FirstOrDefault();

            if (factor == null)
            {
                return(new { Message = 1 });
            }
            List <object> Empty = new List <object>();

            foreach (var item in factor.MarketerFactorItems)
            {
                item.UnitPrice   = item.Product.Price - item.Product.Discount;
                item.ProductName = item.Product.Name;
                if (item.Product.Qty < item.Qty)
                {
                    Empty.Add(new { Detail = "محصول " + item.Product.Name + " به تعداد انتخابی شما وجود ندارد" });
                }
            }
            if (Empty.Count > 0)
            {
                return new { Message = 2, Empty }
            }
            ;
            factor.TotalPrice = factor.ComputeTotalPrice();

            db.SaveChanges();
            tr.Commit();

            int paymentId = 0;


            Models.Payment p = new Models.Payment();
            p.MarketerUser    = usr;
            p.Amount          = factor.ComputeTotalPrice() * 10;
            p.StatusPayment   = "-100";
            p.PaymentFinished = false;
            p.Date            = DateTime.Now;
            p.MarketerFactor  = factor;
            p.IsForMarketer   = true;
            db.Payments.Add(p);
            db.SaveChanges();
            paymentId = p.Id;

            var RedirectPage = "https://sarzamintejarat.com/Payment/Pay";

            var url = "https://ikc.shaparak.ir/TPayment/Payment/index";

            var    client = new BankToken.TokensClient();
            string token  = client.MakeToken(p.Amount.ToString(), "HED1", paymentId.ToString(), paymentId.ToString(), "", RedirectPage, "").token;
            var    pay    = db.Payments.Include("MarketerUser").Where(q => q.Id == paymentId).FirstOrDefault();

            pay.StatusPayment = token;
            db.SaveChanges();

            if (!string.IsNullOrEmpty(token) && (token.Length > 5))
            {
                pay.ReferenceNumber = token;

                p.PaymentFinished = false;
                p.StatusPayment   = "-100";
                db.Entry(p).State = EntityState.Modified;
                db.SaveChanges();

                return(new { StatusCode = 0, Url = url, Token = token, MerchantId = "HED1" });
            }

            p.StatusPayment   = token;
            p.ReferenceNumber = null;
            p.PaymentFinished = false;
            db.SaveChanges();

            return(new
            {
                StatusCode = 2,
                Message = "درحال حاضر امکان اتصال به درگاه وجود ندارد"
            });
        }
    }