Exemplo n.º 1
0
        public HttpResponseMessage GetOrderDetails(string orderId)
        {
            OrderBuss buss       = new OrderBuss();
            var       orderInfos = buss.GetOrderDetailInfo(orderId);

            return(ToJson(new { Details = orderInfos }));
        }
Exemplo n.º 2
0
        public ActionResult selAddress()
        {
            string uid = Session["memberID"].ToString();
            Dictionary <string, object> map = new Dictionary <string, object>();


            OrderBuss obll = new OrderBuss();

            DAO.Order info = obll.getAddress(uid);
            if (info == null)
            {
                map.Add("er", "0");
                return(Json(map, JsonRequestBehavior.AllowGet));
            }
            else
            {
                map.Add("name", info.UserName);
                map.Add("Prov", info.Prov);
                map.Add("City", info.City);
                map.Add("Area", info.Area);
                map.Add("Address", info.Address);
                map.Add("CellPhone", info.CellPhone);
                return(Json(map, JsonRequestBehavior.AllowGet));
            }
        }
Exemplo n.º 3
0
        public HttpResponseMessage GetAllAvailableOrderInfos()
        {
            OrderBuss buss       = new OrderBuss();
            var       orderInfos = buss.GetAllAvailableOrderInfos();

            return(ToJson(new { Orders = orderInfos }));
        }
Exemplo n.º 4
0
        public ActionResult MyOrder()
        {
            string      uid  = Session["memberID"].ToString();
            OrderBuss   oBll = new OrderBuss();
            MyOrderInfo info = oBll.GetMyorder(uid);

            return(View(info));
        }
Exemplo n.º 5
0
        public ActionResult Detail(string id)
        {
            string      uid  = Session["memberID"].ToString();
            OrderBuss   oBll = new OrderBuss();
            OrderDetail info = oBll.OrderDetail(uid, id);

            return(View(info));
        }
Exemplo n.º 6
0
        public HttpResponseMessage UpdateOrderStatus([FromBody] OrderStatusUpdateModel model)
        {
            OrderBuss buss = new OrderBuss();

            buss.UpdateOrderStatus(model.OrderId, (OrderStatusEnum)model.Status);

            return(ToJson(new { Result = true }));
        }
Exemplo n.º 7
0
        public ActionResult OrderCompleted(string gender, string lastName, string mealTime,
                                           string mealNumber, string tableNum)
        {
            ViewBag.Title = "Bojin's Restaurant Booking Online";
            var orderInfo = new OrderInfo();

            orderInfo.Gender     = gender;
            orderInfo.LastName   = lastName;
            orderInfo.MealTime   = Convert.ToDateTime(mealTime);
            orderInfo.MealNumber = mealNumber;

            orderInfo.CreateTime = DateTime.Now;
            orderInfo.Status     = OrderStatusEnum.Order;
            orderInfo.CustomerId = Int32.Parse(Session["userId"].ToString());
            orderInfo.TableNum   = Convert.ToInt32(tableNum);

            var result = new OrderResultModel();
            var items  = GetShoppingCartInfoFromCookie();

            if (items.Count == 0)
            {
                result.IsSuccess = false;
                return(View(result));
            }

            decimal totalPrice = 0;
            int     count      = 0;

            foreach (var item in items)
            {
                count      += item.Qty;
                totalPrice += (item.Qty * item.Price);
            }

            orderInfo.TotalPrice = totalPrice;
            orderInfo.ItemsCount = count;
            var orderId = String.Empty;

            var createResult = new OrderBuss().CreateOrder(orderInfo, items, out orderId);


            if (createResult == true)
            {
                HttpCookie aCookie = Request.Cookies["shoppingCart"];
                aCookie.Expires = DateTime.Now.AddDays(-1);
                Response.Cookies.Add(aCookie);

                result.IsSuccess   = true;
                result.OrderCode   = orderId;
                result.OrderAmount = orderInfo.TotalPrice;
            }
            else
            {
                result.IsSuccess = false;
            }

            return(View(result));
        }
