public ActionResult PayCommit(PayGoRequest model) { return(View()); }
public ActionResult Booking([Bind(Exclude = "Bonus")] BookingModel model) { if (!ModelState.IsValid) { ViewData.Model = model; return(View()); } var Room = _db.Room.Find(model.ID); //var DateTims = model.DateList.Split(','); model.CheckInDate = Session["CheckInDate"] == null?DateTime.Now.AddDays(1) : (DateTime)Session["CheckInDate"]; model.CheckOutDate = Session["CheckOutDate"] == null?model.CheckInDate.AddDays(1) : (DateTime)Session["CheckOutDate"]; var Sum = _db.OrderMaster.Where(o => o.ProductId == Room.ID && ( (DbFunctions.DiffDays(o.CheckIn, model.CheckInDate) == 0) || (DbFunctions.DiffDays(o.CheckOut, model.CheckOutDate) == 0) )).Select(o => o.Quantity).DefaultIfEmpty(0).Sum(); var Filled = Room.Quantity >= Sum; if (!Filled) { ModelState.AddModelError("", "客滿"); return(RedirectToAction("Detail", new { id = Room.Hotel.ID })); } //var Dates = model.DateList.Split(',').Select(DateTime.Parse).ToList(); var CheckInDate = model.CheckInDate; var CheckOutDate = model.CheckOutDate; decimal Total = new RoomAmt().CurrentAmt(Room.ID); var PayGo = new PayGoRequest(); var Now = DateTime.Now; PayGo.MerchantOrderNo = Now.ToString("yyyyMMdd") + Guid.NewGuid().GetHashCode().ToString("x").ToUpper(); PayGo.LangType = "zh-tw"; PayGo.TimeStamp = Convert.ToInt32(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds).ToString(); PayGo.Amt = Convert.ToInt16(Total) * model.Quantity; //PayGo.Amt = 30; PayGo.TradeLimit = 120; PayGo.ItemDesc = string.Format("{0}{1}房型,NT.{2}元整/訂購人{3}", Room.Hotel.Name, Room.Name, Total, CurrentUser.Email); PayGo.Email = model.info.Email; PayGo.EmailModify = 0; PayGo.LoginType = 0; PayGo.OrderComment = ""; PayGo.CheckValue = new Pay2Go().CheckValue(PayGo.Amt, PayGo.MerchantOrderNo, PayGo.TimeStamp); PayGo.RespondType = "JSON"; var ExpireDate = Now.AddDays(2).ToString("yyyy-MM-dd"); PayGo.ExpireDate = Now.AddDays(2).ToString("yyyyMMdd"); PayGo.ExpireTime = ""; var PaymentType = string.Empty; #region ##付款方式 switch (model.PaymentType) { case 1: PayGo.CREDIT = 1; PayGo.InstFlag = "0"; PayGo.WEBATM = 0; PayGo.VACC = 0; PayGo.CVS = 0; PaymentType = "信用卡一次付清"; break; case 2: PayGo.CREDIT = 0; PayGo.InstFlag = "3"; PayGo.WEBATM = 0; PayGo.VACC = 0; PayGo.CVS = 0; PaymentType = "信用卡分三期"; break; case 3: PayGo.CREDIT = 0; PayGo.InstFlag = "0"; PayGo.WEBATM = 1; PayGo.VACC = 0; PayGo.CVS = 0; PaymentType = "網路ATM"; break; case 4: PayGo.CREDIT = 0; PayGo.InstFlag = "0"; PayGo.WEBATM = 0; PayGo.VACC = 1; PayGo.CVS = 0; PaymentType = "實體ATM"; break; case 5: PayGo.CREDIT = 0; PayGo.InstFlag = "0"; PayGo.WEBATM = 0; PayGo.VACC = 0; PayGo.CVS = 1; PaymentType = "超商付款"; break; case 6: PayGo.CREDIT = 0; PayGo.InstFlag = "0"; PayGo.WEBATM = 0; PayGo.VACC = 0; PayGo.CVS = 0; PayGo.BARCODE = 1; PaymentType = "條碼付款"; break; } #endregion BookingCommit BookCommit = new BookingCommit(); BookCommit.Booking = model; BookCommit.PayGoRequest = PayGo; var PayAmt = PayGo.Amt - model.Bonus; var order = new OrderMaster { Address = model.info.Address, Amount = PayGo.Amt, PayAmt = PayAmt, BonusAmt = model.Bonus, CheckIn = model.CheckInDate, CheckOut = model.CheckOutDate, MerchantOrderNo = PayGo.MerchantOrderNo, Created = DateTime.Now, PayVendor = "Pay2Go", PaymentType = PaymentType, ProductId = Room.ID, ProductName = Room.Name, ProductType = "Room", Creator = CurrentUser.Id, Modified = Now, Modify = CurrentUser.Id, Quantity = model.Quantity, Tel = model.info.Phone, UserId = CurrentUser.Id, Email = model.info.Email, Name = model.info.Name, Status = OrderType.Unpaid.ToString(), ExpireDate = PayGo.CREDIT == 1 ? (DateTime?)null : DateTime.Parse(ExpireDate) }; _db.OrderMaster.Add(order); if (model.Bonus > 0) { _db.Bonus.Add(new Bonus { Amt = model.Bonus, UserId = CurrentUser.Id, Created = Now, Creator = CurrentUser.Id, MerchantOrderNo = order.MerchantOrderNo }); } _db.SaveChanges(); return(View("PayCommit", BookCommit)); }