示例#1
0
 public int createAOrder(DTO.Order dto_PDH, DTO.OrderDetails[] dto_CT, int so_nl)
 {
     try
     {
         if (MessageBox.Show("Bạn có chắc chắn muốn lưu phiếu đặt hàng?", "Xác nhận!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
         {
             DAO.Order        dao_PKH = new DAO.Order();
             int              maphieu = dao_PKH.createAOrder(dto_PDH);
             BUS.OrderDetails bus     = new BUS.OrderDetails();
             for (int i = 0; i < so_nl; i++)
             {
                 bus.addOrderDetails(dto_CT[i], maphieu);
             }
             MessageBox.Show("Lưu phiếu đặt hàng thành công!", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Information);
             return(1);
         }
         return(0);
     }
     catch (Exception e)
     {
         MessageBox.Show("Thêm phiếu đặt thất bại!", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Information);
         throw e;
         return(0);
     }
 }
示例#2
0
        /// <summary>
        /// 订单详情
        /// </summary>
        /// <param name="uid"></param>
        /// <param name="orderNum"></param>
        /// <returns></returns>
        public OrderDetail OrderDetail(string uid, string orderNum)
        {
            OrderDetail order    = new model.OrderDetail();
            string      orderSql = " select * from [Order] where Uid={0} and OrderId={1}";

            DAO.Order o     = db.Database.SqlQuery <DAO.Order>(string.Format(orderSql, uid, orderNum)).FirstOrDefault();
            string    opSql = " SELECT *  FROM [OrderProList] where [OrderId] ={0}";
            List <DAO.OrderProList> opList = db.Database.SqlQuery <DAO.OrderProList>(string.Format(opSql, orderNum)).ToList();
            string imgSql = "select * from imgstock where partID in (select ProductID from orderProList where orderID={0})";
            List <DAO.ImgStock> imgList = db.Database.SqlQuery <DAO.ImgStock>(string.Format(imgSql, orderNum)).ToList();
            string expSql = "select * from ExpRecord where orderNum ='{0}'";

            DAO.ExpRecord ex  = db.Database.SqlQuery <DAO.ExpRecord>(string.Format(expSql, orderNum)).FirstOrDefault();
            int?          exp = 0;

            if (ex != null)
            {
                exp = ex.Exp;
            }
            order.order    = o;
            order.opList   = opList;
            order.pimgList = imgList;
            order.exp      = exp == null ? 0 : exp;
            return(order);
        }
示例#3
0
        public DAO.Order getAddress(string uid)
        {
            string ordersql = "select * from [Order] where Uid={0}";

            DAO.Order carder = db.Database.SqlQuery <DAO.Order>(string.Format(ordersql, Convert.ToInt32(uid))).FirstOrDefault();
            return(carder);
        }
示例#4
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));
            }
        }
示例#5
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)));
     }
 }
示例#6
0
        public OrderDetail OrderDetail(string orderNum)
        {
            OrderDetail order    = new model.OrderDetail();
            string      orderSql = " select * from [Order] where  OrderId={0}";

            DAO.Order o     = db.Database.SqlQuery <DAO.Order>(string.Format(orderSql, orderNum)).FirstOrDefault();
            string    opSql = " SELECT *  FROM [OrderProList] where [OrderId] ={0}";
            List <DAO.OrderProList> opList = db.Database.SqlQuery <DAO.OrderProList>(string.Format(opSql, orderNum)).ToList();

            order.order  = o;
            order.opList = opList;
            return(order);
        }