Exemplo n.º 8
0
 private ActionResult CompleteOrder(string out_trade_no, string trade_no, OrderBuss obll)
 {
     DAO.OrderPay op = obll.GetOrderPay(out_trade_no);
     if (op != null)
     {
         if (op.PayState == "未支付")
         {
             op.PayState = "已支付";
             if (op.PayType == 0)
             {
                 op.Bank = "支付宝";
             }
             op.Remark = string.Format("{1},由支付宝电子对账单更新{0:yyyy-MM-dd HH:mm:ss},状态为:已支付", DateTime.Now, trade_no);
             //修改OrderPay
             log.Info("*********即将修改OrderPay**************");
             bool r = obll.upDataOrderPay(op);
             log.Info("orderPay 更新结果:" + r);
             log.Info("orderPay 更新参数:op.Orderid=" + op.OrderId + "  op.PayState-" + op.PayState + "op.Bank-" + op.Bank + "trade_no-" + trade_no);
             //支付成功修改订单状态
             log.Info("*********即将修改Order状态**************");
             DAO.Order order = obll.GetOrder(out_trade_no);
             //计算组合支付总金额==订单金额
             bool r_vali_price = obll.ValidataPayPrice(out_trade_no, order.TotalPrice);
             log.Info("订单:" + op.OrderId + "金额,支付金额校验--" + r_vali_price);
             if (r_vali_price)
             {
                 bool r_oder = obll.upOrder(out_trade_no);
                 log.Info("订单:" + op.OrderId + " 修改结果--" + r_oder);
             }
             else
             {
                 log.Info("订单:" + op.OrderId + " 修改状态失败,金额验证不通过");
                 return(Redirect(string.Format("/Order/Detail/{0}", out_trade_no)));
             }
         }
     }
     else
     {
         log.Info("OrderPay is Null");
         return(Redirect(string.Format("/Order/Detail/{0}", out_trade_no)));
     }
     //打印页面
     //orderpay 订单支付类型 0 正常订单 1 充值订单
     if (op.OrderType == 0)
     {
         return(Redirect(string.Format("/Order/Detail/{0}", out_trade_no)));
     }
     else if (op.OrderType == 1)
     {
         return(Redirect("/pay/recharge_success.html"));
     }
     else
     {
         return(Redirect(string.Format("/Order/Detail/{0}", out_trade_no)));
     }
 }
Exemplo n.º 9
0
        public ActionResult orderAddress()
        {
            Dictionary <string, object> mp = new Dictionary <string, object>();
            string UID = Session["memberID"].ToString();
            JavaScriptSerializer jss = new JavaScriptSerializer();

            DAO.information infoMation = new DAO.information();

            OrderBuss obll = new OrderBuss();

            DAO.Addship addship = obll.isAddressByUid(UID);
            return(Json(addship, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 10
0
        // GET: /Alipay/
        //同步通知
        public ActionResult receive()
        {
            log.Info("**********************支付宝回调receive**********************");
            //商户订单号
            string out_trade_no = Request.QueryString["out_trade_no"];
            SortedDictionary <string, string> sPara = GetRequestGet();

            //日志
            log.Info("商户订单号" + out_trade_no + ",参数个数:" + sPara.Count);
            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify    = new Notify();
                bool   verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]);//Request.Form["notify_id"], Request.Form["sign"]
                log.Info("是否支付宝发出的验证:" + verifyResult + "参数sPara:" + sPara.ToString() + "参数sign:" + Request.QueryString["sign"]);
                //日志
                //   Common.Log(out_trade_no + ",回调判断:" + verifyResult, Common.LogLevel.low, "微网站支付宝回调");
                if (verifyResult)//验证成功 verifyResult
                {
                    log.Info("支付宝返回验证成功");
                    //支付宝交易号
                    string trade_no = Request.QueryString["trade_no"];
                    //交易状态
                    string trade_status = Request.QueryString["trade_status"];
                    log.Info("支付宝交易号:" + trade_no + "支付宝交易状态:" + trade_status);
                    OrderBuss obll = new OrderBuss();
                    if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS")
                    {
                        return(CompleteOrder(out_trade_no, trade_no, obll));
                    }
                    else
                    {
                        log.Info("支付宝交易状态未通过");
                        return(Redirect(string.Format("/Order/Detail/{0}", out_trade_no)));
                    }
                }
                else  //验证失败
                {
                    log.Info("支付宝返回验证失败");
                    Response.Write("验证失败");
                }
            }
            else
            {
                Response.Write("无返回参数");
            }
            log.Info("**********************支付宝回调receive结束**********************");
            return(View());
        }
