Exemplo n.º 1
0
        public ActionResult PayMoney()
        {
            string orderNo     = Request.Form["orderNo"].ToLower();
            string payPassword = Request.Form["payPassword"];

            string key           = HotelCloud.Common.HCRequest.GetString("key");
            string hotelweixinId = key.Split('@')[0];
            string userweixinId  = key.Split('@')[1];

            string edition           = Request.QueryString["edition"];
            string errControllerName = edition == "1"  ?  "ProductA": "Product";

            string mess = string.Empty;
            bool   isOK = ValidateUserPayPassword(hotelweixinId, userweixinId, payPassword, out mess);



            if (isOK == false)
            {
                return(RedirectToAction("ProductErrMsg", errControllerName, new { id = RouteData.Values["id"], errmsg = mess, key = HotelCloud.Common.HCRequest.GetString("key") }));
            }

            DataTable db_member = RechargeCard.GetRechargeMemberInfo(hotelweixinId, userweixinId);
            decimal   balance   = Convert.ToDecimal(db_member.Rows[0]["balance"].ToString());

            decimal payMoney = GetPayOrderMoney(orderNo);

            if (payMoney <= 0)
            {
                return(RedirectToAction("ProductErrMsg", errControllerName, new { id = RouteData.Values["id"], errmsg = "找不到该产品!", key = HotelCloud.Common.HCRequest.GetString("key") }));
            }

            if (balance < payMoney)
            {
                return(RedirectToAction("ProductErrMsg", errControllerName, new { id = RouteData.Values["id"], errmsg = "余额不足!", key = HotelCloud.Common.HCRequest.GetString("key") }));
            }



            RechargeUser rechargeUser = new RechargeUser();

            rechargeUser.SPrice         = -payMoney;
            rechargeUser.MPrice         = rechargeUser.SPrice;
            rechargeUser.IsCardPassword = false;
            rechargeUser.Source         = "pay";
            rechargeUser.AddTime        = DateTime.Now;
            rechargeUser.HotelWeixinId  = hotelweixinId;
            rechargeUser.HotelId        = Convert.ToInt32(RouteData.Values["id"]);
            rechargeUser.UserMobile     = db_member.Rows[0]["mobile"].ToString();
            rechargeUser.PayType        = 1;
            rechargeUser.UserLevel      = db_member.Rows[0]["viptype"].ToString();
            rechargeUser.UserWeixinId   = userweixinId;
            rechargeUser.UserName       = db_member.Rows[0]["name"].ToString();
            rechargeUser.Beforebalance  = balance;
            rechargeUser.Balance        = rechargeUser.Beforebalance - payMoney;

            rechargeUser.OrderNo     = "c" + DateTime.Now.ToString("yyMMddHHmmssfff") + new Random().Next(11, 99);
            rechargeUser.OrderStatus = 1;
            rechargeUser.CardId      = 0;

            rechargeUser.TradeOrderNo = orderNo;


            bool opFlag = false;

            int p_Status = 0;

            using (TransactionScope scop = new TransactionScope())
            {
                int rechargeId = WeiXin.Models.Home.RechargeUser.AddRechargeCard(rechargeUser);
                if (rechargeId > 0)
                {
                    int row = RechargeCard.ReduceRechargeMemberBalance(hotelweixinId, userweixinId, payMoney);
                    if (row > 0)
                    {
                        string operationRecord = string.Format("[储值卡支付]:于{0}支付:{1}", DateTime.Now, payMoney);
                        string payType         = "储值卡支付";

                        //团购预售
                        if (orderNo.Contains("p"))
                        {
                            string tsql = @"update SaleProducts_Orders set OrderStatus=3, Remark=isnull(Remark,'')+@OperationRecord,IsPay=1,PayTime=getdate(),payType=@payType  where  OrderNo=@OrderNO and  IsPay=0 ";
                            p_Status = HotelCloud.SqlServer.SQLHelper.Run_SQL(tsql, HotelCloud.SqlServer.SQLHelper.Open_Conn(System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString.ToString()), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                                { "OrderNO", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = orderNo
                                  } },
                                { "OperationRecord", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = operationRecord
                                  } },
                                { "payType", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = payType
                                  } }
                            });

                            if (p_Status > 0)
                            {
                                //短信发送的用在事物里面有问题
                            }
                        }

                        //餐饮
                        else if (orderNo.Contains("l"))
                        {
                            string tsql   = @"update WeiXin..T_OrderInfo set Status=9,payTime=getdate(),orderPayState=1,orderPayType=@payType  where  orderCode=@OrderNO ";
                            int    Status = HotelCloud.SqlServer.SQLHelper.Run_SQL(tsql, HotelCloud.SqlServer.SQLHelper.Open_Conn(System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString.ToString()), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                                { "OrderNO", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = orderNo
                                  } },
                                { "payType", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = payType
                                  } }
                            });
                        }


                        //超市
                        else if (orderNo.Contains("d"))
                        {
                            string tsql = @"update SupermarketOrder_Levi set OrderStatus = 2,PayStatus = 2,PayTime=getdate(),aliPayAmount=@AliPayAmount,payMethod=@payType  where  OrderId =@OrderNO;INSERT INTO [WeiXin].[dbo].[SupermarketOrderLog_Levi]([OrderId],[Context],[LogType],[CreateUser],[CreateTime]) VALUES(@OrderNO,'订单状态流转为:已付款',1,'用户',GETDATE())";

                            int Status = HotelCloud.SqlServer.SQLHelper.Run_SQL(tsql, HotelCloud.SqlServer.SQLHelper.Open_Conn(System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString.ToString()), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                                { "OrderNO", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = orderNo
                                  } },
                                { "AliPayAmount", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = (payMoney * 100).ToString()
                                  } },
                                { "payType", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = payType
                                  } }
                            });
                        }

                        //酒店
                        else
                        {
                            string tsql = @"update HotelOrder set Remark=isnull(Remark,'')+@OperationRecord,aliPayAmount=@AliPayAmount,aliPayTime=getdate(),tradeStatus='TRADE_FINISHED',state=24,tradeNo=@TradeNo,payMethod=@payType  where  OrderNO=@OrderNO ";

                            int Status = HotelCloud.SqlServer.SQLHelper.Run_SQL(tsql, HotelCloud.SqlServer.SQLHelper.Open_Conn(System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString.ToString()), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                                { "OrderNO", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = orderNo
                                  } },
                                { "TradeNo", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = ""
                                  } },
                                { "AliPayAmount", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = (payMoney * 100).ToString()
                                  } },
                                { "OperationRecord", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = operationRecord
                                  } },
                                { "payType", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = payType
                                  } }
                            });
                        }


                        opFlag = true;
                        scop.Complete();
                    }
                }
            }


            //支付成功
            if (opFlag)
            {
                if (orderNo.Contains("p"))
                {
                    if (p_Status > 0)
                    {
                        SaleProducts_Orders.DoneOrderSuccess(orderNo);
                    }

                    if (edition == "1")
                    {
                        return(RedirectToAction("ProductUserOrderDetail", "productA", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), OrderNo = orderNo }));
                    }

                    else
                    {
                        return(RedirectToAction("ProductUserOrderDetail", "product", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), OrderNo = orderNo }));
                    }
                }

                if (orderNo.Contains("l"))
                {
                    if (edition == "1")
                    {
                        string storeID = HotelCloud.SqlServer.SQLHelper.Get_Value("SELECT  storeID  FROM WeiXin..T_OrderInfo with(nolock)   where  ordercode=@ordercode", HotelCloud.SqlServer.SQLHelper.Open_Conn(System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString.ToString()), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                            { "ordercode", new HotelCloud.SqlServer.DBParam {
                                  ParamValue = orderNo
                              } }
                        });

                        return(RedirectToAction("ViewOrderDetail", "DishOrderA", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderCode = orderNo, storeID = storeID }));
                    }

                    else
                    {
                        return(RedirectToAction("PaySuccess", "DishOrder", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderCode = orderNo }));
                    }
                }


                if (orderNo.Contains("d"))
                {
                    if (edition == "1")
                    {
                        return(RedirectToAction("OrderDetails2", "SupermarketA", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderid = orderNo }));
                    }

                    else
                    {
                        return(RedirectToAction("OrderPay", "Supermarket", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderid = orderNo }));
                    }
                }

                else
                {
                    string orderId = HotelCloud.SqlServer.SQLHelper.Get_Value("SELECT  Id  FROM WeiXin..HotelOrder with(nolock)   where  orderNo=@orderNo", HotelCloud.SqlServer.SQLHelper.Open_Conn(System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString.ToString()), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                        { "orderNo", new HotelCloud.SqlServer.DBParam {
                              ParamValue = orderNo
                          } }
                    });


                    if (edition == "1")
                    {
                        Response.Redirect(string.Format("/UserA/OrderInfo/{0}?key={1}&Id={2}", RouteData.Values["id"], HotelCloud.Common.HCRequest.GetString("key"), orderId));
                        return(View());
                    }


                    else
                    {
                        //return RedirectToAction("resultNotifyPage.aspx", "WeiXinZhiFu", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), code = orderNo, error = "ok" });
                        Response.Redirect(string.Format("/User/OrderInfo/{0}?key={1}&Id={2}", RouteData.Values["id"], HotelCloud.Common.HCRequest.GetString("key"), orderId));
                        return(View());
                    }
                }
            }


            //支付失败以后
            if (orderNo.Contains("l"))
            {
                if (edition == "1")
                {
                    string storeID = HotelCloud.SqlServer.SQLHelper.Get_Value("SELECT  storeID  FROM WeiXin..T_OrderInfo with(nolock)   where  ordercode=@ordercode", HotelCloud.SqlServer.SQLHelper.Open_Conn(System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString.ToString()), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                        { "ordercode", new HotelCloud.SqlServer.DBParam {
                              ParamValue = orderNo
                          } }
                    });
                    return(RedirectToAction("ViewOrderDetail", "DishOrderA", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderCode = orderNo, storeID = storeID }));
                }

                else
                {
                    return(RedirectToAction("PayFail", "DishOrder", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderCode = orderNo }));
                }
            }


            if (orderNo.Contains("d"))
            {
                if (edition == "1")
                {
                    return(RedirectToAction("OrderDetails2", "SupermarketA", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderid = orderNo }));
                }

                else
                {
                    return(RedirectToAction("PayFail", "Supermarket", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderid = orderNo }));
                }
            }


            if (edition == "1")
            {
                return(RedirectToAction("ProductErrMsg", "ProductA", new { id = RouteData.Values["id"], errmsg = "支付失败!", key = HotelCloud.Common.HCRequest.GetString("key") }));
            }

            else
            {
                return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "支付失败!", key = HotelCloud.Common.HCRequest.GetString("key") }));
            }
        }