Пример #1
0
        public void PayOrder()
        {
            decimal         amount  = 0;
            string          orderNo = "";
            StudentOrderBll bll     = new StudentOrderBll();
            List <Task>     ts      = new List <Task>();

            bll.OrderPay(10002, 10002, new int[2] {
                10000, 10002
            }, CashPayTypeEnum.微信, out amount, out orderNo);
            for (int index = 10101; index <= 10150; index++)
            {
                //if (index % 2 == 0)
                //{
                //    ts.Add(Task.Factory.StartNew<int>(() =>
                //    {
                //        return bll.OrderPay(10000, 10000, new int[3] { 10000, 10001, 10002 }, CashPayTypeEnum.微信);
                //    }));
                //}
                //else
                //{
                var x = index;
                ts.Add(Task.Factory.StartNew(() =>
                {
                    bll.OrderPay(x, x, new int[3] {
                        10000, 10001, 10002
                    }, CashPayTypeEnum.微信, out amount, out orderNo);
                }));
                //}
            }
            Task.WaitAll(ts.ToArray());
            //bll.OrderPay(10000, 10000, new int[3] { 10000, 10001, 10002 }, CashPayTypeEnum.微信);
        }
Пример #2
0
        /// <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 }));
            }
        }
Пример #3
0
        public void PatOrderCallBack()
        {
            decimal         amount  = 0;
            string          orderNo = "";
            StudentOrderBll bll     = new StudentOrderBll();
            //bll.OrderPayCallback("1190917134811234", CashPayTypeEnum.微信,2800);
            List <Task> ts = new List <Task>();

            // var x=bll.OrderPay(10101, 10101, new int[3] { 10000, 10001, 10002 }, CashPayTypeEnum.微信,out amount,out orderNo);
            for (int index = 10101; index <= 10150; index++)
            {
                //if (index % 2 == 0)
                //{
                //    ts.Add(Task.Factory.StartNew<int>(() =>
                //    {
                //        return bll.OrderPay(10000, 10000, new int[3] { 10000, 10001, 10002 }, CashPayTypeEnum.微信);
                //    }));
                //}
                //else
                //{
                var x = index;
                ts.Add(Task.Factory.StartNew <decimal>(() =>
                {
                    return(0);
                    //return bll.OrderPayCallback(x, CashPayTypeEnum.微信,2700);
                }));
                //}
            }
            Task.WaitAll(ts.ToArray());

            //StudentOrderBll bll = new StudentOrderBll();
            //bll.OrderPayCallback(10003, CashPayTypeEnum.微信);
        }
Пример #4
0
        /// <summary>
        /// 获取支付二维码
        /// </summary>
        /// <param name="orderId">订单Id</param>
        /// <param name="voucherIds">支付使用的优惠券Id</param>
        /// <param name="paytype">支付渠道(支付宝、微信)</param>
        /// <returns></returns>
        public JsonResult GetWechatPayQR(int orderId = 0, int[] voucherIds = null, int paytype = 1)
        {
            int    studentId = 0;
            string ip        = "";
            //当前登录用户
            LoginInfo studentInfo = GetCurrentUser();

            if (studentInfo != null)
            {
                studentId = studentInfo.StudentId;
                ip        = studentInfo.LastLoginIP;
            }
            StudentOrderBll studentOrderBll = new StudentOrderBll();
            DtoPreOrderPay  response        = studentOrderBll.PreOrderPay(orderId, studentId, voucherIds, ip, paytype);

            return(Json(new JsonResponse <dynamic>
            {
                State = response.State,
                ErrorCode = 0,
                ErrorMsg = response.ErrorMsg,
                Data = new
                {
                    QR = response.Base64Img,
                    IsFreeOrder = response.IsFreeOrder
                }
            }, JsonRequestBehavior.AllowGet));
        }
Пример #5
0
 private void SaveLog(Yw_PayLog log)
 {
     if (log != null)
     {
         StudentOrderBll orderBll = new StudentOrderBll();
         orderBll.PayLog(log);
     }
 }
Пример #6
0
        public void OrderQueryTest()
        {
            StudentOrderBll bll       = new StudentOrderBll();
            int             orderId   = 10227;
            int             studentId = 10001;

            bll.OrderQuery(orderId, CashPayTypeEnum.微信, studentId);
        }
Пример #7
0
        public void CancelOrderTest()
        {
            StudentOrderBll bll = new StudentOrderBll();

            bll.CancelOrder(10208);
            //string no=bll.GenerateOrderNo(10000, 10001);
            //Yw_StudentOrder order = bll.GetStudentOrder("1190917134810000");
        }
Пример #8
0
        /// <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));
        }
Пример #9
0
        public void OrderPayTest()
        {
            StudentOrderBll bll     = new StudentOrderBll();
            decimal         amount  = 0;
            string          orderNo = "";

            bll.OrderPay(10225, 10013, new int[1] {
                10020
            }, CashPayTypeEnum.微信, out amount, out orderNo);
        }
Пример #10
0
        public JsonResult OrderQuery(int orderId, CashPayTypeEnum payType)
        {
            //当前登录用户
            LoginInfo studentInfo = GetCurrentUser();

            StudentOrderBll studentOrderBll = new StudentOrderBll();
            bool            result          = studentOrderBll.OrderQuery(orderId, payType, studentInfo.StudentId);

            return(Json(new JsonResponse <bool> {
                State = true, ErrorCode = 0, ErrorMsg = "", Data = result
            }, JsonRequestBehavior.AllowGet));
        }