Exemplo n.º 11
0
        public HttpResponseMessage ModifyOrder([FromBody] OrderInfoFromAndroidModel orderFromAndroid)
        {
            List <OrderDetail> details = new List <OrderDetail>();
            var orderId    = orderFromAndroid.OrderId;
            var itemCount  = 0;
            var totalPrice = Decimal.Zero;

            foreach (var item in orderFromAndroid.Dishes)
            {
                var     orderDetail = new OrderDetail();
                decimal unitPrice   = Convert.ToDecimal(item.UnitPrice);
                orderDetail.DishId    = item.DishId;
                orderDetail.Count     = item.Qty;
                orderDetail.DishEName = item.EName;
                orderDetail.DishOName = item.OName;
                orderDetail.OrderId   = orderId;
                orderDetail.UnitPrice = unitPrice;
                itemCount            += item.Qty;
                totalPrice           += (item.Qty * unitPrice);
                details.Add(orderDetail);
            }

            OrderInfo orderInfo = new OrderInfo();

            orderInfo.CreateTime = DateTime.Now;
            orderInfo.ItemsCount = itemCount;
            orderInfo.MealNumber = orderFromAndroid.TableHeadcount;
            orderInfo.MealTime   = DateTime.Now;
            orderInfo.OrderId    = orderId;
            orderInfo.Status     = OrderStatusEnum.Dining;
            orderInfo.TableNum   = Convert.ToInt32(orderFromAndroid.TableNum);
            orderInfo.TotalPrice = totalPrice;
            orderInfo.WaiterId   = orderFromAndroid.WaiterId;

            OrderBuss buss = new OrderBuss();

            buss.UpdateOrderInfoFromTablet(orderInfo, details);

            return(ToJson(new { Result = true }));
        }
Exemplo n.º 12
0
        //异步通知
        public ActionResult autoreceive()
        {
            log.Info("**********************支付宝回调autoreceive**********************");
            SortedDictionary <string, string> sPara = GetRequestPost();

            log.Info("参数个数:" + sPara.Count);
            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify    = new Notify();
                bool   verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);
                log.Info("autoreceive是否支付宝发出的验证:" + verifyResult + "参数sPara:" + sPara + "参数sign:" + Request.Form["sign"]);

                if (verifyResult)//验证成功
                {
                    log.Info("autoreceive验证成功");
                    //商户订单号
                    string out_trade_no = Request.Form["out_trade_no"];
                    //支付宝交易号
                    string trade_no = Request.Form["trade_no"];
                    //交易状态
                    string trade_status = Request.Form["trade_status"];
                    log.Info("autoreceive商户订单号:" + out_trade_no + "支付宝交易号:" + trade_no + "支付宝交易状态:" + trade_status);

                    try
                    {
                        OrderBuss obll = new OrderBuss();
                        if (trade_status == "TRADE_FINISHED")
                        {
                            //判断该笔订单是否在商户网站中已经做过处理
                            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                            //如果有做过处理,不执行商户的业务程序
                            //注意:
                            //该种交易状态只在两种情况下出现
                            //1、开通了普通即时到账,买家付款成功后。
                            //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。
                        }
                        if (trade_status == "TRADE_SUCCESS")
                        {
                            //判断该笔订单是否在商户网站中已经做过处理
                            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                            //如果有做过处理,不执行商户的业务程序

                            //注意:
                            //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。
                            DAO.OrderPay op = obll.GetOrderPay(out_trade_no);
                            if (op.PayState == "未支付")
                            {
                                op.PayState = "已支付";
                                if (op.PayType == 0)
                                {
                                    op.Bank = "支付宝";
                                }
                                op.Remark = string.Format("{1},由支付宝电子对账单更新{0:yyyy-MM-dd HH:mm:ss},状态为:已支付", DateTime.Now, trade_no);
                                //修改OrderPay
                                log.Info("*********即将修改OrderPay**************");
                                bool r = obll.upDataOrderPay(op);
                                log.Info("orderPay 更新结果:" + r);
                                log.Info("orderPay 更新参数:op.Orderid=" + op.OrderId + "  op.PayState-" + op.PayState + "op.Bank-" + op.Bank + "trade_no-" + trade_no);
                                //支付成功修改订单状态
                                log.Info("*********即将修改Order状态**************");
                                DAO.Order order = obll.GetOrder(out_trade_no);
                                //计算组合支付总金额==订单金额
                                bool r_vali_price = obll.ValidataPayPrice(out_trade_no, order.TotalPrice);
                                log.Info("订单:" + op.OrderId + "金额,支付金额校验--" + r_vali_price);
                                if (r_vali_price)
                                {
                                    bool r_oder = obll.upOrder(out_trade_no);
                                    log.Info("订单:" + op.OrderId + " 修改结果--" + r_oder);
                                }
                            }
                        }
                        else
                        {
                            Response.Write(trade_status);
                        }

                        Response.Write("success");  //请不要修改或删除
                    }
                    catch (Exception exc)
                    {
                        Response.Write(exc.ToString());
                    }
                    //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
                }
                else//验证失败
                {
                    Response.Write("fail");
                }


                Response.End();
            }
            log.Info("**********************支付宝回调autoreceive结束**********************");
            return(View());
        }
