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 = "درحال حاضر امکان اتصال به درگاه وجود ندارد" }); }
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")); }
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 = "درحال حاضر امکان اتصال به درگاه وجود ندارد" }); } }