示例#7
0
        /// <summary>
        /// 更新状态
        /// </summary>
        /// <param name="Orede"></param>
        /// <returns></returns>
        public bool upt(DAO.Order Orede)
        {
            string sql  = "UPDATE [Order] SET [OrderStatus]='已处理' where [orderID]='{0}'";
            int    date = db.Database.ExecuteSqlCommand(string.Format(sql, Orede.OrderId));

            if (date > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#8
0
        /// <summary>
        /// 修改地址
        /// </summary>
        /// <param name="orders"></param>
        /// <returns></returns>

        public bool updatedz(DAO.Order orders)
        {
            string sql   = "UPDATE [Order] SET [City] ='{0}',[Consignee]='{1}',[CellPhone]='{2}',[Prov]='{3}',[Address]='{4}',[Area]='{5}' WHERE OrderId='{6}'";
            int    date  = db.Database.ExecuteSqlCommand(string.Format(sql, orders.City, orders.Consignee, orders.CellPhone, orders.Prov, orders.Address, orders.Area, orders.OrderId));
            string sqlc  = "UPDATE [Addship] SET [scity] ='{0}',[province]='{1}',[region]='{2}',[address]='{3}',[name]='{4}',[phone]='{5}' WHERE UID='{6}'";
            int    datec = db.Database.ExecuteSqlCommand(string.Format(sqlc, orders.City, orders.Prov, orders.Area, orders.Address, orders.Consignee, orders.CellPhone, orders.Uid));

            if (date > 0 && datec > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#9
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();
            }
        }
示例#10
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());
        }
示例#11
0
 public DataTable searchOrder_byDate(DateTime tungay, DateTime denngay)
 {
     DAO.Order dao = new DAO.Order();
     return(dao.searchOrder_byDate(tungay, denngay));
 }
示例#12
0
 public DAO.Order GetOrder(string orderNum)
 {
     DAO.Order o = db.Order.Where(m => m.OrderId == orderNum).FirstOrDefault();
     return(o);
 }
示例#13
0
 public DataTable searchOrder_byNumber(string ma)
 {
     DAO.Order dao = new DAO.Order();
     return(dao.searchOrder_byNumber(ma));
 }
示例#14
0
 public DataTable loadOrder()
 {
     DAO.Order dao = new DAO.Order();
     return(dao.loadOrder());
 }