Exemplo n.º 13
0
        public ActionResult AddOrder(string orderInfo)
        {
            Dictionary <string, object> mp = new Dictionary <string, object>();
            string UID = Session["memberID"].ToString();
            JavaScriptSerializer jss   = new JavaScriptSerializer();
            OrderInfo            oInfo = jss.Deserialize <OrderInfo>(orderInfo);

            if (oInfo != null && oInfo.shopList.Count > 0)
            {
                List <OrderModule.model.Shop> slist = new List <OrderModule.model.Shop>();
                foreach (var item in oInfo.shopList)
                {
                    OrderModule.model.Shop shop = new OrderModule.model.Shop();
                    shop.ID    = item.ID;
                    shop.Price = item.Price;
                    shop.Qty   = item.Qty;
                    shop.Attrs = item.Attrs;
                    shop.Type  = item.Type;
                    slist.Add(shop);
                    //购物车中活动产品的活动是否过期
                    if (item.Type != "-1")
                    {
                        string msg = "";
                        ActiveModule.ActiveBus abll = new ActiveModule.ActiveBus();
                        bool result = abll.ValiActivePro(int.Parse(item.Type), int.Parse(item.ID), item.Attrs, int.Parse(item.Qty), ref msg);
                        if (!result)
                        {
                            mp.Add("status", "error");
                            mp.Add("msg", msg);
                            return(Json(mp, JsonRequestBehavior.AllowGet));
                        }
                    }
                    //------
                }
                OrderBuss obll = new OrderBuss();
                //产品验证 活动产品=》活动是否过期
                //价格验证
                //增加积分1.自己 2.上级
                //给上级返利
                MemberBLL       mbmBll        = new MemberBLL();
                DAO.MemberBase  mb            = mbmBll.GetUserByID(UID);
                MemberLevelBLL  memLeveBll    = new MemberLevelBLL();
                DAO.MemberLevel memLevel      = memLeveBll.GetLeveByUid(UID);
                decimal         orderPrice    = decimal.Parse(oInfo.shopTotlePrice);
                decimal         shopListTotle = 0;
                bool            vr            = obll.OrderAmountCheck(slist, orderPrice, memLevel.Ratio, out shopListTotle);
                if (vr)
                {
                    if (ValidateSendInfo(oInfo.sendInfo))
                    {
                        OrderModule.model.SendInfo sendinfo = new OrderModule.model.SendInfo();
                        sendinfo.Address = oInfo.sendInfo.Address;
                        sendinfo.Area    = oInfo.sendInfo.Area;
                        sendinfo.City    = oInfo.sendInfo.City;
                        sendinfo.Name    = oInfo.sendInfo.Name;
                        sendinfo.Phone   = oInfo.sendInfo.Phone;
                        sendinfo.Prov    = oInfo.sendInfo.Prov;
                        //价格验证通过增加订单
                        string OrderNumber = obll.AddOrder(slist, sendinfo, UID, memLevel.Ratio, orderPrice, shopListTotle);

                        if (OrderNumber != null)
                        {
                            //订单增加成功
                            mp.Add("status", "ok");
                            mp.Add("order", OrderNumber);
                            //给当前用户增加积分,给上级增加积分,给上级返利
                            //反积分
                            ExpRecordBLL expBll = new ExpRecordBLL();
                            expBll.GiveExp(mb, orderPrice, OrderNumber);
                            //返利如果有上级
                            if (mb.UpUser != -1 && mb.UpUser != 0)
                            {
                                RebateRecordBLL rrBll = new RebateRecordBLL();
                                rrBll.GiveParentRebate(UID, mb.LoginName, mb.UpUser, OrderNumber, orderPrice);
                            }
                            return(Json(mp, JsonRequestBehavior.AllowGet));
                        }
                        else
                        {
                            //订单增加异常
                            mp.Add("status", "catch");
                            return(Json(mp, JsonRequestBehavior.AllowGet));
                        }
                    }
                    else
                    {
                        //价格验证失败
                        mp.Add("status", "error");
                        mp.Add("msg", "配送信息验证失败!");
                        return(Json(mp, JsonRequestBehavior.AllowGet));
                    }
                }
                else
                {
                    //价格验证失败
                    mp.Add("status", "error");
                    mp.Add("msg", "价格验证失败!");
                    return(Json(mp, JsonRequestBehavior.AllowGet));
                }
            }
            else
            {
                //价格验证失败
                mp.Add("status", "error");
                mp.Add("msg", "没有产品!");
                return(Json(mp, JsonRequestBehavior.AllowGet));
            }
        }
