public IActionResult Checkout(int id) { var asset = assets.GetById(id); var model = new CheckOutModels { AssetId = id, ImageUrl = asset.ImageUrl, Title = asset.Tittle, LibraryCardId = "", IsCheckedOut = checkOut.IsCheckedOut(id) }; return(View(model)); }
public IActionResult Hold(int id) { var asset = assets.GetById(id); var model = new CheckOutModels { AssetId = id, ImageUrl = asset.ImageUrl, Title = asset.Tittle, LibraryCardId = "", HoldCount = checkOut.GetCurrentHolds(id).Count() }; return(View(model)); }
public async Task <ActionResult> Shipping() { var userId = User.Identity.GetUserId(); var _shippingAddressList = await(from o in data.CustomerShippingAddresses.Where(i => i.AspNetUserId == userId) select o).ToListAsync(); ViewBag.ShippingAddresses = _shippingAddressList; var _model = new CheckOutModels(); return(View(_model)); }
public ActionResult CheckOut() { CheckOutModels model = new CheckOutModels(); var cartproductsCookie = Request.Cookies["CartProduct"]; if (cartproductsCookie != null) { //var productID = cartproductsCookie.Value;// hamile uta - bata separate gareko //var ids = productID.Split('-'); // teslai split gareko //List<int> PpiDS = ids.Select(x => int.Parse(x)).ToList(); //teslai int ma convert gareko model.cartProductID = cartproductsCookie.Value.Split('-').Select(x => int.Parse(x)).ToList(); model.CartProducts = productsService.GetOne(model.cartProductID); } return(View(model)); }
public async Task <bool> createOrder(CheckOutModels model) { var dateTime = DateTime.UtcNow; var _orderNewStatus = ""; Order _order = new Order() { Id = Guid.NewGuid().ToString(), AspNetUserId = model.UserId, DateCreated = dateTime, }; //set order status and orderdetail status if paid if (model.PaymentStatus == "paid") { _orderNewStatus = "shipping"; } OrderDetailShippingAddress _shipping = new OrderDetailShippingAddress() { Id = Guid.NewGuid().ToString(), Line1 = model.ShippingAddress.Line1, Line2 = model.ShippingAddress.Line2, State = model.ShippingAddress.State, City = model.ShippingAddress.City, OdersId = _order.Id }; data.Orders.Add(_order); data.OrderDetailShippingAddresses.Add(_shipping); foreach (var o in model.Cart) { OrderDetail _orderDetail = new OrderDetail() { Id = Guid.NewGuid().ToString(), DateAdded = dateTime, ProductsId = o.Id, OrdersId = _order.Id, ProductAmount = o.Amount, Quantity = o.Quantity, OrderDetailsStatus = _orderNewStatus }; data.OrderDetails.Add(_orderDetail); } //payment entry var _payment = new Payment() { Id = Guid.NewGuid().ToString(), AspNetUserId = model.UserId, PaymentDate = dateTime, OrdersId = _order.Id }; var _paymentDetail = new PaymentDetail() { Id = Guid.NewGuid().ToString(), PaymentId = _payment.Id, PaymentRef = model.PaymentRef, PayerName = model.BillingAddress.name, PaymentAmount = model.TotalAmount, PaymentMethodId = model.PaymentMethodId }; data.Payments.Add(_payment); data.PaymentDetails.Add(_paymentDetail); //remove selected item from cart var _forDeleteItem = await data.Carts.Where(i => i.AspNetUserId == model.UserId && i.IsSelected == true).ToListAsync(); data.Carts.RemoveRange(_forDeleteItem); try { await data.SaveChangesAsync(); return(true); } catch (Exception ex) { return(false); } }
public async Task <ActionResult> Pay(CheckOutModels model, FormCollection collection) { var userId = User.Identity.GetUserId(); //Credit Card var _totalAmount = Convert.ToDouble((from o in model.Cart group o by new { product = o.Id, amount = o.Amount * o.Quantity } into g select new { Total = g.Key.amount }).ToList().Sum(i => i.Total)); var Billing = new AuthBillingAddress() { addrLine1 = model.BillingAddress.addressLine1, city = model.BillingAddress.city, state = model.BillingAddress.state, country = model.BillingAddress.country, name = model.BillingAddress.name, email = User.Identity.GetUserName(), phoneNumber = "N/A", zipCode = "0", }; var _charge = new ChargeAuthorizeServiceOptions() { total = (decimal)_totalAmount, currency = "USD", merchantOrderId = "1", token = collection["token"].ToString(), billingAddr = Billing }; var _paymentResult = new PaymentGatewayResponse(); if (model.PaymentMethodId == 1) { _paymentResult = _payment.CheckOutTwoCheckOut(_charge); } model.ShippingAddress = await data.CustomerShippingAddresses.Where(i => i.AspNetUserId == userId && i.IsDefault == true).FirstOrDefaultAsync(); if (_paymentResult.PaymentStatus != "failed") { model.PaymentRef = _paymentResult.refNo; model.TotalAmount = _paymentResult.amount ?? 0; model.UserId = userId; model.PaymentStatus = _paymentResult.PaymentStatus; dataLayer.createOrder(model); } return(View(model)); }
public async Task <ActionResult> PaymentMethod(CheckOutModels model) { var userId = User.Identity.GetUserId(); //update shipping address if has changes and add if new if (model.ShippingAddress.Id == null) { var _newAddress = new CustomerShippingAddress() { Id = Guid.NewGuid().ToString(), AspNetUserId = userId, City = model.ShippingAddress.City, IsDefault = model.ShippingAddress.IsDefault, Line1 = model.ShippingAddress.Line1, Line2 = model.ShippingAddress.Line2, State = model.ShippingAddress.State }; //unselect all except this if (model.ShippingAddress.IsDefault) { var _defaults = await data.CustomerShippingAddresses.Where(i => i.AspNetUserId == userId).ToListAsync(); foreach (var o in _defaults) { if (o.Id != model.ShippingAddress.Id) { o.IsDefault = false; } } } data.CustomerShippingAddresses.Add(_newAddress); await data.SaveChangesAsync(); } else { bool hasChanges = false; bool defaultChanges = false; var _address = await data.CustomerShippingAddresses.FindAsync(model.ShippingAddress.Id); //if address changes if (_address.IsDefault != model.ShippingAddress.IsDefault) { _address.IsDefault = model.ShippingAddress.IsDefault; hasChanges = true; defaultChanges = true; } if (_address.Line1 != model.ShippingAddress.Line1) { _address.Line1 = model.ShippingAddress.Line1; hasChanges = true; } if (_address.Line2 != model.ShippingAddress.Line2) { _address.Line2 = model.ShippingAddress.Line2; hasChanges = true; } if (_address.City != model.ShippingAddress.City) { _address.City = model.ShippingAddress.City; hasChanges = true; } if (_address.State != model.ShippingAddress.State) { _address.State = model.ShippingAddress.State; hasChanges = true; } //unselect all except this if (defaultChanges) { var _defaults = await data.CustomerShippingAddresses.Where(i => i.AspNetUserId == userId).ToListAsync(); foreach (var o in _defaults) { if (o.Id != model.ShippingAddress.Id) { o.IsDefault = false; } } } if (hasChanges) { await data.SaveChangesAsync(); } } var _model = new CheckOutModels() { Cart = await dataLayer.getProductsListFromCart(userId, true), }; return(View(_model)); }
/// <summary> /// 结算页面 /// </summary> /// <param name="orderId"></param> /// <param name="code"></param> /// <returns></returns> public ActionResult Checkout(string orderId, string code) { #region 用户信息部分 string userOpenId = string.Empty; Tuple <string, string> result = base.getUserOpenId(code); if (!string.IsNullOrEmpty(result.Item1)) { userOpenId = result.Item1; } else if (!string.IsNullOrEmpty(result.Item2)) { return(Redirect(result.Item2)); } ViewBag.userOpenId = userOpenId; #endregion if (string.IsNullOrEmpty(orderId) || string.IsNullOrEmpty(userOpenId)) { return(RedirectToAction("OrderList", "Order")); } #region 绑定手机部分 //用户未点击跳过注册 并且电话为空 users res = new users(); var resCache = CacheHelper.GetCache("userInfo" + userOpenId); if (resCache != null) { res = (users)resCache; } else { res = UserBiz.CreateNew().getUserInfoByOpenId(userOpenId); if (res == null) { return(RedirectToAction("Register", "User", new { needRegister = "1", fromUrl = Request.RawUrl }));//跳转到注册页面,且必须注册 } else { var start = DateTime.Now; var expiredDate = start.AddDays(1); TimeSpan ts = expiredDate - start; CacheHelper.SetCache("userInfo" + res.openid.ToString(), res, ts); if (!string.IsNullOrEmpty(res.openid)) { CookieHelper.SetCookie("userOpenId", res.openid); } } } if (string.IsNullOrEmpty(res.phone)) { return(RedirectToAction("Register", "User", new { needRegister = "1", fromUrl = Request.RawUrl }));//跳转到注册页面,且必须注册 } #endregion CheckOutModels checkOutModels = new CheckOutModels(); useraddress userRes = new useraddress(); List <UserShopcartsInfo> userUnpaidOrderInfo = new List <UserShopcartsInfo>(); salesslip userSalesSlip = new salesslip(); decimal productsPrice = 0; decimal postage = 0; decimal SFJZF = Convert.ToDecimal(System.Configuration.ConfigurationSettings.AppSettings["sf:JZH"]); //顺丰江浙沪快递费 decimal SFNonJZF = Convert.ToDecimal(System.Configuration.ConfigurationSettings.AppSettings["sf:NonJZH"]); //顺丰非江浙沪快递费 string wechatBody = string.Empty; userSalesSlip = OrderBiz.CreateNew().getCheckOutInfo(orderId, userOpenId); if (userSalesSlip == null) //查不到销售单 { return(RedirectToAction("OrderList", "Order")); //查不到销售单,跳转至订单列表页面 } else if (userSalesSlip.status == 5) { userSalesSlip.status = OrderBiz.CreateNew().dealExpectionOrder(userSalesSlip.salesNo, userSalesSlip.wechatOrderNo); } if (userSalesSlip.status == 0) //0未付款 1已付款待发货 2 已发货,待收货 3 已完成 4 已删除 5 预付款 6 已过期 { if (DateTime.Now.AddMinutes(-orderExpiredMins) > userSalesSlip.createDate) //订单已失效,为了减少数据库操作,这边做跳转; { return(RedirectToAction("OrderList", "Order", new { status = "all" })); } #region 用户收货地址部分 if (!string.IsNullOrEmpty(userSalesSlip.province) && !string.IsNullOrEmpty(userSalesSlip.receiver)) //先看该订单用户是否已经设置收货地址,没有设置过则读取默认地址,还没有则为空 { userRes.receiver = userSalesSlip.receiver; userRes.Phone = userSalesSlip.Phone; userRes.province = userSalesSlip.province; userRes.city = userSalesSlip.city; userRes.county = userSalesSlip.county; userRes.detailAddress = userSalesSlip.detailAddress; } else { var userAddressList = UserBiz.CreateNew().getUserAddressList(userOpenId); if (userAddressList.Any()) { userRes = userAddressList.Find(x => x.SetAsDefault == "1"); } if (userRes == null) { userRes = new useraddress(); userRes.receiver = userRes.Phone = userRes.province = userRes.city = userRes.county = userRes.detailAddress = ""; } } if (!string.IsNullOrEmpty(userRes.province)) { if (userRes.province.IndexOf("上海") >= 0 || userRes.province.IndexOf("江苏") >= 0 || userRes.province.IndexOf("浙江") >= 0 || userRes.province.IndexOf("安徽") >= 0) { postage = SFJZF; } else { postage = SFNonJZF; } } #endregion #region 订单产品部分 OrderBiz orderBiz = OrderBiz.CreateNew(); userUnpaidOrderInfo = orderBiz.getUnpaidOrderInfo(userSalesSlip.salesId); checkOutModels.UserOrderInfo = userUnpaidOrderInfo; foreach (var i in userUnpaidOrderInfo) { try { orderBiz.updateOrder2ProductLogField(i.productId, i.id); } catch (Exception ex) { _Apilog.WriteLog("ProductsController/Checkout更新订单logid异常" + ex.Message); } wechatBody += i.productName + "*" + i.num.ToString() + ";"; productsPrice += i.productTotalPrice ?? 0; } #endregion } else//订单状态不为 未付款,需要跳转到对应页面 { return(RedirectToAction("OrderList", "Order", new { status = userSalesSlip.status })); } decimal factPrice = 0; decimal factPostage = 0; if (Convert.IsDBNull(userSalesSlip.adminChangeAmount) || userSalesSlip.adminChangeAmount == null) { factPrice = productsPrice; } else { factPrice = userSalesSlip.adminChangeAmount ?? 1; } if (Convert.IsDBNull(userSalesSlip.adminChangePostage) || userSalesSlip.adminChangePostage == null) { factPostage = postage; } else { factPostage = userSalesSlip.adminChangePostage ?? 1; } //若传递了相关参数,则调统一下单接口,获得后续相关接口的入口参数 JsApiPay jsApiPay = new JsApiPay(); jsApiPay.openid = userOpenId; jsApiPay.total_fee = base.isPayTest == "false" ? decimal.ToInt32(factPrice * 100 + factPostage * 100) : 1;//测试环境默认支付1分 //JSAPI支付预处理 try { string wechatOrderId = Guid.NewGuid().ToString("N").ToLower(); OrderBiz.CreateNew().updateWechatOrderId(orderId, userOpenId, wechatOrderId); WxPayData unifiedOrderResult = jsApiPay.GetUnifiedOrderResult(wechatBody, wechatOrderId); //orderId ViewBag.wxJsApiParam = jsApiPay.GetJsApiParameters(); //获取H5调起JS API参数 _Apilog.WriteLog("ProductsController/Checkout 用户userOpenId: " + userOpenId + " wxJsApiParam : " + ViewBag.wxJsApiParam); //Log.Debug(this.GetType().ToString(), "wxJsApiParam : " + wxJsApiParam); //在页面上显示订单信息 } catch (Exception ex) { _Apilog.WriteLog("ProductsController/Checkout下单失败" + ex.Message); } //_Apilog.WriteLog(orderId); ViewBag.productsPrice = productsPrice; ViewBag.postage = postage; ViewBag.totalCost = factPrice + factPostage;//productsPrice + postage; ViewBag.FooterType = "custom"; ViewBag.PageName = "结算"; ViewBag.ProjectUrl = base.projectURL; ViewBag.adminChangeAmount = userSalesSlip.adminChangeAmount; ViewBag.adminChangePostage = userSalesSlip.adminChangePostage; checkOutModels.UserAddress = userRes; return(View(checkOutModels)); }