示例#15
0
        /// <summary>
        /// 提交订单
        /// </summary>
        /// <param name="shopList">商品列表</param>
        /// <param name="sendinfo">配送信息</param>
        /// <param name="uid">当前用户</param>
        /// <param name="ratio">当前用户折扣</param>
        /// <param name="orderPrice">订单金额</param>
        /// <param name="shopListTotle">商品列表总金额</param>
        /// <returns>订单号</returns>
        public string AddOrder(List <Shop> shopList, SendInfo sendinfo, string uid, decimal ratio, decimal orderPrice, decimal shopListTotle)
        {
            PartExtendBll pbll   = new PartExtendBll();
            ProductBll    proBll = new ProductBll();
            MemberBLL     memBll = new MemberBLL();

            DAO.MemberBase user  = memBll.GetUserByID(uid);
            DAO.Order      order = new DAO.Order();
            order.OrderId = CommonUtils.OrderUtil.NewOrderId;
            if (order != null)
            {
                order.Uid       = user.ID;
                order.UserName  = user.LoginName;
                order.UserPhone = user.Mobile;
            }
            order.OrderSource = "0";
            order.OrderTime   = DateTime.Now;
            order.OrderStatus = "未处理";//订单初始状态
            order.Consignee   = sendinfo.Name;
            order.Address     = sendinfo.Address;
            order.CellPhone   = sendinfo.Phone;
            order.PayStatus   = "未支付";
            order.Payment     = "";
            order.Remarks     = "";
            order.Ratio       = ratio;
            decimal disAmout = shopList.Where(h => h.Type == "-1").Sum(h => (decimal.Parse(h.Price)));

            order.DiscountAmount  = (1 - ratio) * disAmout;
            order.ShippingCost    = 0;
            order.TotalPrice      = orderPrice;
            order.SearchTag       = "";
            order.OperatorRemarks = "";
            order.OrderType       = "0";
            order.OrderFrom       = 0;//网站
            order.Prov            = sendinfo.Prov;
            order.City            = sendinfo.City;
            order.Area            = sendinfo.Area;

            db.Order.Add(order);
            DAO.Addship addShip = new DAO.Addship();
            addShip = isAddressByUid(uid);

            if (addShip != null)
            {
                upAddShip(sendinfo.Name, uid, sendinfo.City, sendinfo.Prov, sendinfo.Area, sendinfo.Address, sendinfo.Phone);
            }
            else
            {
                DAO.Addship addShipS = new DAO.Addship();
                addShipS.name     = sendinfo.Name;
                addShipS.province = sendinfo.Prov;
                addShipS.scity    = sendinfo.City;
                addShipS.region   = sendinfo.Area;
                addShipS.address  = sendinfo.Address;
                addShipS.UID      = Convert.ToInt32(uid);
                addShipS.phone    = sendinfo.Phone;
                db.Addship.Add(addShipS);
                db.SaveChanges();
            }


            //db.SaveChanges();
            foreach (Shop item in shopList)
            {
                CarProductDetail m;
                int i   = -1;
                int pid = -1;
                if (int.TryParse(item.ID, out pid))
                {
                    if (!string.IsNullOrEmpty(item.Attrs) && int.TryParse(item.Attrs, out i))
                    {
                        m = proBll.GetProDetail(pid, i, item.Type);
                    }
                    else
                    {
                        m = proBll.GetProDetail(pid, -1, item.Type);
                    }
                    if (m != null)
                    {
                        m.Qty      = int.Parse(item.Qty);
                        m.lastAttr = item.Attrs;
                        DAO.OrderProList pro = new DAO.OrderProList();
                        pro.OrderId     = order.OrderId;
                        pro.ProductID   = m.proDetail.ID;
                        pro.ProductName = m.proDetail.PartName;
                        pro.SupplyNo    = m.proDetail.PartSuppyNo;
                        pro.Num         = m.Qty;
                        pro.Price       = m.proDetail.Price;
                        pro.InputTime   = DateTime.Now;
                        pro.PType       = m.proDetail.CategoryID;
                        pro.AttrID      = i;
                        pro.IsFlag      = int.Parse(item.Type);  //活动号
                        pro.activeName  = m.activeM == null ? "" : m.activeM.Name;
                        StringBuilder sb = new StringBuilder("");
                        foreach (var ext in m.partExt)
                        {
                            sb.Append("|" + ext.AttrName + ":" + ext.AttrValue + "|");
                        }
                        pro.AttrDecribe = sb.ToString();
                        db.OrderProList.Add(pro);
                        opActiveStock(pro.IsFlag, pro.ProductID, pro.AttrID, pro.Num);

                        OrderBuss obll   = new OrderBuss();
                        int       number = Convert.ToInt32(obll.getPartStock(m.proDetail.ID).StockNUM) - 1;

                        obll.upPartStock(m.proDetail.ID, number);

                        //db.SaveChanges();
                    }
                }
            }
            int addResult = db.SaveChanges();//db.SaveChanges();

            if (addResult > 0)
            {
                return(order.OrderId.ToString());
            }
            else
            {
                return(null);
            }
        }
示例#16
0
 public ActionResult PayOrder(PayOrderModel o)
 {
     try
     {
         if (Session["memberID"] != null)
         {
             int uid = Convert.ToInt32(Session["memberID"]);
             List <DAO.OrderPay> ol       = new List <DAO.OrderPay>();
             DAO.Order           order    = obbll.GetOrder(o.oid);
             decimal             totle    = order.TotalPrice;
             decimal             dis      = 0;
             decimal             payprice = 0;
             if (!string.IsNullOrEmpty(o.coupon))//复合付款有优惠券
             {
                 //验证优惠券
                 DAO.Voucher voucher = vbll.GetVoucherModel(uid, o.coupon, 0);
                 if (voucher == null)
                 {
                     return(Json(new { r = "error", msg = "优惠券验证失败!" }));
                 }
                 else
                 {
                     dis = voucher.Price;//优惠券优惠金额
                     DAO.OrderPay io = new DAO.OrderPay();
                     io.Amount      = dis;
                     io.Bank        = "优惠券";
                     io.OrderId     = o.oid;
                     io.OrderType   = o.ordertype;
                     io.PayState    = "未支付";
                     io.PayType     = 1;//直接支付1优惠券
                     io.RecordState = 1;
                     io.Uid         = Convert.ToInt32(Session["memberID"]);
                     io.Remark      = voucher.VoucherNumber;
                     ol.Add(io);
                 }
             }
             payprice = totle - dis;
             if (payprice > 0)
             {
                 DAO.OrderPay io = new DAO.OrderPay();
                 io.Amount = payprice;
                 if (o.paytype == "alipay")
                 {
                     io.Bank = "支付宝";
                 }
                 if (o.paytype == "weixin")
                 {
                     io.Bank = "微信";
                 }
                 io.OrderId     = o.oid;
                 io.OrderType   = o.ordertype;
                 io.PayState    = "未支付";
                 io.PayType     = 0;//直接支付1优惠券
                 io.RecordState = 1;
                 io.Uid         = Convert.ToInt32(Session["memberID"]);
                 ol.Add(io);
             }
             bool r = obbll.AddOrderPay(o.oid, ol);
             return(Json(new { r = "ok" }));
         }
         else
         {
             return(Json(new { r = "nologin" }));
         }
     }
     catch (Exception e)
     {
         return(Json(new { r = "error", msg = "异常:" + e.Message }));
     }
 }