Exemplo n.º 14
0
        protected void Page_Load(object sender, EventArgs e)
        {
            log.Info("*******************支付宝发送处理开始****************************");
            string oid = this.Request.QueryString["oid"];
            //商户订单号,商户网站订单系统中唯一订单号,必填
            string out_trade_no = oid;

            log.Info("订单号:" + oid);
            //订单名称,必填
            string subject = "";
            //付款金额,必填
            string total_fee = "";
            //商品描述,可空
            string body = "";

            if (!string.IsNullOrEmpty(oid))
            {
                log.Info("进入主方法");

                OrderBuss      obll        = new OrderBuss();
                OrderDetail    orderDetail = obll.OrderDetail(oid);
                OrderDetailPay od          = new OrderDetailPay();
                od.OrderDetailsPayInit(oid, orderDetail);
                //商户订单号
                log.Info(" 订单号:" + out_trade_no);
                total_fee = od.Price.ToString();
                log.Info(" 订单金额:" + total_fee);
                //float postPrice = float.Parse(od.Freight.Substring(1));
                // log.Info(" 运费:" + postPrice);

                /** if (postPrice > 0)
                 * {
                 *   this.total_fee = goodPrice.ToString("f2");
                 *   this.subject = od.Description + " ,运费:" + postPrice.ToString("f2");
                 *   log.Info("  合计 有运费的:" + this.subject);
                 * }**/
                subject = od.Description;
                body    = od.Rinfo;
                //  log.Info("  合计:" + this.subject);
            }
            ////////////////////////////////////////////////////////////////////////////////////////////////

            //把请求参数打包成数组
            SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>();

            sParaTemp.Add("service", Config.service);
            sParaTemp.Add("partner", Config.partner);
            sParaTemp.Add("seller_id", Config.seller_id);
            sParaTemp.Add("_input_charset", Config.input_charset.ToLower());
            sParaTemp.Add("payment_type", Config.payment_type);
            sParaTemp.Add("notify_url", Config.notify_url);
            sParaTemp.Add("return_url", Config.return_url);
            sParaTemp.Add("anti_phishing_key", Config.anti_phishing_key);
            sParaTemp.Add("exter_invoke_ip", Config.exter_invoke_ip);
            sParaTemp.Add("out_trade_no", out_trade_no);
            sParaTemp.Add("subject", subject);
            sParaTemp.Add("total_fee", total_fee);
            sParaTemp.Add("body", body);
            //其他业务参数根据在线开发文档,添加参数.文档地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.O9yorI&treeId=62&articleId=103740&docType=1
            //如sParaTemp.Add("参数名","参数值");

            //建立请求
            string sHtmlText = Submit.BuildRequest(sParaTemp, "post", "确认");

            Response.Write(sHtmlText);

            log.Info(" *******************支付宝发送处理结束**************************");
        }
