/// <summary> /// 订单详情页-付款页 /// 如果订单超时未支付,再次购买时,不用考虑上个订单是不是从点击广告来的。 /// </summary> /// <param name="id">订单Id</param> /// <returns></returns> public ActionResult Payment(int id = 0) { if (id == 0) { //跳转到订单列表页 return(RedirectToAction("OwnOrderList")); } int studentId = GetCurrentUser().StudentId; StudentOrderBll studentOrderBll = new StudentOrderBll(); DtoSelectCenterOrderResult courseOrderResult = studentOrderBll.GetOrderInfoForPayment(studentId, id); if (courseOrderResult.OrderStatus.Equals((int)StudentOrderStatus.待支付) || courseOrderResult.OrderStatus.Equals((int)StudentOrderStatus.支付中)) { PaymentViewModel model = courseOrderResult.ConvertTo <PaymentViewModel>(); if (string.IsNullOrEmpty(model.CourseImage)) { model.CourseImage = defaultCourseImg; } return(View(model)); } else { return(RedirectToAction("OrderDetail", new { id = courseOrderResult.OrderId })); } }
/// <summary> /// 订单详情页 /// </summary> /// <param name="id">订单Id</param> /// <returns></returns> public ActionResult OrderDetail(int id = 0) { if (id == 0) { //跳转到订单列表页 return(RedirectToAction("OwnOrderList")); } int studentId = GetCurrentUser().StudentId; StudentOrderBll studentOrderBll = new StudentOrderBll(); DtoSelectCenterOrderResult courseOrderResult = studentOrderBll.GetOrderInfoForDetail(studentId, id); OrderDetailViewModel model = courseOrderResult.ConvertTo <OrderDetailViewModel>(); decimal?baseVoucherAmount = model.OrderVoucherPayList?.FirstOrDefault(v => v.PayType != (int)StudentOrderPaymnentTypeEnum.优惠券_校区券_支付)?.Amount; model.BaseVoucherAmount = baseVoucherAmount.HasValue ? baseVoucherAmount.Value : 0; decimal?schoolVoucherAmount = model.OrderVoucherPayList?.FirstOrDefault(v => v.PayType == (int)StudentOrderPaymnentTypeEnum.优惠券_校区券_支付)?.Amount; model.SchoolVoucherAmount = schoolVoucherAmount.HasValue ? schoolVoucherAmount.Value : 0; //防止用户未点击支付按钮,订单表没计算应付金额 if (model.PayAmount == 0) { model.PayAmount = model.OrderAmount - model.BaseVoucherAmount - model.SchoolVoucherAmount; model.PayAmount = model.PayAmount > 0 ? model.PayAmount : 0; } if (model.OrderStatus == (int)StudentOrderStatus.待支付 || model.OrderStatus == (int)StudentOrderStatus.支付中 || model.OrderStatus == (int)StudentOrderStatus.已支付) { model.IsHaveThisCourse = true; } else { //查询用户是否已购买此课程 var oriOrder = studentOrderBll.GetFinishOrder(studentId, model.CourseId); if (oriOrder != null && oriOrder.Yod_Id > 0) { model.IsHaveThisCourse = true; } else { model.IsHaveThisCourse = false; } } StudentInfoBll studentInfoBll = new StudentInfoBll(); DtoStudentInfo student = studentInfoBll.GetStudentInfo(studentId); Regex regex = new Regex(@"(\d{3})\d{4}(\d{4})"); model.StudentAccount = regex.Replace(student.Bst_Phone, "$1****$2"); model.SchoolName = student.SchoolName; if (string.IsNullOrEmpty(model.CourseImage)) { model.CourseImage = defaultCourseImg; } return(View(model)); }
public DtoPreOrderPay PreOrderPay(int orderId, int studentId, int[] voucherIds, string ip, int paytype) { DtoPreOrderPay response = new DtoPreOrderPay(); DtoSelectCenterOrderResult courseOrderResult = GetOrderInfoForPayment(studentId, orderId); if (courseOrderResult.OrderStatus.Equals((int)StudentOrderStatus.待支付) || courseOrderResult.OrderStatus.Equals((int)StudentOrderStatus.支付中)) { //查询用户是否已购买此课程 var oriOrder = GetFinishOrder(studentId, courseOrderResult.CourseId); if (oriOrder != null && oriOrder.Yod_Id > 0) { //已购买,不再生成付款码 response.State = false; response.ErrorMsg = "你已购买此课程。"; } else { if (CashPayTypeEnum.微信.Equals((CashPayTypeEnum)paytype)) { //支付二维码图片 byte[] qrImage = null; bool isFreeOrder = false; bool unifiedOrderResult = WechatOrderPay(orderId, studentId, voucherIds, ip, ref qrImage, ref isFreeOrder); response.State = true; response.IsFreeOrder = isFreeOrder; if (unifiedOrderResult) { response.Base64Img = Convert.ToBase64String(qrImage); } else if (!isFreeOrder) { throw new AbhsException(ErrorCodeEnum.WechatPrePayError, AbhsErrorMsg.ConstWechatPrePayError); } } else { throw new AbhsException(ErrorCodeEnum.PayTypeError, AbhsErrorMsg.PayTypeError); } } } else if (courseOrderResult.OrderStatus.Equals((int)StudentOrderStatus.已支付)) { response.State = false; response.ErrorMsg = "此订单已支付。"; } else { response.State = false; response.ErrorMsg = "此订单已超时。"; } return response; }
public DtoSelectCenterOrderResult GetOrderInfoForDetail(int studentId, int orderId) { Yw_StudentOrder order = GetStudentOrder(orderId); if (order.Yod_StudentId.Equals(studentId)) { CourseBll courseBll = new CourseBll(); Yw_Course course = courseBll.GetCourse(order.Yod_CourseId); DtoSelectCenterOrderResult result = new DtoSelectCenterOrderResult(); result.StudentId = order.Yod_StudentId; result.CourseId = course.Ycs_Id; result.CourseName = course.Ycs_Name; result.CourseImage = course.Ycs_CoverImage.ToOssPath(); result.Grade = course.Ycs_Grade; result.CourseType = course.Ycs_CourseType; result.LessonCount = course.Ycs_LessonCount; result.Description = course.Ycs_Description; result.OrderId = order.Yod_Id; result.OrderAmount = order.Yod_Amount; result.PayAmount = order.Yod_PayAmount; result.OrderStatus = order.Yod_Status; result.OrderTime = order.Yod_OrderTime; result.OrderNo = order.Yod_OrderNo; List<DtoStudentOrderPay> orderPayList = Service.GetStudentOrderPay(order.Yod_Id, order.Yod_PayBatchId); result.OrderCashPay = orderPayList.FirstOrDefault(p => p.PayType < 200); result.OrderVoucherPayList = orderPayList.Where(p => p.PayType > 200).ToList(); if (result.OrderCashPay != null) { result.PayType = result.OrderCashPay.PayType - 100; result.PayTime = result.OrderCashPay.PayTime; } return result; } else { throw new AbhsException(ErrorCodeEnum.NoAuthorize, AbhsErrorMsg.ConstNoAuthorizeViewOrder); } }
/// <summary> /// 选课中心订单详情页-支付页 /// </summary> /// <param name="studentId">学生Id</param> /// <param name="orderId">订单Id</param> /// <returns></returns> public DtoSelectCenterOrderResult GetOrderInfoForPayment(int studentId, int orderId) { //获取订单信息 //验证订单是否属于当前登录用户 //根据订单Id查询课程信息(名称、图片、年级、课程类型、课时、描述、教材版本) //课程价格显示订单原始金额 Yw_StudentOrder order = GetStudentOrder(orderId); if (order.Yod_StudentId.Equals(studentId)) { CourseBll courseBll = new CourseBll(); Yw_Course course = courseBll.GetCourse(order.Yod_CourseId); DtoSelectCenterOrderResult result = new DtoSelectCenterOrderResult(); result.StudentId = order.Yod_StudentId; result.CourseId = course.Ycs_Id; result.CourseName = course.Ycs_Name; result.CourseImage = course.Ycs_CoverImage.ToOssPath(); result.Grade = course.Ycs_Grade; result.CourseType = course.Ycs_CourseType; result.LessonCount = course.Ycs_LessonCount; result.Description = course.Ycs_Description; result.OrderId = order.Yod_Id; result.OrderAmount = order.Yod_Amount; result.OrderStatus = order.Yod_Status; result.OrderTime = order.Yod_OrderTime; result.OrderNo = order.Yod_OrderNo; return result; } else { throw new AbhsException(ErrorCodeEnum.NoAuthorize, AbhsErrorMsg.ConstNoAuthorizeViewOrder); } }