Пример #11
0
        public WechatPayNotifyResponse PayNotify(string xmlContent)
        {
            WechatPayNotifyResponse response = new WechatPayNotifyResponse();
            Yw_PayLog log = new Yw_PayLog();

            try
            {
                BeginLog(log, 0, "", PayLogStepEnum.微信支付回调, xmlContent);
                Dictionary <string, string> notify = ParseXml(xmlContent);

                response.IsSuccess = false;

                response.ReturnCode    = notify.ContainsKey("return_code") ? notify["return_code"] : "";
                response.ReturnMsg     = notify.ContainsKey("return_msg") ? notify["return_msg"] : "";
                response.AppId         = notify.ContainsKey("appid") ? notify["appid"] : "";
                response.MchId         = notify.ContainsKey("mch_id") ? notify["mch_id"] : "";
                response.ResultCode    = notify.ContainsKey("result_code") ? notify["result_code"] : "";
                response.ErrCode       = notify.ContainsKey("err_code") ? notify["err_code"] : "";
                response.ErrCodeDes    = notify.ContainsKey("err_code_des") ? notify["err_code_des"] : "";
                response.TradeType     = notify.ContainsKey("trade_type") ? notify["trade_type"] : "";
                response.OpenId        = notify.ContainsKey("openid") ? notify["openid"] : "";
                response.TotalFee      = int.Parse(notify["total_fee"]);
                response.TransactionId = notify.ContainsKey("transaction_id") ? notify["transaction_id"] : "";
                response.OutTradeNo    = notify.ContainsKey("out_trade_no") ? notify["out_trade_no"] : "";

                BeginLog(log, 0, response.OutTradeNo, PayLogStepEnum.微信支付回调, xmlContent);

                if (CheckSign(notify))
                {
                    if (response.ReturnCode == "SUCCESS" && response.ResultCode == "SUCCESS")
                    {
                        StudentOrderBll bll = new StudentOrderBll();
                        bll.OrderPayCallback(response.OutTradeNo, response.TransactionId, CashPayTypeEnum.微信, (decimal)(response.TotalFee * 1.0 / 100));
                        response.IsSuccess = true;
                        EndLog(log, "Success", 1);
                        SaveLog(log);
                    }
                    return(response);
                }

                throw new AbhsException(ErrorCodeEnum.WechatPayNotifyError, AbhsErrorMsg.ConstWechatPayNotifyError, 0);
            }
            catch (Exception ex)
            {
                EndLog(log, "Fail," + ex.Message + "|" + ex.StackTrace, 0);
                SaveLog(log);
                throw;
            }
        }
Пример #12
0
        /// <summary>
        /// 学生下单(课程详情页点击立即购买)
        /// </summary>
        /// <param name="id">课程Id</param>
        /// <returns></returns>
        public ActionResult MakeOrder(int id = 0, int aid = 0)
        {
            //生成订单,如果生成成功,跳转到订单页
            int studentId = GetCurrentUser().StudentId;

            StudentOrderBll studentOrderBll = new StudentOrderBll();
            int             orderId         = studentOrderBll.MakeOrder(studentId, id);

            try
            {
                System.Threading.Tasks.Task.Factory.StartNew(() =>
                {
                    AdvertisingBll advertisingBll = new AdvertisingBll();
                    advertisingBll.SendOrderMessage(aid);
                });
            }
            catch (Exception)
            {
            }
            return(RedirectToAction("Payment", new { id = orderId }));
        }
Пример #13
0
        public ActionResult GetStudentOrder(int pageIndex, int status = 1)
        {
            StudentOrderBll studentOrderBll = new StudentOrderBll();
            var             device          = "";

            device = clsCommon.CheckAgent();
            PagingObject paging = new PagingObject();

            paging.PageIndex = pageIndex;
            paging.PageSize  = 7;
            //if (device.Contains("iPad"))
            //{
            //    paging.PageSize = 6;
            //}
            //else
            //{
            //    paging.PageSize = 7;
            //}
            var studentOrder = studentOrderBll.GetStudentOrderByStudentId(paging, GetCurrentUser().StudentId);
            var viewModels   = studentOrder.ConvertTo <List <StudentOrderViewModel> >();

            return(Json(new { Data = viewModels, PageSize = paging.PageSize, TotalRecord = paging.TotalCount }, JsonRequestBehavior.AllowGet));
        }
        public ContentResult WechatPayNotify()
        {
            //接收从微信后台POST过来的数据
            System.IO.Stream s = Request.InputStream;
            int count          = 0;

            byte[]        buffer  = new byte[1024];
            StringBuilder builder = new StringBuilder();

            while ((count = s.Read(buffer, 0, 1024)) > 0)
            {
                builder.Append(Encoding.UTF8.GetString(buffer, 0, count));
            }
            s.Flush();
            s.Close();
            s.Dispose();

            LogHelper.WriteLog("微信支付通知数据 : " + builder.ToString());
            StudentOrderBll studentOrderBll = new StudentOrderBll();
            string          result          = studentOrderBll.WechatOrderPayNotify(builder.ToString());

            LogHelper.WriteLog("微信支付通知处理结果 : " + result);
            return(Content(result));
        }
Пример #15
0
        public void MakeOrderTest()
        {
            StudentOrderBll bll = new StudentOrderBll();

            bll.MakeOrder(10013, 10018);
        }
Пример #16
0
        public void OrderPayCallbackTest()
        {
            StudentOrderBll bll = new StudentOrderBll();

            bll.OrderPayCallback("611003114584610026211", "1004400740201409030005092168", CashPayTypeEnum.微信, 500);
        }
Пример #17
0
        public override void Run(DateTime now)
        {
            StudentOrderBll orderBll = new StudentOrderBll();

            orderBll.CancelOrderAuto();
        }
Пример #18
0
        public void CancelOrderAutoTest()
        {
            StudentOrderBll bll = new StudentOrderBll();

            bll.CancelOrderAuto();
        }