Exemplo n.º 15
0
        // GET: /Alipay/
        //同步通知
        public ActionResult receive()
        {
            log.Info("**********************支付宝回调receive**********************");
            //商户订单号
            string out_trade_no = Request.QueryString["out_trade_no"];
            SortedDictionary <string, string> sPara = GetRequestGet();

            //日志
            log.Info("商户订单号" + out_trade_no + ",参数个数:" + sPara.Count);
            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify    = new Notify();
                bool   verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]);//Request.Form["notify_id"], Request.Form["sign"]
                log.Info("是否支付宝发出的验证:" + verifyResult + "参数sPara:" + sPara.ToString() + "参数sign:" + Request.QueryString["sign"]);
                //日志
                //   Common.Log(out_trade_no + ",回调判断:" + verifyResult, Common.LogLevel.low, "微网站支付宝回调");
                if (verifyResult)//验证成功 verifyResult
                {
                    log.Info("支付宝返回验证成功");
                    //支付宝交易号
                    string trade_no = Request.QueryString["trade_no"];
                    //交易状态
                    string trade_status = Request.QueryString["trade_status"];
                    log.Info("支付宝交易号:" + trade_no + "支付宝交易状态:" + trade_status);
                    OrderBuss obll = new OrderBuss();
                    if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS")
                    {
                        DAO.OrderPay op = obll.GetOrderPay(out_trade_no);
                        if (op != null)
                        {
                            if (op.PayState == "未支付")
                            {
                                op.PayState = "已支付";
                                if (op.PayType == 0)
                                {
                                    op.Bank = "支付宝";
                                }
                                op.Remark = string.Format("{1},由支付宝电子对账单更新{0:yyyy-MM-dd HH:mm:ss},状态为:已支付", DateTime.Now, trade_no);
                                //修改OrderPay
                                log.Info("*********即将修改OrderPay**************");
                                bool r = obll.upDataOrderPay(op);
                                log.Info("orderPay 更新结果:" + r);
                                log.Info("orderPay 更新参数:op.Orderid=" + op.OrderId + "  op.PayState-" + op.PayState + "op.Bank-" + op.Bank + "trade_no-" + trade_no);
                                //支付成功修改订单状态
                                log.Info("*********即将修改Order状态**************");
                                DAO.Order order = obll.GetOrder(out_trade_no);
                                //计算组合支付总金额==订单金额
                                bool r_vali_price = obll.ValidataPayPrice(out_trade_no, order.TotalPrice);
                                log.Info("订单:" + op.OrderId + "金额,支付金额校验--" + r_vali_price);
                                if (r_vali_price)
                                {
                                    bool r_oder = obll.upOrder(out_trade_no);
                                    log.Info("订单:" + op.OrderId + " 修改结果--" + r_oder);
                                }
                            }
                        }
                        else
                        {
                            log.Info("OrderPay is Null");
                        }
                        //打印页面
                        //orderpay 订单支付类型 0 正常订单 1 充值订单
                        if (op.OrderType == 0)
                        {
                            return(Redirect(string.Format("/Order/Detail?oid={0}", out_trade_no)));
                        }
                        else if (op.OrderType == 1)
                        {
                            return(Redirect("/pay/recharge_success.html"));
                        }
                    }
                    else
                    {
                        log.Info("支付宝交易状态未通过");
                    }
                }
                else  //验证失败
                {
                    log.Info("支付宝返回验证失败");
                    Response.Write("验证失败");
                }
            }
            else
            {
                Response.Write("无返回参数");
            }
            log.Info("**********************支付宝回调receive结束**********************");
            return(View());
        }