示例#17
0
        public override void ProcessNotify()
        {
            WxPayData notifyData = GetNotifyData();
            WxPayData res        = new WxPayData();

            if (notifyData.GetValue("return_code").ToString() == "SUCCESS")
            {
                log.Info("return_code:SUCCESS");
                bool result = notifyData.GetValue("result_code").ToString() == "SUCCESS"?true:false;
                // out_trade_no
                if (result)
                {
                    string out_trade_no = notifyData.GetValue("out_trade_no").ToString();
                    log.Info("获得订单号:" + out_trade_no);
                    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, out_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-" + out_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);
                            }
                        }
                        res.SetValue("return_code", "SUCCESS");
                        res.SetValue("return_msg", "OK");
                        log.Info("return_code :SUCCESS");
                        page.Response.Write(res.ToXml());
                        page.Response.End();
                    }
                    else
                    {
                        res.SetValue("result_code", "FAIL");
                        res.SetValue("return_msg", "OrderPay is Null");
                        log.Error("支付结果失败result_code :FAil ==>OrderPay is Null");
                        page.Response.Write(res.ToXml());
                        page.Response.End();
                    }
                }
                else
                {
                    res.SetValue("result_code", "FAIL");
                    res.SetValue("return_msg", "result_code fail");
                    log.Error("支付结果失败result_code :FAil ==>" + res.ToXml());
                    page.Response.Write(res.ToXml());
                    page.Response.End();
                }
            }
            else
            {
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "retrun_code fail");
                log.Error("return_code :FAil ==>" + res.ToXml());
                page.Response.Write(res.ToXml());
                page.Response.End();
            }

            /**
             * //检查支付结果中transaction_id是否存在
             * if (!notifyData.IsSet("transaction_id"))
             * {
             *    //若transaction_id不存在,则立即返回结果给微信支付后台
             *    WxPayData res = new WxPayData();
             *    res.SetValue("return_code", "FAIL");
             *    res.SetValue("return_msg", "支付结果中微信订单号不存在");
             *    Log.Error("The Pay result is error : " + res.ToXml());
             *    page.Response.Write(res.ToXml());
             *    page.Response.End();
             * }
             *
             * string transaction_id = notifyData.GetValue("transaction_id").ToString();
             *
             * //查询订单,判断订单真实性
             * if (!QueryOrder(transaction_id))
             * {
             *    //若订单查询失败,则立即返回结果给微信支付后台
             *    WxPayData res = new WxPayData();
             *    res.SetValue("return_code", "FAIL");
             *    res.SetValue("return_msg", "订单查询失败");
             *    Log.Error("Order query failure : " + res.ToXml());
             *    page.Response.Write(res.ToXml());
             *    page.Response.End();
             * }
             * //查询订单成功
             * else
             * {
             *    WxPayData res = new WxPayData();
             *    res.SetValue("return_code", "SUCCESS");
             *    res.SetValue("return_msg", "OK");
             *    Log.Info("order query success : " + res.ToXml());
             *    page.Response.Write(res.ToXml());
             *    page.Response.End();
             * }*****/
        }
示例#18
0
 public void cancelOrder(int maphieu)
 {
     DAO.Order dao = new DAO.Order();
     dao.cancelOrder(maphieu);
 }
示例#19
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());
        }