Exemplo n.º 16
0
        public void ProcessRequest(HttpContext context)
        {
            log.Debug("**********************支付宝回调autoreceive**********************");
            Dictionary <string, string> sPara = GetRequestPost();

            log.Debug("参数个数:" + sPara.Count);
            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify    = new Notify();
                bool   verifyResult = aliNotify.VerifyNotify(sPara, context.Request.Form["sign"]);
                log.Debug("autoreceive是否支付宝发出的验证:" + verifyResult + "参数sPara:" + sPara + "参数sign:" + context.Request.Form["sign"]);

                if (verifyResult)//验证成功
                {
                    log.Debug("autoreceive验证成功");
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码
                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                    //解密(如果是RSA签名需要解密,如果是MD5签名则下面一行清注释掉)
                    sPara = aliNotify.Decrypt(sPara);

                    //XML解析notify_data数据
                    try
                    {
                        XmlDocument xmlDoc = new XmlDocument();
                        xmlDoc.LoadXml(sPara["notify_data"]);
                        //商户订单号
                        string out_trade_no = xmlDoc.SelectSingleNode("/notify/out_trade_no").InnerText;
                        //支付宝交易号
                        string trade_no = xmlDoc.SelectSingleNode("/notify/trade_no").InnerText;

                        string trade_status = xmlDoc.SelectSingleNode("/notify/trade_status").InnerText;
                        log.Debug("autoreceive商户订单号:" + out_trade_no + "支付宝交易号:" + trade_no + "支付宝交易状态:" + trade_status);
                        OrderBuss obll = new OrderBuss();
                        if (trade_status == "TRADE_FINISHED")
                        {
                            //判断该笔订单是否在商户网站中已经做过处理
                            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                            //如果有做过处理,不执行商户的业务程序

                            //注意:
                            //该种交易状态只在两种情况下出现
                            //1、开通了普通即时到账,买家付款成功后。
                            //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。
                            DAO.OrderPay op = obll.GetOrderPay(out_trade_no);
                            if (op.PayState == "未支付")
                            {
                                op.PayState = "已支付";
                                if (op.PayType == 0)
                                {
                                    op.Bank = "支付宝";
                                }
                                op.Remark = string.Format("{1},由支付宝电子对账单更新{0:yyyy-MM-dd HH:mm:ss},状态为:已支付", DateTime.Now, trade_no);
                                //修改OrderPay
                                log.Info("*********即将修改OrderPay**************");
                                bool r = obll.upDataOrderPay(op);
                                log.Info("orderPay 更新结果:" + r);
                                log.Info("orderPay 更新参数:op.Orderid=" + op.OrderId + "  op.PayState-" + op.PayState + "op.Bank-" + op.Bank + "trade_no-" + trade_no);
                                //支付成功修改订单状态
                                log.Info("*********即将修改Order状态**************");
                                DAO.Order order = obll.GetOrder(out_trade_no);
                                //计算组合支付总金额==订单金额
                                bool r_vali_price = obll.ValidataPayPrice(out_trade_no, order.TotalPrice);
                                log.Info("订单:" + op.OrderId + "金额,支付金额校验--" + r_vali_price);
                                if (r_vali_price)
                                {
                                    bool r_oder = obll.upOrder(out_trade_no);
                                    log.Info("订单:" + op.OrderId + " 修改结果--" + r_oder);
                                }
                            }
                            context.Response.Write("success");    //请不要修改或删除
                        }
                        if (trade_status == "TRADE_SUCCESS")
                        {
                            DAO.OrderPay op = obll.GetOrderPay(out_trade_no);
                            //判断该笔订单是否在商户网站中已经做过处理
                            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                            //如果有做过处理,不执行商户的业务程序

                            //注意:
                            //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。
                            if (op.PayState == "未支付")
                            {
                                op.PayState = "已支付";
                                if (op.PayType == 0)
                                {
                                    op.Bank = "支付宝";
                                }
                                op.Remark = string.Format("{1},由支付宝电子对账单更新{0:yyyy-MM-dd HH:mm:ss},状态为:已支付", DateTime.Now, trade_no);
                                //修改OrderPay
                                log.Info("*********即将修改OrderPay**************");
                                bool r = obll.upDataOrderPay(op);
                                log.Info("orderPay 更新结果:" + r);
                                log.Info("orderPay 更新参数:op.Orderid=" + op.OrderId + "  op.PayState-" + op.PayState + "op.Bank-" + op.Bank + "trade_no-" + trade_no);
                                //支付成功修改订单状态
                                log.Info("*********即将修改Order状态**************");
                                DAO.Order order = obll.GetOrder(out_trade_no);
                                //计算组合支付总金额==订单金额
                                bool r_vali_price = obll.ValidataPayPrice(out_trade_no, order.TotalPrice);
                                log.Info("订单:" + op.OrderId + "金额,支付金额校验--" + r_vali_price);
                                if (r_vali_price)
                                {
                                    bool r_oder = obll.upOrder(out_trade_no);
                                    log.Info("订单:" + op.OrderId + " 修改结果--" + r_oder);
                                }
                            }

                            context.Response.Write("success");  //请不要修改或删除
                        }
                        else
                        {
                            context.Response.Write(trade_status);
                        }
                    }
                    catch (Exception exc)
                    {
                        context.Response.Write(exc.ToString());
                        //MJZCake.Utility.Common.Log(exc.Message, MJZCake.Utility.Common.LogLevel.high, "mjz");
                    }



                    //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    context.Response.Write("fail");
                }


                context.Response.End();
            }
        }