コード例 #1
0
        /// <summary>
        /// 取消订单后,金额处理
        /// </summary>
        /// <param name="order"></param>
        public bool OrderCancelDoMoney(OrderInfo order)
        {
            var user = UserInfoOper.Instance.GetById((int)order.userId);

            user.userBalance += order.useBalance + order.payMoney;
            user.coupon      += order.useCoupon;
            UserInfoOper.Instance.Update(user);
            UserPay up = new UserPay();

            up.type       = 6;
            up.money      = order.useBalance + order.payMoney;
            up.userId     = order.userId;
            up.createTime = DateTime.Now;
            UserPayOper.Instance.Add(up);
            if (order.useCoupon > 0)
            {
                UserPay up2 = new UserPay();
                up2.type       = 7;
                up2.money      = order.useCoupon;
                up2.userId     = order.userId;
                up2.createTime = DateTime.Now;
                UserPayOper.Instance.Add(up2);
            }
            return(true);
        }
コード例 #2
0
ファイル: UserPayOper.cs プロジェクト: hlxaaa/TakeAway
        /// <summary>
        /// add
        /// </summary>
        /// <param name="UserPay"></param>
        /// <returns></returns>
        public int Add(UserPay model)
        {
            var str  = GetInsertStr(model) + " select @@identity";
            var dict = GetParameters(model);

            return(Convert.ToInt32(SqlHelperHere.ExecuteScalar(str, dict)));
        }
コード例 #3
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[UsersPay]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            UserPay UserPay = new UserPay();

            UserPay = JsonToObject.ConvertJsonToModel(UserPay, json);
            //获取用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == UserPay.Token);

            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                DataObj.OutError("2006");
                return;
            }
            if (baseUsers.MiBao != 1)//未设置支付密码
            {
                DataObj.OutError("2008");
                return;
            }
            UserPay = Entity.UserPay.FirstOrDefault(n => n.UId == baseUsers.Id && n.PId == UserPay.PId);
            if (UserPay == null)
            {
                DataObj.OutError("1001");
                return;
            }
            DataObj.Data = UserPay.OutJson();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
コード例 #4
0
 /// <summary>
 /// 添加一条充值记录
 /// </summary>
 /// <param name="up"></param>
 /// <returns></returns>
 public bool AddUserPay(UserPay up)
 {
     using (ChatEntities db = new ChatEntities())
     {
         db.UserPay.Add(up);
         return(db.SaveChanges() > 0);
     }
 }
コード例 #5
0
ファイル: UserPayOper.cs プロジェクト: hlxaaa/TakeAway
        /// <summary>
        /// update
        /// </summary>
        /// <param name="UserPay"></param>
        /// <returns></returns>
        public void Update(UserPay model)
        {
            //CacheHelper.LockCache("UserPay");
            var str  = GetUpdateStr(model);
            var dict = GetParameters(model);

            SqlHelperHere.ExcuteNon(str, dict);
            //CacheHelper.ReleaseLock("UserPay");
        }
コード例 #6
0
 /// <summary>
 /// 删除当前用户的消费记录
 /// </summary>
 /// <param name="up"></param>
 /// <returns></returns>
 public bool DeleteUserPay(UserPay up)
 {
     using (ChatEntities db = new ChatEntities())
     {
         UserPay ups = db.UserPay.Find(up.ID);
         db.UserPay.Remove(ups);
         return(db.SaveChanges() > 0);
     }
 }
コード例 #7
0
        public void Add(Users Users, int[] PId, double[] Cost)
        {
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Id == Users.Id && n.Agent == BasicAgent.Id);
            bool  Check     = true;

            if (baseUsers != null)
            {
                Users.Cash0 = Users.Cash0 / 1000;
                if (Users.Cash0 >= BasicSet.AgentCash0 && Users.ECash0 >= BasicSet.AgentECash0 && Users.Cash1 >= BasicSet.AgentCash1 && Users.ECash1 >= BasicSet.AgentECash1)
                {
                    baseUsers.Cash0  = Users.Cash0;
                    baseUsers.ECash0 = Users.ECash0;
                    baseUsers.Cash1  = Users.Cash1;
                    baseUsers.ECash1 = Users.ECash1;
                    baseUsers.State  = 1;
                }
                else
                {
                    Check = false;
                }
                for (int i = 0; i < PId.Length; i++)
                {
                    int       pid  = PId[i];
                    double    cost = Cost[i] / 1000;
                    PayConfig PC   = Entity.PayConfig.FirstOrDefault(n => n.Id == pid);
                    if (PC == null)
                    {
                        Check = false;
                    }
                    if (cost >= PC.CostAgent)
                    {
                        UserPay UserPay = new UserPay();
                        UserPay.UId  = baseUsers.Id;
                        UserPay.PId  = pid;
                        UserPay.Cost = cost;
                        Entity.UserPay.AddObject(UserPay);
                    }
                    else
                    {
                        Check = false;
                    }
                }
            }
            //Entity.UserPayChange.AddObject(UserPayChange);
            if (Check)
            {
                Entity.SaveChanges();
                BaseRedirect();
            }
            else
            {
                Response.Redirect("/Agent/home/error.html?IsAjax=" + Request["IsAjax"] + "&msg=费率设置有误~");
            }
        }
コード例 #8
0
 /// <summary>
 /// 修改用户的一条消费记录
 /// </summary>
 /// <param name="up"></param>
 /// <returns></returns>
 public bool UpdateUserPay(UserPay up)
 {
     using (ChatEntities db = new ChatEntities())
     {
         UserPay userpay = db.UserPay.SingleOrDefault(u => u.ID == up.ID);
         userpay.ID       = up.ID;
         userpay.UserID   = up.UserID;
         userpay.PayMoney = up.PayMoney;
         userpay.PayTime  = up.PayTime;
         userpay.Type     = up.Type;
         return(db.SaveChanges() > 0);
     }
 }
コード例 #9
0
ファイル: UserPayOper.cs プロジェクト: hlxaaa/TakeAway
        /// <summary>
        /// 插入
        /// </summary>
        /// <param name="userpay"></param>
        /// <returns>是否成功</returns>
        public string GetInsertStr(UserPay userpay)
        {
            StringBuilder part1 = new StringBuilder();
            StringBuilder part2 = new StringBuilder();

            if (userpay.type != null)
            {
                part1.Append("type,");
                part2.Append("@type,");
            }
            if (userpay.money != null)
            {
                part1.Append("money,");
                part2.Append("@money,");
            }
            if (userpay.status != null)
            {
                part1.Append("status,");
                part2.Append("@status,");
            }
            if (userpay.userId != null)
            {
                part1.Append("userId,");
                part2.Append("@userId,");
            }
            if (userpay.createTime != null)
            {
                part1.Append("createTime,");
                part2.Append("@createTime,");
            }
            if (userpay.takeType != null)
            {
                part1.Append("takeType,");
                part2.Append("@takeType,");
            }
            if (userpay.takeAccount != null)
            {
                part1.Append("takeAccount,");
                part2.Append("@takeAccount,");
            }
            if (userpay.outTradeNo != null)
            {
                part1.Append("outTradeNo,");
                part2.Append("@outTradeNo,");
            }
            StringBuilder sql = new StringBuilder();

            sql.Append("insert into userpay(").Append(part1.ToString().Remove(part1.Length - 1)).Append(") values (").Append(part2.ToString().Remove(part2.Length - 1)).Append(")");
            return(sql.ToString());
        }
コード例 #10
0
ファイル: UserController.cs プロジェクト: hlxaaa/TakeAway
        public HttpResponseMessage TakeCash(UserReq req)
        {
            var tokenStr = req.Token;
            var userId   = Convert.ToInt32(req.userId);

            Token token = CacheHelper.GetUserToken(tokenStr);

            if (token == null)
            {
                return(ControllerHelper.Instance.JsonResult(400, "token失效"));
            }
            if (token.Payload.UserID != userId)
            {
                return(ControllerHelper.Instance.JsonResult(400, "token错误"));
            }

            var takeType    = req.takeType;
            var takeAccount = req.takeAccount;
            var money       = Convert.ToDecimal(req.money);

            var user = UserInfoOper.Instance.GetById(userId);

            if (money > user.userBalance)
            {
                return(ControllerHelper.Instance.JsonResult(500, "超过现有的余额"));
            }
            var userHere = new UserInfo();

            userHere.id          = user.id;
            userHere.userBalance = user.userBalance - money;
            UserInfoOper.Instance.Update(userHere);

            UserPay up = new UserPay();

            up.type        = 99;
            up.money       = money;
            up.userId      = userId;
            up.status      = false;
            up.createTime  = DateTime.Now;
            up.takeType    = takeType;
            up.takeAccount = takeAccount;
            UserPayOper.Instance.Add(up);

            return(ControllerHelper.Instance.JsonResult(200, "1-3个工作日提现成功"));
        }
コード例 #11
0
ファイル: PayDao.cs プロジェクト: zhangbo27/bbsmax
 public override UserPay GetUserPay(string orderNo)
 {
     using (SqlQuery query = new SqlQuery())
     {
         query.CommandType = CommandType.Text;
         query.CommandText = "SELECT * FROM bx_Pay WHERE OrderNo=@OrderNo";
         query.CreateParameter <string>("@OrderNo", orderNo, SqlDbType.NVarChar, 200);
         using (XSqlDataReader reader = query.ExecuteReader())
         {
             UserPay usertype = null;
             while (reader.Next)
             {
                 usertype = new UserPay(reader);
             }
             return(usertype);
         }
     }
 }
コード例 #12
0
ファイル: PayDao.cs プロジェクト: huchao007/bbsmax
 public override UserPay GetUserPay(string orderNo)
 {
     using (SqlQuery query = new SqlQuery())
     {
         query.CommandType = CommandType.Text;
         query.CommandText = "SELECT * FROM bx_Pay WHERE OrderNo=@OrderNo";
         query.CreateParameter<string>("@OrderNo", orderNo, SqlDbType.NVarChar, 200);
         using (XSqlDataReader reader = query.ExecuteReader())
         {
             UserPay usertype = null;
             while (reader.Next)
             {
                 usertype = new UserPay(reader);
             }
             return usertype;
         }
     }
 }
コード例 #13
0
ファイル: UserPayOper.cs プロジェクト: hlxaaa/TakeAway
        /// 获取参数
        /// </summary>
        /// <param name="userpay"></param>
        /// <returns></returns>
        public Dictionary <string, string> GetParameters(UserPay userpay)
        {
            Dictionary <string, string> dict = new Dictionary <string, string>();

            if (userpay.id != null)
            {
                dict.Add("@id", userpay.id.ToString());
            }
            if (userpay.type != null)
            {
                dict.Add("@type", userpay.type.ToString());
            }
            if (userpay.money != null)
            {
                dict.Add("@money", userpay.money.ToString());
            }
            if (userpay.status != null)
            {
                dict.Add("@status", userpay.status.ToString());
            }
            if (userpay.userId != null)
            {
                dict.Add("@userId", userpay.userId.ToString());
            }
            if (userpay.createTime != null)
            {
                dict.Add("@createTime", userpay.createTime.ToString());
            }
            if (userpay.takeType != null)
            {
                dict.Add("@takeType", userpay.takeType.ToString());
            }
            if (userpay.takeAccount != null)
            {
                dict.Add("@takeAccount", userpay.takeAccount.ToString());
            }
            if (userpay.outTradeNo != null)
            {
                dict.Add("@outTradeNo", userpay.outTradeNo.ToString());
            }

            return(dict);
        }
コード例 #14
0
ファイル: UserPayOper.cs プロジェクト: hlxaaa/TakeAway
        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="userpay"></param>
        /// <returns>是否成功</returns>
        public string GetUpdateStr(UserPay userpay)
        {
            StringBuilder part1 = new StringBuilder();

            part1.Append("update userpay set ");
            if (userpay.type != null)
            {
                part1.Append("type = @type,");
            }
            if (userpay.money != null)
            {
                part1.Append("money = @money,");
            }
            if (userpay.status != null)
            {
                part1.Append("status = @status,");
            }
            if (userpay.userId != null)
            {
                part1.Append("userId = @userId,");
            }
            if (userpay.createTime != null)
            {
                part1.Append("createTime = @createTime,");
            }
            if (userpay.takeType != null)
            {
                part1.Append("takeType = @takeType,");
            }
            if (userpay.takeAccount != null)
            {
                part1.Append("takeAccount = @takeAccount,");
            }
            if (userpay.outTradeNo != null)
            {
                part1.Append("outTradeNo = @outTradeNo,");
            }
            int n = part1.ToString().LastIndexOf(",");

            part1.Remove(n, 1);
            part1.Append(" where id= @id  ");
            return(part1.ToString());
        }
コード例 #15
0
        public ActionResult Index(UserPay UserPay)
        {
            Users Users = Entity.Users.FirstOrNew(n => n.Id == UserPay.UId);

            if (Users == null)
            {
                ViewBag.ErrorMsg = "查询的商户不存在";
                return(View("Error"));
            }
            if (!IsBelongToAgent(Users.Agent))
            {
                ViewBag.ErrorMsg = "只能查询当前用户下属代理的商户";
                return(View("Error"));
            }
            ViewBag.UserPayList   = Entity.UserPay.Where(n => n.UId == UserPay.UId).ToList();
            ViewBag.PayConfigList = Entity.PayConfig.Where(n => n.State == 1).ToList();
            ViewBag.Users         = Users;
            ViewBag.SysAgent      = Entity.SysAgent.FirstOrNew(n => n.Id == Users.Agent);
            return(View());
        }
コード例 #16
0
 /// <summary>
 /// 支付订单,添加收支明细
 /// </summary>
 /// <param name="order"></param>
 /// <returns></returns>
 public bool PayOrderRecord(OrderInfo order)
 {
     if (order.useBalance > 0)
     {
         UserPay up = new UserPay();
         up.type       = 2;
         up.money      = order.useBalance;
         up.createTime = DateTime.Now;
         up.userId     = order.userId;
         UserPayOper.Instance.Add(up);
     }
     if (order.useCoupon > 0)
     {
         UserPay up = new UserPay();
         up.type       = 3;
         up.money      = order.useCoupon;
         up.createTime = DateTime.Now;
         up.userId     = order.userId;
         UserPayOper.Instance.Add(up);
     }
     return(true);
 }
コード例 #17
0
ファイル: UserPayOper.cs プロジェクト: hlxaaa/TakeAway
        /// <summary>
        /// 押金退回用户余额,并添加记录
        /// </summary>
        public void DepositBackRecord(OrderInfo order)
        {
            var user = UserInfoOper.Instance.GetById((int)order.userId);

            user.userBalance += order.deposit;
            var userHere = new UserInfo
            {
                id          = user.id,
                userBalance = user.userBalance
            };

            UserInfoOper.Instance.Update(userHere);
            UserPay up = new UserPay
            {
                userId     = order.userId,
                type       = 5,
                money      = order.deposit,
                createTime = DateTime.Now
            };

            Add(up);//收支明细-押金退回
        }
コード例 #18
0
ファイル: UserPayOper.cs プロジェクト: hlxaaa/TakeAway
 /// <summary>
 /// 支付成功的时候。添加收支明细  up.type 2余额支付  3礼金券支付
 /// </summary>
 /// <param name="order"></param>
 public void payOrderAddRecord(OrderInfo order)
 {
     if (order.useBalance > 0)
     {
         UserPay up = new UserPay
         {
             type       = 2,
             money      = order.useBalance,
             userId     = order.userId,
             createTime = DateTime.Now
         };
         Add(up);
     }
     if (order.useCoupon > 0)
     {
         UserPay up = new UserPay();
         up.type       = 3;
         up.money      = order.useCoupon;
         up.userId     = order.userId;
         up.createTime = DateTime.Now;
         Add(up);
     }
 }
コード例 #19
0
        public ActionResult Save(UserPayChange UserPayChange, int[] PId, double[] Cost)
        {
            Users baseUsers = null;

            if (BasicAgent.Tier == 1)
            {
                baseUsers = Entity.Users.FirstOrDefault(n => n.Id == UserPayChange.UId);
            }
            else
            {
                baseUsers = Entity.Users.FirstOrDefault(n => n.Id == UserPayChange.UId && n.Agent == BasicAgent.Id);
            }
            if (!IsBelongToAgent(baseUsers.Agent))
            {
                ViewBag.ErrorMsg = AgentLanguage.Surmount;
                return(View("Error"));
            }
            int UPC = Entity.UserPayChange.Count(n => n.UId == baseUsers.Id && n.State == 1);

            if (UPC > 0)
            {
                //Response.Redirect("/Agent/home/error.html?IsAjax=" + Request["IsAjax"] + "&msg=当前用户有未处理完成申请,请不要重复申请!");
                ViewBag.ErrorMsg = "当前用户有未处理完成申请,请不要重复申请!";
                return(View("Error"));
            }
            else
            {
                bool Check = true;
                if (baseUsers != null)
                {
                    UserPayChange.CashNew0 = UserPayChange.CashNew0 / 1000;
                    UserPayChange.CashNew1 = UserPayChange.CashNew1 / 1000;
                    if (UserPayChange.CashNew0 < BasicSet.AgentCash0 || UserPayChange.ECashNew0 < BasicSet.AgentECash0 || UserPayChange.CashNew1 < BasicSet.AgentCash1 || UserPayChange.ECashNew1 < BasicSet.AgentECash1)
                    {
                        Check = false;
                    }
                    UserPayChange         = Request.ConvertRequestToModel <UserPayChange>(UserPayChange, UserPayChange);
                    UserPayChange.AddTime = DateTime.Now;
                    UserPayChange.SId     = BasicAgent.Id;
                    UserPayChange.SAId    = AdminUser.Id;
                    UserPayChange.State   = 1;
                    UserPayChange.Cash0   = baseUsers.Cash0;
                    UserPayChange.ECash0  = baseUsers.ECash0;
                    UserPayChange.Cash1   = baseUsers.Cash1;
                    UserPayChange.ECash1  = baseUsers.ECash1;
                    Entity.UserPayChange.AddObject(UserPayChange);
                    Entity.SaveChanges();
                    int upcId = UserPayChange.Id;
                    for (int i = 0; i < PId.Length; i++)
                    {
                        int       pid  = PId[i];
                        double    cost = Cost[i] / 1000;
                        PayConfig PC   = Entity.PayConfig.FirstOrDefault(n => n.Id == pid);
                        if (PC == null)
                        {
                            Check = false;
                        }
                        if (cost >= PC.CostAgent)
                        {
                            UserPayTemp UserPay = new UserPayTemp();
                            UserPay     UP      = Entity.UserPay.FirstOrNew(n => n.PId == PC.Id);
                            UserPay.UPCId = upcId;
                            UserPay.UId   = baseUsers.Id;
                            UserPay.PId   = pid;
                            UserPay.Cost  = cost;
                            UserPay.ACost = UP.Cost;
                            Entity.UserPayTemp.AddObject(UserPay);
                        }
                        else
                        {
                            Check = false;
                        }
                    }
                }
                //Entity.UserPayChange.AddObject(UserPayChange);
                if (Check)
                {
                    Entity.SaveChanges();
                    return(this.View("ReloadFrame"));
                    //BaseRedirect();
                }
                else
                {
                    Entity.UserPayChange.DeleteObject(UserPayChange);
                    Entity.SaveChanges();
                    //Response.Redirect("/Agent/home/error.html?IsAjax=" + Request["IsAjax"] + "&msg=费率设置有误~");
                    ViewBag.ErrorMsg = "费率设置有误!";
                    return(View("Error"));
                }
            }
        }
コード例 #20
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[OrderTransfer]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            OrderTransfer OrderTransfer = new OrderTransfer();

            OrderTransfer = JsonToObject.ConvertJsonToModel(OrderTransfer, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            string     Tag        = "Transfer";
            SysControl SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == Tag);
            SysControl syscontrol = SysControl.ChkState();

            if (syscontrol.State != 1)
            {
                DataObj.OutError("1005");
                return;
            }

            //获取用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == OrderTransfer.Token);

            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                DataObj.OutError("2006");
                return;
            }
            if (baseUsers.MiBao != 1)//未设置支付密码
            {
                DataObj.OutError("2008");
                return;
            }

            if (baseUsers.UserName == OrderTransfer.ToUserName)//不能给自己转帐
            {
                DataObj.OutError("6031");
                return;
            }
            if (baseUsers.Amount < OrderTransfer.PayMoney)//余额不足
            {
                DataObj.OutError("6001");
                return;
            }

            //获取收款用户信息
            Users ToUsers = Entity.Users.FirstOrDefault(n => n.UserName == OrderTransfer.ToUserName);

            if (ToUsers == null)//用户不存在
            {
                DataObj.OutError("6004");
                return;
            }
            if (ToUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("6003");
                return;
            }
            //if (ToUsers.CardStae != 2)//未实名认证
            //{
            //    DataObj.OutError("6006");
            //    return;
            //}

            //开始处理参数
            if (OrderTransfer.PayMoney.IsNullOrEmpty())//转帐金额
            {
                DataObj.OutError("1000");
                return;
            }
            OrderTransfer.PayMoney = OrderTransfer.PayMoney.FormatMoney();
            if (OrderTransfer.PayType.IsNullOrEmpty())
            {
                OrderTransfer.PayType = 0;
            }
            if (OrderTransfer.X.IsNullOrEmpty() || OrderTransfer.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (OrderTransfer.AId.IsNullOrEmpty())
            {
                //支付方式,用于取出支付费率信息,计算各接口金额
                DataObj.OutError("1000");
                return;
            }

            //获取系统支付配置
            PayConfig PayConfig = Entity.PayConfig.FirstOrDefault(n => n.Id == OrderTransfer.AId && n.State == 1);

            if (PayConfig == null)
            {
                DataObj.OutError("1000");
                return;
            }
            //转帐目前只支持余额
            if (PayConfig.DllName != "Cash")
            {
                DataObj.OutError("1000");
                return;
            }
            //获取分支机构信息
            SysAgent SysAgent = new SysAgent();

            //获取系统配置
            //SysSet SysSet = Entity.SysSet.FirstOrDefault();

            OrderTransfer.UId  = baseUsers.Id;
            OrderTransfer.RUId = ToUsers.Id;

            if (OrderTransfer.IsMe == 1)//付方出手续费
            {
                //获取付方支付配置
                UserPay UserPay = Entity.UserPay.FirstOrDefault(n => n.UId == baseUsers.Id && n.PId == OrderTransfer.AId);
                if (UserPay == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                //获取付方机构信息
                if (!baseUsers.Agent.IsNullOrEmpty())
                {
                    SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent);
                }

                //手续费
                OrderTransfer.Poundage = OrderTransfer.PayMoney * (decimal)UserPay.Cost;
                //手续费进位
                OrderTransfer.Poundage = OrderTransfer.Poundage.Ceiling();
                //总金额=转帐金额+手续费
                OrderTransfer.Amoney = OrderTransfer.PayMoney + OrderTransfer.Poundage;
                //第三方支付通道率
                OrderTransfer.SysRate = (double)PayConfig.Cost;
                //商户费率
                OrderTransfer.UserRate = UserPay.Cost;
                //这里是利润计算==========
                //利润=总金额-转到帐-支付手续费
                decimal GetAll = OrderTransfer.Amoney - OrderTransfer.PayMoney - OrderTransfer.Amoney * (decimal)OrderTransfer.SysRate;
                //利润舍位
                GetAll = GetAll.Floor();
                //总利润
                OrderTransfer.AIdPayGet = (double)GetAll;
                //分支机构佣金设置为0,待分润计算后再写入
                OrderTransfer.AgentPayGet = 0;
            }
            else  //收方出手续费
                  //获取收方支付配置
            {
                UserPay UserPay = Entity.UserPay.FirstOrDefault(n => n.UId == ToUsers.Id && n.PId == OrderTransfer.AId);
                if (UserPay == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                //获取收方机构信息
                if (!ToUsers.Agent.IsNullOrEmpty())
                {
                    SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == ToUsers.Agent);
                }
                //总金额=转帐金额+手续费
                OrderTransfer.Amoney = OrderTransfer.PayMoney;
                //手续费
                OrderTransfer.Poundage = OrderTransfer.Amoney * (decimal)UserPay.Cost;
                //手续费进位
                OrderTransfer.Poundage = OrderTransfer.Poundage.Ceiling();
                //到帐金额
                OrderTransfer.PayMoney = OrderTransfer.Amoney - OrderTransfer.Poundage;
                //第三方支付通道率
                OrderTransfer.SysRate = (double)PayConfig.Cost;
                //商户费率
                OrderTransfer.UserRate = UserPay.Cost;
                //这里是利润计算==========
                //利润=总金额-转到帐-支付手续费
                decimal GetAll = OrderTransfer.Amoney - OrderTransfer.PayMoney - OrderTransfer.Amoney * (decimal)OrderTransfer.SysRate;
                //利润舍位
                GetAll = GetAll.Floor();
                //总利润
                OrderTransfer.AIdPayGet = (double)GetAll;
                //分支机构佣金设置为0,待分润计算后再写入
                OrderTransfer.AgentPayGet = 0;
            }

            OrderTransfer.Agent      = SysAgent.Id;//分支机构Id
            OrderTransfer.AId        = baseUsers.AId;
            OrderTransfer.FId        = 0;
            OrderTransfer.OrderState = 1;
            OrderTransfer.PayState   = 0;
            OrderTransfer.AgentState = 0;
            OrderTransfer.AddTime    = DateTime.Now;

            //写入前,判断交易金额限制
            if (OrderTransfer.Amoney < syscontrol.SNum || OrderTransfer.Amoney > syscontrol.ENum)
            {
                DataObj.OutError("1006");
                return;
            }
            //写入订单总表
            Orders Orders = new Orders();

            Orders.UId   = OrderTransfer.UId;
            Orders.TName = "自 " + baseUsers.TrueName + " To " + ToUsers.TrueName;

            Orders.PayType = OrderTransfer.PayType;
            switch (Orders.PayType)
            {
            case 0:
                Orders.PayName = "转帐";
                break;

            case 1:
                Orders.PayName = "当面付";
                break;

            case 2:
                Orders.PayName = "收银台-钱包";
                break;
            }

            Orders.RUId     = ToUsers.Id;
            Orders.RName    = ToUsers.TrueName;
            Orders.TType    = 3;
            Orders.TState   = 1;
            Orders.Amoney   = OrderTransfer.Amoney;
            Orders.Poundage = OrderTransfer.Poundage;
            Orders.AddTime  = DateTime.Now;
            Orders.PayState = 0;
            Orders.PayWay   = PayConfig.Id;

            Orders.Agent      = OrderTransfer.Agent;
            Orders.AgentState = 0;
            Orders.AId        = OrderTransfer.AId;
            Orders.FId        = 0;

            string OrderAddress = OrderTransfer.OrderAddress;

            if (OrderAddress.IsNullOrEmpty())
            {
                OrderAddress = Utils.GetAddressByGPS(OrderTransfer.X, OrderTransfer.Y);
            }
            Orders.OrderAddress = OrderAddress;
            Orders.X            = OrderTransfer.X;
            Orders.Y            = OrderTransfer.Y;

            Orders.Remark = OrderTransfer.Remark;

            Entity.Orders.AddObject(Orders);
            Entity.SaveChanges();
            Entity.Refresh(RefreshMode.StoreWins, Orders);

            OrderTransfer.OId = Orders.TNum;
            Entity.OrderTransfer.AddObject(OrderTransfer);
            Entity.SaveChanges();

            //=======================================
            UserTrack.ENo        = DataObj.ENo;
            UserTrack.OPType     = Orders.PayName;
            UserTrack.UserName   = Orders.TNum;
            UserTrack.GPSAddress = Orders.OrderAddress;
            UserTrack.GPSX       = Orders.X;
            UserTrack.GPSY       = Orders.Y;
            Orders.SeavGPSLog(UserTrack, Entity);
            //=======================================

            Orders.SendMsg(Entity);//发送消息类

            DataObj.Data = Orders.OutJson();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
コード例 #21
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[OrderQC]:", "【Data】" + Data, Ex);
                json = null;
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            OrderF2F OrderF2F = new OrderF2F();

            OrderF2F = JsonToObject.ConvertJsonToModel(OrderF2F, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            #region 获取并处理用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == OrderF2F.Token);
            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                //DataObj.OutError("2006");
                //return;
            }
            if (baseUsers.MiBao != 1)//未设置支付密码
            {
                //DataObj.OutError("2008");
                //return;
            }
            string NeekName = baseUsers.NeekName;
            if (NeekName.IsNullOrEmpty())
            {
                NeekName = baseUsers.TrueName;
            }
            if (NeekName.IsNullOrEmpty())
            {
                NeekName = "货款";
            }
            #endregion
            #region 创建交易
            if (OrderF2F.Action == "Create")
            {
                #region 处理选择通道
                int PayWay = OrderF2F.PayWay;

                string Tag     = "";
                byte   PayType = 1;
                string PayName = "";
                string OpenId  = ""; //微信JSAPI专用
                if (OrderF2F.OType == 7)
                {                    //支付宝
                    Tag = "AliPay";
                }
                if (OrderF2F.OType == 8)
                {//微信
                    Tag = "WeiXin";
                }

                if (PayWay.IsNullOrEmpty())
                {
                    if (Tag == "AliPay")
                    {
                        PayWay = 5;//兼容老版本
                    }
                    if (Tag == "WeiXin")
                    {
                        PayWay = 6;//兼容老版本
                    }
                }

                PayConfig PayConfig = Entity.PayConfig.FirstOrDefault(n => n.Id == PayWay && n.State == 1);
                //获取系统支付配置
                if (PayConfig == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                if (PayConfig.GroupType != Tag)
                {
                    DataObj.OutError("1000");
                    return;
                }
                PayName = "扫码付-" + PayConfig.Name;
                byte ComeWay = 1;
                if (!OrderF2F.PayId.IsNullOrEmpty())
                {
                    if (OrderF2F.PayId == "shop")
                    {
                        ComeWay = 2;
                    }
                    PayName = "收银台-" + PayConfig.Name;
                    if (OrderF2F.OType == 7)
                    {
                        if (OrderF2F.PayId == "shop")
                        {
                            OrderF2F.PayId = string.Empty;
                            PayType        = 2;
                        }
                    }
                    if (OrderF2F.OType == 8)
                    {
                        OpenId         = OrderF2F.PayId;
                        OrderF2F.PayId = string.Empty;
                        PayType        = 2;
                    }
                }
                int InType = 0;
                if (!OrderF2F.InType.IsNullOrEmpty())
                {
                    InType = 1;
                }
                SysControl SysControl = new SysControl();
                bool       IsNew      = true;
                if (OrderF2F.Id.IsNullOrEmpty())
                {
                    //这是旧逻辑,有一些旧版还在用
                    #region 版本比较 升级之后比较长时间后可以考滤删除版本判断代码
                    var vSysAgent = this.Entity.SysAgent.FirstOrDefault(o => o.Id == baseUsers.Agent);
                    if (vSysAgent == null)
                    {
                        DataObj.OutError("1000");
                        return;
                    }
                    IsNew = BizExt.NewOrOldVersion(vSysAgent, Equipment, this.Entity);
                    #endregion
                    if (IsNew)//新版
                    {
                        if (InType == 1)
                        {
                            SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == Tag && n.PayWay == PayWay && n.LagEntryDay > 0);
                        }
                        else
                        {
                            SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == Tag && n.PayWay == PayWay && n.LagEntryDay == 0);
                        }
                    }
                    else//旧版
                    {
                        SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == Tag && n.PayWay == PayWay);
                    }
                }
                else
                {
                    SysControl = Entity.SysControl.FirstOrDefault(n => n.Id == OrderF2F.Id);
                    if (SysControl.LagEntryDay > 0)
                    {
                        InType = 1;
                    }
                    else
                    {
                        InType = 0;
                    }
                }
                //获取系统支付配置
                if (SysControl == null)
                {
                    DataObj.OutError("1005");
                    return;
                }
                if (InType == 1 && (SysControl.LagEntryDay.IsNullOrEmpty() || SysControl.LagEntryNum.IsNullOrEmpty()))
                {
                    DataObj.Msg = "请升级到最新版再发起Tn到帐交易!";
                    DataObj.OutError("1005");
                    return;
                }
                SysControl syscontrol = SysControl.ChkState();
                if (syscontrol.State != 1)
                {
                    DataObj.OutError("1005");
                    return;
                }
                #endregion

                #region 订单生成
                //处理交易地点
                if (OrderF2F.X.IsNullOrEmpty() || OrderF2F.Y.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
                //开始处理参数 OType通道,7支付宝,8微信
                if (OrderF2F.Amoney.IsNullOrEmpty() || OrderF2F.OType.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
                OrderF2F.Amoney = OrderF2F.Amoney.FormatMoney();

                //获取用户支付配置
                UserPay UserPay = Entity.UserPay.FirstOrDefault(n => n.UId == baseUsers.Id && n.PId == PayWay);
                if (UserPay == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                //获取分支机构信息
                SysAgent SysAgent = new SysAgent();
                if (!baseUsers.Agent.IsNullOrEmpty())
                {
                    SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent);
                }

                OrderF2F.PayWay = PayWay;

                //获取系统配置
                SysSet SysSet = Entity.SysSet.FirstOrDefault();
                if (InType == 1)
                {//客户端传来T+N但是系统没开启时无效
                    if (SysSet.LagEntry == 0)
                    {
                        InType = 0;
                    }
                }
                if (InType == 1)
                {
                    //手续费
                    OrderF2F.Poundage = 0;
                    //商户费率
                    OrderF2F.UserRate = 0;
                    //T+n时,代理佣金为 交易金额*费率
                    decimal AgentPayGet = OrderF2F.Amoney * SysSet.AgentGet;
                    OrderF2F.AgentPayGet = (Double)AgentPayGet;
                    //佣金舍位
                    OrderF2F.AgentPayGet = OrderF2F.AgentPayGet.Floor();
                }
                else
                {
                    //手续费
                    OrderF2F.Poundage = OrderF2F.Amoney * (decimal)UserPay.Cost;
                    //手续费取进
                    OrderF2F.Poundage = OrderF2F.Poundage.Ceiling();
                    //商户费率
                    OrderF2F.UserRate = UserPay.Cost;
                    //分支机构佣金设置为0,待分润计算后再写入
                    OrderF2F.AgentPayGet = 0;
                }

                OrderF2F.UId = baseUsers.Id;
                //到帐金额=支付金额-手续费
                OrderF2F.PayMoney = OrderF2F.Amoney - OrderF2F.Poundage;
                //第三方支付通道率
                OrderF2F.SysRate = (double)PayConfig.Cost;
                //这里是利润计算==========
                //利润=总金额-到帐-支付手续费
                decimal GetAll = OrderF2F.Amoney - OrderF2F.PayMoney - OrderF2F.Amoney * (decimal)OrderF2F.SysRate;
                //利润舍位
                GetAll = GetAll.Floor();
                //总利润
                OrderF2F.AIdPayGet = (double)GetAll;


                OrderF2F.Agent      = SysAgent.Id;//分支机构Id
                OrderF2F.AId        = baseUsers.AId;
                OrderF2F.FId        = 0;
                OrderF2F.OrderState = 1;
                OrderF2F.PayState   = 0;
                OrderF2F.AgentState = 0;
                OrderF2F.AddTime    = DateTime.Now;
                OrderF2F.PayId      = string.Empty;
                OrderF2F.PayType    = PayType;

                //写入前,判断交易金额限制
                if (OrderF2F.Amoney < syscontrol.SNum || OrderF2F.Amoney > syscontrol.ENum)
                {
                    DataObj.OutError("1006");
                    return;
                }
                //写入订单总表
                Orders Orders = new Orders();
                Orders.UId   = OrderF2F.UId;
                Orders.TName = NeekName;

                Orders.PayType = PayType;
                Orders.PayName = PayName;

                Orders.RUId     = 0;
                Orders.RName    = string.Empty;
                Orders.TType    = OrderF2F.OType;
                Orders.TState   = 1;
                Orders.Amoney   = OrderF2F.Amoney;
                Orders.Poundage = OrderF2F.Poundage;
                Orders.AddTime  = DateTime.Now;
                Orders.PayState = 0;
                Orders.PayWay   = PayConfig.Id;

                Orders.Agent      = OrderF2F.Agent;
                Orders.AgentState = 0;
                Orders.AId        = OrderF2F.AId;
                Orders.FId        = 0;
                Orders.ComeWay    = ComeWay;
                string OrderAddress = OrderF2F.OrderAddress;
                if (OrderAddress.IsNullOrEmpty())
                {
                    OrderAddress = Utils.GetAddressByGPS(OrderF2F.X, OrderF2F.Y);
                }
                Orders.OrderAddress = OrderAddress;
                Orders.X            = OrderF2F.X;
                Orders.Y            = OrderF2F.Y;

                if (InType == 1)
                {
                    if (IsNew)//新版
                    {
                        Orders.LagEntryDay = SysControl.LagEntryDay;
                        Orders.LagEntryNum = SysControl.LagEntryNum;
                    }
                    else
                    {
                        Orders.LagEntryDay = SysSet.LagEntryDay;
                        Orders.LagEntryNum = SysSet.LagEntryNum;
                    }
                }
                else
                {
                    Orders.LagEntryDay = 0;
                    Orders.LagEntryNum = 0;
                }

                Entity.Orders.AddObject(Orders);
                Entity.SaveChanges();
                Entity.Refresh(RefreshMode.StoreWins, Orders);

                OrderF2F.OId = Orders.TNum;
                Entity.OrderF2F.AddObject(OrderF2F);
                Entity.SaveChanges();

                //=======================================
                UserTrack.ENo        = DataObj.ENo;
                UserTrack.OPType     = Orders.PayName;
                UserTrack.UserName   = Orders.TNum;
                UserTrack.GPSAddress = Orders.OrderAddress;
                UserTrack.GPSX       = Orders.X;
                UserTrack.GPSY       = Orders.Y;
                if (!OrderF2F.IP.IsNullOrEmpty())
                {
                    UserTrack.IP = OrderF2F.IP;
                }
                Orders.SeavGPSLog(UserTrack, Entity);
                //=======================================

                #endregion

                if (PayConfig.DllName == "AliPay")
                {
                    #region 提交支付宝
                    string[] PayConfigArr = PayConfig.QueryArray.Split(new char[] { ',' });    //接口信息 商户号,密钥,支付宝号
                    if (PayConfigArr.Length != 3)
                    {
                        DataObj.OutError("9999");
                        return;
                    }
                    if (AlipayVer == "1.0")
                    {
                        #region 1.0老接口
                        Submit Submit = new Submit();
                        Submit.pid = PayConfigArr[0];
                        Submit.key = PayConfigArr[1];
                        //卖家支付宝帐户
                        string seller_email = PayConfigArr[2];

                        //订单业务类型
                        string product_code = "QR_CODE_OFFLINE";
                        //SOUNDWAVE_PAY_OFFLINE:声波支付,FINGERPRINT_FAST_PAY:指纹支付,BARCODE_PAY_OFFLINE:条码支付

                        ////////////////////////////////////////////////////////////////////////////////////////////////
                        //把请求参数打包成数组
                        SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>();
                        sParaTemp.Add("partner", Submit.pid);
                        sParaTemp.Add("_input_charset", "utf-8");
                        sParaTemp.Add("service", "alipay.acquire.precreate");

                        sParaTemp.Add("out_trade_no", OrderF2F.OId);
                        sParaTemp.Add("subject", Orders.TName + ":" + OrderF2F.OId);
                        sParaTemp.Add("product_code", product_code);
                        sParaTemp.Add("total_fee", OrderF2F.Amoney.ToString("F2"));
                        sParaTemp.Add("seller_email", seller_email);

                        sParaTemp.Add("notify_url", NoticePath + "/PayCenter/AliPay/Notice.html");
                        //建立请求
                        string sHtmlText = Submit.BuildRequest(sParaTemp);
                        Utils.WriteLog(sHtmlText, "orderface");
                        try
                        {
                            XmlDocument xmlDoc = new XmlDocument();
                            xmlDoc.LoadXml(sHtmlText);
                            string is_success = xmlDoc.SelectSingleNode("/alipay/is_success").InnerText;
                            if (is_success == "T")
                            {
                                string result_code = xmlDoc.SelectSingleNode("/alipay/response/alipay/result_code").InnerText;
                                if (result_code == "SUCCESS")
                                {
                                    //成功
                                    string qr_code = xmlDoc.SelectSingleNode("/alipay/response/alipay/qr_code").InnerText;

                                    /*
                                     * voucher_type 凭证类型
                                     * qr_code 二维码码串
                                     * pic_url 二维码图片地址
                                     * small_pic_ur 二维码小图地址
                                     */
                                    OrderF2F.PayId = qr_code;
                                    Entity.SaveChanges();
                                    Orders.PayId = qr_code;
                                }
                                else
                                {
                                    Orders.TState       = 0;
                                    OrderF2F.OrderState = 0;
                                    Entity.SaveChanges();
                                }
                            }
                            else
                            {
                                Orders.TState       = 0;
                                OrderF2F.OrderState = 0;
                                Entity.SaveChanges();
                            }
                        }
                        catch (Exception)
                        {
                            //Utils.WriteLog(Ex.ToString());
                            Orders.TState       = 0;
                            OrderF2F.OrderState = 0;
                            Entity.SaveChanges();
                        }
                        #endregion
                    }
                    if (AlipayVer == "2.0")
                    {
                        #region 2.0新接口

                        ALF2FPAY ALF2FPAY = new ALF2FPAY();
                        ALF2FPAY.pid   = PayConfigArr[0];
                        ALF2FPAY.appId = PayConfigArr[2];
                        IAopClient    client = new DefaultAopClient(ALF2FPAY.serverUrl, ALF2FPAY.appId, ALF2FPAY.merchant_private_key, "json", ALF2FPAY.version, ALF2FPAY.sign_type, ALF2FPAY.alipay_public_key, ALF2FPAY.charset);
                        StringBuilder sb     = new StringBuilder();
                        sb.Append("{");
                        sb.Append("\"out_trade_no\":\"" + OrderF2F.OId + "\",");
                        sb.Append("\"total_amount\":\"" + OrderF2F.Amoney.ToMoney() + "\",");
                        sb.Append("\"timeout_express\":\"30m\",");
                        sb.Append("\"subject\":\"" + OrderF2F.OId + "\"");
                        sb.Append("}");
                        AlipayTradePrecreateRequest payRequst = new AlipayTradePrecreateRequest();

                        string notify_url = NoticePath + "/PayCenter/AliPay/Notice.html";
                        payRequst.SetNotifyUrl(notify_url);

                        payRequst.BizContent = sb.ToString();

                        Dictionary <string, string>  paramsDict  = (Dictionary <string, string>)payRequst.GetParameters();
                        AlipayTradePrecreateResponse payResponse = client.Execute(payRequst);

                        if (payResponse != null)
                        {
                            payResponse.SaveLog(Entity);    //保存记录
                            if (payResponse.Code == "10000")
                            {
                                OrderF2F.PayId = payResponse.QrCode;
                                Entity.SaveChanges();
                                Orders.PayId = payResponse.QrCode;
                            }
                            else
                            {
                                Orders.TState       = 0;
                                OrderF2F.OrderState = 0;
                                Entity.SaveChanges();
                            }
                        }
                        else
                        {
                            Orders.TState       = 0;
                            OrderF2F.OrderState = 0;
                            Entity.SaveChanges();
                        }
                        #endregion
                    }
                    #endregion
                }
                if (PayConfig.DllName == "WeiXin")
                {
                    #region 提交微信
                    //初始化支付配置
                    WxPayConfig WxPayConfig  = new WxPayConfig();
                    string[]    PayConfigArr = PayConfig.QueryArray.Split(new char[] { ',' }); //接口信息 appid,mchid,key,appsecret
                    if (PayConfigArr.Length != 4 && PayConfigArr.Length != 5)
                    {
                        DataObj.OutError("9999");
                        return;
                    }
                    string ServerIp     = ConfigurationManager.AppSettings["ServerIp"].ToString();
                    string Wx_Cert_Path = ConfigurationManager.AppSettings["Wx_Cert_Path"].ToString();
                    string Wx_Cert_PWD  = ConfigurationManager.AppSettings["Wx_Cert_PWD"].ToString();
                    WxPayConfig.IP        = ServerIp;
                    WxPayConfig.APPID     = PayConfigArr[0];
                    WxPayConfig.MCHID     = PayConfigArr[1];
                    WxPayConfig.KEY       = PayConfigArr[2];
                    WxPayConfig.APPSECRET = PayConfigArr[3];
                    if (PayConfigArr.Length == 5)
                    {
                        WxPayConfig.SubMCHID = PayConfigArr[4];
                    }
                    WxPayConfig.SSLCERT_PATH     = Wx_Cert_Path;
                    WxPayConfig.SSLCERT_PASSWORD = Wx_Cert_PWD;
                    //支付配置结束

                    WxPayData data = new WxPayData();
                    //data.SetValue("auth_code", OrderF2F.PayId);//授权码
                    data.SetValue("body", Orders.TName + ":" + OrderF2F.OId); //商品描述
                    string total_fee = (OrderF2F.Amoney * 100).ToString("F0");
                    data.SetValue("total_fee", total_fee);                    //总金额
                    data.SetValue("out_trade_no", OrderF2F.OId);              //产生随机的商户订单号
                    if (PayType == 2)
                    {
                        data.SetValue("trade_type", "JSAPI");    //交易类型
                        if (PayConfigArr.Length == 5)
                        {                                        //子商户模式
                            data.SetValue("sub_openid", OpenId); //用户OpenId
                        }
                        else
                        {
                            data.SetValue("openid", OpenId);    //用户OpenId
                        }
                    }
                    else
                    {
                        data.SetValue("trade_type", "NATIVE");    //交易类型
                    }

                    data.SetValue("notify_url", NoticePath + "/PayCenter/WeiXinPay/Notice.html"); //异步通知地址
                    WxPayData result = WxPayApi.UnifiedOrder(data, WxPayConfig, 10);              //调用统一下单接口
                    result.SaveLog(Entity);

                    if (!result.IsSet("return_code") || result.GetValue("return_code").ToString() == "FAIL")
                    {    //支付失败
                        Orders.TState       = 0;
                        OrderF2F.OrderState = 0;
                        Entity.SaveChanges();
                    }
                    else
                    {
                        if (!result.CheckSign(WxPayConfig.KEY))
                        {    //签名失败,取消订单
                            Orders.TState       = 0;
                            OrderF2F.OrderState = 0;
                            Entity.SaveChanges();
                        }
                        else
                        {
                            if (result.GetValue("return_code").ToString() == "SUCCESS" && result.GetValue("result_code").ToString() == "SUCCESS")
                            {
                                //获取支付字符串
                                if (PayType == 2)    //JSAPI
                                {
                                    string PayId = result.GetValue("prepay_id").ToString();
                                    OrderF2F.PayId = PayId;
                                }
                                else
                                {
                                    string PayId = result.GetValue("code_url").ToString();
                                    OrderF2F.PayId = PayId;
                                }
                                Entity.SaveChanges();
                                Orders.PayId = OrderF2F.PayId;
                            }
                            else
                            {
                                //业务明确失败
                                Orders.TState       = 0;
                                OrderF2F.OrderState = 0;
                                Entity.SaveChanges();
                            }
                        }
                    }
                    #endregion
                }


                #region 提交好付
                if (PayConfig.DllName == "HFAliPay" || PayConfig.DllName == "HFWeiXin")
                {
                    string NoticeUrl = "";
                    string Action    = "";
                    if (PayConfig.DllName == "HFAliPay")
                    {
                        NoticeUrl = NoticePath + "/PayCenter/HFAliPay/Notice.html";
                        Action    = "AliSao";
                    }
                    if (PayConfig.DllName == "HFWeiXin")
                    {
                        NoticeUrl = NoticePath + "/PayCenter/HFWeiXin/Notice.html";
                        if (PayType == 2)
                        {
                            Action = "WxJsApi";
                        }
                        else
                        {
                            Action = "WxSao";
                        }
                    }
                    string[] PayConfigArr = PayConfig.QueryArray.Split(',');
                    if (PayConfigArr.Length != 3)
                    {
                        DataObj.OutError("1000");
                        return;
                    }
                    //提交结算中心
                    string merId    = PayConfigArr[0]; //商户号
                    string merKey   = PayConfigArr[1]; //商户密钥
                    string JsPayWay = PayConfigArr[2]; //绑定通道

                    string  orderId    = Orders.TNum;  //商户流水号
                    decimal money      = Orders.Amoney * 100;
                    long    intmoney   = Int64.Parse(money.ToString("F0"));
                    string  OrderMoney = intmoney.ToString();//金额,以分为单

                    string OpenIdStr = "";
                    if (PayConfig.Id == 13)
                    {
                        //特殊处理通道
                        Action = "WxJsApi";
                        OpenId = "OpenId";
                    }
                    if (Action == "WxJsApi")
                    {
                        OpenIdStr = ",\"openid\":\"" + OpenId + "\"";
                    }

                    string PostJson = "{\"action\":\"" + Action + "\",\"txnamt\":\"" + OrderMoney + "\",\"merid\":\"" + merId + "\",\"payway\":\"" + JsPayWay + "\",\"orderid\":\"" + orderId + "\",\"backurl\":\"" + NoticeUrl + "\"" + OpenIdStr + "}";

                    string DataBase64 = LokFuEncode.Base64Encode(PostJson, "utf-8");
                    string Sign       = (DataBase64 + merKey).GetMD5();

                    DataBase64 = HttpUtility.UrlEncode(DataBase64);
                    string PostData = string.Format("req={0}&sign={1}", DataBase64, Sign);

                    string HF_Url = "https://api.zhifujiekou.com/api/mpgateway";

                    string Ret = Utils.PostRequest(HF_Url, PostData, "utf-8");

                    JObject JS = new JObject();
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(Ret);
                    }
                    catch (Exception Ex)
                    {
                        Log.Write("[Order_HF]:", "【PostData】" + PostData + "\n【Ret】" + Ret, Ex);
                        json = null;
                    }
                    if (JS == null)
                    {
                        DataObj.OutError("1000");
                        return;
                    }
                    string resp = JS["resp"].ToString();
                    Ret = LokFuEncode.Base64Decode(resp, "utf-8");
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(Ret);
                    }
                    catch (Exception Ex)
                    {
                        Log.Write("[Order_HF]:", "【Ret2】" + Ret, Ex);
                        JS = null;
                    }
                    if (JS == null)
                    {
                        DataObj.OutError("1000");
                        return;
                    }
                    string respcode = JS["respcode"].ToString();
                    if (respcode != "00")
                    {
                        string respmsg = JS["respmsg"].ToString();
                        DataObj.OutError("1000");
                        Utils.WriteLog("[Order_HF_Err]:【" + respcode + "】" + respmsg, "orderface");
                        return;
                    }
                    if (JS["formaction"] == null)
                    {
                        Utils.WriteLog("[Order_HF_Err]:【formaction NULL】" + Ret, "orderface");
                        DataObj.OutError("2096");
                        return;
                    }
                    Orders.PayId = JS["formaction"].ToString();
                    if (PayConfig.Id == 13)
                    {
                        string myData = "{\"merid\":\"" + merId + "\",\"orderid\":\"" + orderId + "\",\"code\":\"" + Orders.PayId + "\"}";
                        DataBase64 = LokFuEncode.Base64Encode(myData, "utf-8");
                        Sign       = (DataBase64 + merKey).GetMD5();
                        DataBase64 = HttpUtility.UrlEncode(DataBase64);
                        string myUrl = string.Format("req={0}&sign={1}", DataBase64, Sign);
                        string Url   = "https://api.zhifujiekou.com/wxjsapi/gopay.html?" + myUrl;

                        OrderF2F.PayId = Url;
                        Entity.SaveChanges();
                        Orders.PayId = "http://api.kkapay.com/home/jump?tnum=" + Orders.TNum;
                    }
                }
                #endregion
                Orders.Cols  = "Id,TNum,PayId";
                DataObj.Data = Orders.OutJson();
                DataObj.Code = "0000";
                DataObj.OutString();
            }
            #endregion
            if (OrderF2F.Action == "GET")//获取订交易信息
            {
                //开始处理参数
                if (OrderF2F.OId.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
                Orders Orders = Entity.Orders.FirstOrDefault(n => n.TNum == OrderF2F.OId && n.UId == baseUsers.Id);
                if (Orders == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                OrderF2F Orderf2f = Entity.OrderF2F.FirstOrDefault(n => n.OId == OrderF2F.OId && n.UId == baseUsers.Id);
                if (Orders.TState == 1 && Orders.PayState == 0)
                {
                    PayConfig PayConfig = Entity.PayConfig.FirstOrNew(n => n.Id == Orders.PayWay);
                    if (PayConfig.DllName == "AliPay")
                    {
                        #region 支付宝处理
                        string[] PayConfigArr = PayConfig.QueryArray.Split(new char[] { ',' });    //接口信息 商户号,密钥,支付宝号
                        if (PayConfigArr.Length != 3)
                        {
                            DataObj.OutError("9999");
                            return;
                        }
                        if (AlipayVer == "1.0")
                        {
                            #region 1.0老接口
                            string pid = PayConfigArr[0];
                            string key = PayConfigArr[1];

                            int queryTimes = 10;    //查询次数计数器
                            int Run        = 0;
                            while (queryTimes > 0 && Run != 1)
                            {
                                AliPayApi Api        = new AliPayApi();
                                int       succResult = Api.AliPayQuery(Orderf2f.OId, pid, key);
                                //如果需要继续查询,则等待2s后继续
                                if (succResult == 2)
                                {
                                    //Thread.Sleep(5000);
                                    //continue;
                                    Run = 1;    //跳出循环,20160420
                                }
                                //查询成功,返回订单查询接口返回的数据
                                else if (succResult == 1)
                                {
                                    //Orders.PayState = 1;//此处不保存支付状态,由通知返回再操作
                                    Orders = Orders.PaySuccess(Entity);
                                    Run    = 1;
                                }
                                //订单交易失败
                                else
                                {
                                    Orders.TState       = 0;
                                    Orderf2f.OrderState = 0;
                                    Entity.SaveChanges();
                                }
                                queryTimes--;
                            }
                            #endregion
                        }
                        if (AlipayVer == "2.0")
                        {
                            #region 2.0新接口
                            ALF2FPAY ALF2FPAY = new ALF2FPAY();
                            ALF2FPAY.pid   = PayConfigArr[0];
                            ALF2FPAY.appId = PayConfigArr[2];

                            IAopClient client = new DefaultAopClient(ALF2FPAY.serverUrl, ALF2FPAY.appId, ALF2FPAY.merchant_private_key, "json", ALF2FPAY.version, ALF2FPAY.sign_type, ALF2FPAY.alipay_public_key, ALF2FPAY.charset);

                            string      QueryStr = "{\"out_trade_no\":\"" + Orders.TNum + "\"}";
                            ALF2FPAYObj ObjQuery = new ALF2FPAYObj();
                            ObjQuery.BizCode = QueryStr;
                            ObjQuery.Client  = client;
                            ObjQuery.Entity  = Entity;
                            AliPayApi Api = new AliPayApi();
                            AlipayTradeQueryResponse queryResponse = Api.LoopAlipayQuery(ObjQuery, 1);
                            if (queryResponse != null)
                            {
                                if (queryResponse.Code == "10000")
                                {
                                    if (queryResponse.TradeStatus == "TRADE_FINISHED" || queryResponse.TradeStatus == "TRADE_SUCCESS")
                                    {
                                        //Orders.PayState = 1;//此处不保存支付状态,由通知返回再操作
                                        Orders = Orders.PaySuccess(Entity);
                                    }
                                }
                            }
                            #endregion
                        }
                        #endregion
                    }
                    if (PayConfig.DllName == "WeiXin")
                    {
                        #region 微信处理
                        //初始化支付配置
                        WxPayConfig WxPayConfig  = new WxPayConfig();
                        string[]    PayConfigArr = PayConfig.QueryArray.Split(new char[] { ',' }); //接口信息 appid,mchid,key,appsecret
                        if (PayConfigArr.Length != 4 && PayConfigArr.Length != 5)
                        {
                            DataObj.OutError("9999");
                            return;
                        }
                        string ServerIp     = ConfigurationManager.AppSettings["ServerIp"].ToString();
                        string Wx_Cert_Path = ConfigurationManager.AppSettings["Wx_Cert_Path"].ToString();
                        string Wx_Cert_PWD  = ConfigurationManager.AppSettings["Wx_Cert_PWD"].ToString();
                        WxPayConfig.IP        = ServerIp;
                        WxPayConfig.APPID     = PayConfigArr[0];
                        WxPayConfig.MCHID     = PayConfigArr[1];
                        WxPayConfig.KEY       = PayConfigArr[2];
                        WxPayConfig.APPSECRET = PayConfigArr[3];
                        if (PayConfigArr.Length == 5)
                        {
                            WxPayConfig.SubMCHID = PayConfigArr[4];
                        }
                        WxPayConfig.SSLCERT_PATH     = Wx_Cert_Path;
                        WxPayConfig.SSLCERT_PASSWORD = Wx_Cert_PWD;
                        //支付配置结束
                        int queryTimes = 10;    //查询次数计数器
                        int Run        = 0;
                        while (queryTimes > 0 && Run != 1)
                        {
                            int       succResult  = 0;//查询结果
                            MicroPay  MicroPay    = new MicroPay();
                            WxPayData queryResult = MicroPay.WXQuery(Orderf2f.OId, WxPayConfig, Entity, out succResult);
                            //如果需要继续查询,则等待2s后继续
                            if (succResult == 2)
                            {
                                //Thread.Sleep(5000);
                                //continue;
                                Run = 1;    //跳出循环,20160420
                            }
                            //查询成功,返回订单查询接口返回的数据
                            else if (succResult == 1)
                            {
                                Orderf2f.Trade_no = queryResult.GetValue("transaction_id").ToString();
                                int ret = Entity.SaveChanges();
                                //Orders.PayState = 1;//此处不保存支付状态,由通知返回再操作
                                Orders = Orders.PaySuccess(Entity);
                                Run    = 1;
                            }
                            //订单交易失败
                            else
                            {
                                Orders.TState       = 0;
                                Orderf2f.OrderState = 0;
                                Entity.SaveChanges();
                            }
                            queryTimes--;
                        }
                        #endregion
                    }
                    if (PayConfig.DllName == "HFAliPay" || PayConfig.DllName == "HFWeiXin")
                    {
                        #region 好付处理
                        string[] QueryArr = PayConfig.QueryArray.Split(',');
                        if (QueryArr.Length == 3)
                        {
                            //提交结算中心
                            string merId      = QueryArr[0]; //商户号
                            string merKey     = QueryArr[1]; //商户密钥
                            string orderId    = Orders.TNum; //商户流水号
                            string PostJson   = "{\"merid\":\"" + merId + "\",\"orderid\":\"" + orderId + "\"}";
                            string DataBase64 = LokFuEncode.Base64Encode(PostJson, "utf-8");
                            string Sign       = (DataBase64 + merKey).GetMD5();
                            DataBase64 = HttpUtility.UrlEncode(DataBase64);
                            string PostData = string.Format("req={0}&sign={1}", DataBase64, Sign);
                            string HF_Url   = "https://api.zhifujiekou.com/api/query";
                            string Ret      = Utils.PostRequest(HF_Url, PostData, "utf-8");

                            JObject JS = new JObject();
                            try
                            {
                                JS = (JObject)JsonConvert.DeserializeObject(Ret);
                            }
                            catch (Exception Ex)
                            {
                                Log.Write("[Order_HFQuery]:", "【PostData】" + PostData + "\n【Ret】" + Ret, Ex);
                                JS = null;
                            }
                            if (JS == null)
                            {
                                DataObj.OutError("1000");
                                return;
                            }
                            if (JS["resp"] == null)
                            {
                                Utils.WriteLog("【Ret】" + Ret, "OrderQC_HFQuery");
                                DataObj.OutError("1000");
                                return;
                            }
                            string resp = JS["resp"].ToString();
                            Ret = LokFuEncode.Base64Decode(resp, "utf-8");
                            try
                            {
                                JS = (JObject)JsonConvert.DeserializeObject(Ret);
                            }
                            catch (Exception Ex)
                            {
                                Log.Write("[Order_HFQuery]:", "【Ret2】" + Ret, Ex);
                                JS = null;
                            }
                            if (JS == null)
                            {
                                DataObj.OutError("1000");
                                return;
                            }
                            string respcode = JS["respcode"].ToString();
                            if (respcode != "00")
                            {
                                string respmsg = JS["respmsg"].ToString();
                                DataObj.OutError("1000");
                                Utils.WriteLog("[Order_HFQuery_Err]:【" + respcode + "】" + respmsg, "orderface");
                                return;
                            }
                            string resultcode = JS["resultcode"].ToString();
                            if (resultcode == "0000" || resultcode == "1002" || resultcode == "1004")
                            {
                                string txnamt    = JS["txnamt"].ToString();
                                int    factmoney = int.Parse(txnamt);
                                if (((int)(Orders.Amoney * 100)) == factmoney)
                                {
                                    //Orders.PayState = 1;//此处不保存支付状态,由通知返回再操作
                                    Orders = Orders.PaySuccess(Entity);
                                }
                            }
                        }
                        #endregion
                    }
                }
                DataObj.Data = Orders.OutJson();
                DataObj.Code = "0000";
                DataObj.OutString();
            }
        }
コード例 #22
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="shopid"></param>
        /// <param name="Amount"></param>
        /// <param name="payway">这里payway是SysConfig的ID</param>
        /// <returns></returns>
        public ActionResult GoPay(int shopid = 0, decimal Amount = 0, byte payway = 0)
        {
            if (shopid.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "商户信息有误,请核实!";
                return(View("Error"));
            }
            if (Amount.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "付款金额有误,请核实!";
                return(View("Error"));
            }
            Users baseUsers = Entity.Users.FirstOrNew(n => n.Id == shopid && n.State == 1 && n.CardStae == 2);

            if (baseUsers.Id.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "商户信息有误,请核实!";
                return(View("Error"));
            }
            if (Amount <= 0)
            {
                ViewBag.ErrorMsg = "付款金额有误![00]";
                return(View("Error"));
            }
            Amount = Amount.FormatMoney();

            #region 处理选择通道
            string Tag     = string.Empty;
            byte   PayType = 0;//订单类型
            if (IsWeiXinBrowser)
            {
                Tag = "WeiXin";
            }
            else if (IsAlipayBrowser)
            {
                Tag = "Alipay";
            }
            #region 获取系统支付配置
            SysControl SysControl = Entity.SysControl.FirstOrDefault(n => n.Id == payway);
            if (SysControl == null)
            {
                ViewBag.ErrorMsg = "接口维护中";
                return(View("Error"));
            }
            SysControl syscontrol = SysControl.ChkState();
            if (syscontrol.State != 1)
            {
                ViewBag.ErrorMsg = "接口维护中";
                return(View("Error"));
            }

            if (Amount < SysControl.SNum || Amount > SysControl.ENum)
            {
                ViewBag.ErrorMsg = "本付款方式限定金额为" + SysControl.SNum.ToString("f2") + "-" + SysControl.ENum.ToString("f2");
                return(View("Error"));
            }

            if (SysControl.Tag != Tag)//接口对应的"操作应用程序"
            {
                string tagname = "";
                if (SysControl.Tag == "WeiXin")
                {
                    tagname = "微信";
                }
                else if (SysControl.Tag == "Alipay")
                {
                    tagname = "支付宝";
                }
                else
                {
                    tagname = "银联";
                }
                ViewBag.ErrorMsg = "请使用" + tagname + "操作";
                return(View("Error"));
            }
            PayConfig PayConfig = Entity.PayConfig.FirstOrDefault(o => o.Id == SysControl.PayWay && o.State == 1);
            if (PayConfig == null)
            {
                ViewBag.ErrorMsg = "支付接口维护中,请使用其它支付通道!";
                return(View("Error"));
            }
            switch (PayConfig.GroupType)//从这里获取订单类型
            {
            case "AliPay":
                PayType = 7;
                break;

            case "WeiXin":
                PayType = 8;
                break;
            }
            if (PayType == 0)
            {
                ViewBag.ErrorMsg = "没有对应的支付配置";
                return(View("Error"));
            }
            #endregion
            #endregion

            #region 订单生成
            //获取用户支付配置
            UserPay UserPay = Entity.UserPay.FirstOrDefault(n => n.UId == baseUsers.Id && n.PId == SysControl.PayWay);
            if (UserPay == null)
            {
                ViewBag.ErrorMsg = "用户支付配置错误";
                return(View("Error"));
            }
            //获取分支机构信息
            SysAgent SysAgent = new SysAgent();
            if (!baseUsers.Agent.IsNullOrEmpty())
            {
                SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent);
            }
            //获取系统配置
            SysSet SysSet = Entity.SysSet.FirstOrDefault();

            //TN判断
            int InType = SysControl.LagEntryNum > 0 ? 1 : 0;
            if (InType == 1)
            {
                //客户端传来T+N但是系统没开启时无效
                if (SysSet.LagEntry == 0)
                {
                    InType = 0;
                }
            }
            var OrderF2F = new OrderF2F()
            {
                PayWay  = SysControl.PayWay,
                AddTime = DateTime.Now,
                OType   = PayType,
                Amoney  = Amount,
            };
            if (InType == 1)
            {
                //手续费
                OrderF2F.Poundage = 0;
                //商户费率
                OrderF2F.UserRate = 0;
                //T+n时,代理佣金为 交易金额*费率
                decimal AgentPayGet = OrderF2F.Amoney * SysSet.AgentGet;
                OrderF2F.AgentPayGet = (Double)AgentPayGet;
                //佣金舍位
                OrderF2F.AgentPayGet = OrderF2F.AgentPayGet.Floor();
            }
            else
            {
                //手续费
                OrderF2F.Poundage = OrderF2F.Amoney * (decimal)UserPay.Cost;
                //手续费取进
                OrderF2F.Poundage = OrderF2F.Poundage.Ceiling();
                //商户费率
                OrderF2F.UserRate = UserPay.Cost;
                //分支机构佣金设置为0,待分润计算后再写入
                OrderF2F.AgentPayGet = 0;
            }
            OrderF2F.UId = baseUsers.Id;
            //到帐金额=支付金额-手续费
            OrderF2F.PayMoney = OrderF2F.Amoney - OrderF2F.Poundage;
            //第三方支付通道率
            OrderF2F.SysRate = (double)PayConfig.Cost;
            //这里是利润计算==========
            //利润=总金额-到帐-支付手续费
            decimal GetAll = OrderF2F.Amoney - OrderF2F.PayMoney - OrderF2F.Amoney * (decimal)OrderF2F.SysRate;
            //利润舍位
            GetAll = GetAll.Floor();
            //总利润
            OrderF2F.AIdPayGet = (double)GetAll;

            OrderF2F.Agent      = SysAgent.Id;//分支机构Id
            OrderF2F.AId        = baseUsers.AId;
            OrderF2F.FId        = 0;
            OrderF2F.OrderState = 1;
            OrderF2F.PayState   = 0;
            OrderF2F.AgentState = 0;
            OrderF2F.AddTime    = DateTime.Now;
            OrderF2F.PayId      = string.Empty;
            OrderF2F.PayType    = PayType;

            //写入订单总表
            Orders Orders = new Orders();
            Orders.UId   = OrderF2F.UId;
            Orders.TName = baseUsers.NeekName;

            Orders.PayType = PayType;
            Orders.PayName = "收银台-" + PayConfig.Name;;

            Orders.RUId     = 0;
            Orders.RName    = string.Empty;
            Orders.TType    = OrderF2F.OType;
            Orders.TState   = 1;
            Orders.Amoney   = OrderF2F.Amoney;
            Orders.Poundage = OrderF2F.Poundage;
            Orders.AddTime  = DateTime.Now;
            Orders.PayState = 0;
            Orders.PayWay   = SysControl.PayWay;

            Orders.Agent      = OrderF2F.Agent;
            Orders.AgentState = 0;
            Orders.AId        = OrderF2F.AId;
            Orders.FId        = 0;
            Orders.ComeWay    = 2;//收银台订单的标识 1:APP订单 2:收银台订单

            if (InType == 1)
            {
                Orders.LagEntryDay = SysControl.LagEntryDay;
                Orders.LagEntryNum = SysControl.LagEntryNum;
            }
            else
            {
                Orders.LagEntryDay = 0;
                Orders.LagEntryNum = 0;
            }

            Entity.Orders.AddObject(Orders);
            Entity.SaveChanges();
            Entity.Refresh(RefreshMode.StoreWins, Orders);

            OrderF2F.OId = Orders.TNum;
            Entity.OrderF2F.AddObject(OrderF2F);
            Entity.SaveChanges();

            //=======================================
            UserTrack UserTrack = new UserTrack();
            UserTrack.ENo        = baseUsers.ENo;
            UserTrack.OPType     = Orders.PayName;
            UserTrack.UserName   = Orders.TNum;
            UserTrack.GPSAddress = "";
            UserTrack.GPSX       = "";
            UserTrack.GPSY       = "";
            UserTrack.IP         = Utils.GetIP();
            Orders.SeavGPSLog(UserTrack, Entity);
            //=======================================

            #endregion

            #region 提交结算中心
            if (PayConfig.DllName == "HFAliPay" || PayConfig.DllName == "HFWeiXin")
            {
                string NoticeUrl = "";
                string Action    = "";
                if (PayConfig.DllName == "HFAliPay")
                {
                    NoticeUrl = NoticePath + "/PayCenter/HFAliPay/Notice.html";
                    Action    = "AliSao";
                }
                if (PayConfig.DllName == "HFWeiXin")
                {
                    NoticeUrl = NoticePath + "/PayCenter/HFWeiXin/Notice.html";
                    Action    = "WxJsApi";
                }
                string[] PayConfigArr = PayConfig.QueryArray.Split(',');
                if (PayConfigArr.Length != 3)
                {
                    ViewBag.ErrorMsg = "参数错误!";
                    return(View("Error"));
                }
                //提交结算中心
                string merId    = PayConfigArr[0]; //商户号
                string merKey   = PayConfigArr[1]; //商户密钥
                string JsPayWay = PayConfigArr[2]; //绑定通道

                string  orderId    = Orders.TNum;  //商户流水号
                decimal money      = Orders.Amoney * 100;
                long    intmoney   = Int64.Parse(money.ToString("F0"));
                string  OrderMoney = intmoney.ToString();//金额,以分为单

                string PostJson = "{\"action\":\"" + Action + "\",\"txnamt\":\"" + OrderMoney + "\",\"merid\":\"" + merId + "\",\"payway\":\"" + JsPayWay + "\",\"orderid\":\"" + orderId + "\",\"backurl\":\"" + NoticeUrl + "\"}";

                string DataBase64 = LokFuEncode.Base64Encode(PostJson, "utf-8");
                string Sign       = (DataBase64 + merKey).GetMD5();

                DataBase64 = HttpUtility.UrlEncode(DataBase64);
                string PostData = string.Format("req={0}&sign={1}", DataBase64, Sign);

                //本通道支持直联公众号
                if (IsWeiXinBrowser && Action == "WxJsApi")
                {
                    Orders.PayId = "公众号支付";
                    Entity.SaveChanges();
                    string gateway_url = "https://api.zhifujiekou.com/apis/wxjspaygateway";
                    string GoUrl       = gateway_url + "?" + PostData;
                    Response.Redirect(GoUrl);
                    return(View("Null"));
                }

                string  HF_Url = "https://api.zhifujiekou.com/api/mpgateway";
                string  Ret    = Utils.PostRequest(HF_Url, PostData, "utf-8");
                JObject JS     = new JObject();
                try
                {
                    JS = (JObject)JsonConvert.DeserializeObject(Ret);
                }
                catch (Exception)
                {
                    Utils.WriteLog("[Order_HF_Err]:【PostData】" + PostData + "\n【Ret】" + Ret, "ShopErr");
                    ViewBag.ErrorMsg = "返回数据异常!";
                    return(View("Error"));
                }
                string resp = JS["resp"].ToString();
                Ret = LokFuEncode.Base64Decode(resp, "utf-8");
                try
                {
                    JS = (JObject)JsonConvert.DeserializeObject(Ret);
                }
                catch (Exception)
                {
                    Utils.WriteLog("[Order_HF_Err]:【Ret】" + Ret, "ShopErr");
                    ViewBag.ErrorMsg = "返回结果异常!";
                    return(View("Error"));
                }
                string respcode = JS["respcode"].ToString();
                if (respcode != "00")
                {
                    string respmsg = JS["respmsg"].ToString();
                    Utils.WriteLog("[Order_HF_Err]:【" + respcode + "】" + respmsg, "ShopErr");
                    ViewBag.ErrorMsg = respmsg;
                    return(View("Error"));
                }
                if (JS["formaction"] == null)
                {
                    Utils.WriteLog("[Order_HF_Err]:【formaction NULL】" + Ret, "ShopErr");
                    ViewBag.ErrorMsg = "未能生成二维码";
                    return(View("Error"));
                }
                Orders.PayId = JS["formaction"].ToString();
            }
            #endregion

            this.ViewBag.Orders = Orders;
            return(View());
        }
コード例 #23
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[ShareTotal3]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }

            Users Users = new Users();

            Users = JsonToObject.ConvertJsonToModel(Users, json);
            if (Users.Token.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }

            Users = Entity.Users.FirstOrDefault(n => n.Token == Users.Token);
            if (Users == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (Users.State != 1)
            {
                DataObj.OutError("2003");
                return;
            }
            if (Users.CardStae != 2)//未实名认证
            {
                DataObj.OutError("2006");
                return;
            }
            //if (Users.MiBao != 1)//未设置支付密码
            //{
            //    DataObj.OutError("2008");
            //    return;
            //}

            StringBuilder allsb = new StringBuilder("");

            allsb.Append("{ ");
            #region 分润统计
            DateTime tdate     = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
            DateTime ldate     = tdate.AddDays(-1);
            decimal  Today     = Entity.OrderProfitLog.Where(n => n.UId == Users.Id && n.LogType == 1 && n.AddTime > tdate).Sum(n => (decimal?)n.Profit) ?? 0m;
            decimal  Yesterday = Entity.OrderProfitLog.Where(n => n.UId == Users.Id && n.LogType == 1 && n.AddTime > ldate && n.AddTime < tdate).Sum(n => (decimal?)n.Profit) ?? 0m;
            decimal  Amount    = Entity.ShareTotal.Where(n => n.UId == Users.Id).Sum(o => (decimal?)o.Profit) ?? 0m;
            allsb.Append("\"today\":\"" + Today.ToString("f2") + "\",\"yesterday\":\"" + Yesterday.ToString("f2") + "\",\"total\":\"" + Amount.ToString("f2") + "\",\"list\":");

            #endregion

            string CashName = "PayConfigChange_" + Users.Agent + "_" + Users.Id;
            if (HasCache)
            {
                string StringJson = CacheBuilder.EntityCache.Get(CashName, null) as string;
                if (!StringJson.IsNullOrEmpty())
                {
                    allsb.Append(StringJson + "}");
                    DataObj.Data = allsb.ToString();
                    DataObj.Code = "0000";
                    DataObj.OutString();
                    return;
                }
            }

            #region 降费套餐
            //获取用户所属代理商
            SysAgent SysAgent = Entity.SysAgent.FirstOrDefault(x => x.Id == Users.Agent);
            int      ShowType = 0;
            int      AgentId  = 0;
            if (SysAgent != null)
            {
                SysAgent TopAgent = SysAgentExtensions.GetTopAgent(SysAgent, Entity);
                ShowType = TopAgent.AgentState.HasValue ? TopAgent.AgentState.Value : 0;
                AgentId  = TopAgent.Id;
            }
            //获取顶级代理商
            IList <PayConfigChange> List = null;
            switch (ShowType)
            {
            case 0:     //显示好付
                List = Entity.PayConfigChange.Where(n => n.AgentId == 0 && n.State == 1).ToList();
                break;

            case 1:     //不显示
                List = new List <PayConfigChange>();
                break;

            case 2:     //显示代理商
                List = Entity.PayConfigChange.Where(n => n.AgentId == AgentId && n.State == 1).ToList();
                break;
            }
            StringBuilder sb = new StringBuilder("");
            sb.Append("[");
            int i = 0;
            foreach (var p in List)
            {
                //处理数据
                List <PayConfigTemp> list = Entity.PayConfigTemp.Where(n => n.PCCId == p.Id && n.State == 1).ToList();
                bool isAct     = false;//是否可升级,默认不能升级
                var  PCTDelIds = new List <int>();
                foreach (var pp in list)
                {
                    pp.Cols = "PId,Name,Cost,GroupType,Poundage";
                    PayConfig PC = Entity.PayConfig.FirstOrDefault(n => n.Id == pp.PId && n.State == 1);
                    if (PC != null)
                    {
                        pp.Name      = PC.Name;
                        pp.GroupType = PC.GroupType;
                        pp.Poundage  = 0;
                        UserPay UP = Entity.UserPay.FirstOrNew(n => n.UId == Users.Id && n.PId == pp.PId);
                        if (pp.Cost < UP.Cost)
                        {//只要有一个比原配置低就可升级
                            isAct = true;
                        }
                        else
                        {
                            PCTDelIds.Add(pp.Id);
                        }
                    }
                    else
                    {
                        PCTDelIds.Add(pp.Id);
                    }
                }
                if (PCTDelIds.Count > 0)
                {
                    list.RemoveAll(o => PCTDelIds.Contains(o.Id));
                }


                if (p.CState == 1)
                {//本套餐可升级提现费率
                    //用户可升级提现费率或提现服务费
                    if (p.Cash0 < Users.Cash0 || p.ECash0 < Users.ECash0)
                    {
                        var T0Cash = new PayConfigTemp()
                        {
                            Poundage  = p.ECash0,
                            Cost      = (double)p.Cash0,
                            GroupType = "Cash",
                            Name      = "T0提现",
                            PId       = 0,
                        };
                        T0Cash.Cols = "PId,Name,Cost,GroupType,Poundage";
                        list.Add(T0Cash);
                        isAct = true;
                    }
                    //var T0Cash = new PayConfigTemp()
                    //{
                    //    Poundage = p.ECash0,
                    //    Cost = (double)p.Cash0,
                    //    GroupType = "Cash",
                    //    Name = "T0提现",
                    //    PId = 0,
                    //};
                    //T0Cash.Cols = "PId,Name,Cost,GroupType,Poundage";
                    //list.Add(T0Cash);
                    //isAct = true;
                }

                if (p.EState == 1)
                {                                                         //本套餐可升级提现费率
                    //用户可升级提现费率或提现服务费
                    if (p.Cash1 < Users.Cash1 || p.ECash1 < Users.ECash1) //用户可升级提现费率
                    {
                        var T1Cash = new PayConfigTemp()
                        {
                            Poundage  = p.ECash1,
                            Cost      = (double)p.Cash1,
                            GroupType = "Cash",
                            Name      = "T1提现",
                            PId       = 0,
                        };
                        T1Cash.Cols = "PId,Name,Cost,GroupType,Poundage";
                        list.Add(T1Cash);
                        isAct = true;
                    }

                    //var T1Cash = new PayConfigTemp()
                    //{
                    //    Poundage = p.ECash1,
                    //    Cost = (double)p.Cash1,
                    //    GroupType = "Cash",
                    //    Name = "T1提现",
                    //    PId = 0,
                    //};
                    //T1Cash.Cols = "PId,Name,Cost,GroupType,Poundage";
                    //list.Add(T1Cash);
                    //isAct = true;
                }
                if (!isAct)
                {
                    p.State = 0;
                }
                //处理数据End
                if (p.State == 1)
                {
                    if (i > 0)
                    {
                        sb.Append(",");
                    }
                    sb.Append("{");
                    sb.Append(p.ToStr());
                    sb.Append(",");
                    sb.Append(list.EntityToString());
                    sb.Append("}");
                    i++;
                }
            }
            sb.Append("]");

            string data = sb.ToString();
            if (HasCache)
            {
                CacheBuilder.EntityCache.Remove(CashName, null);
                CacheBuilder.EntityCache.Add(CashName, data, DateTime.Now.AddMinutes(6), null);
            }

            allsb.Append(sb.ToString() + "}");
            #endregion

            DataObj.Data = allsb.ToString();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
コード例 #24
0
ファイル: UserController.cs プロジェクト: hlxaaa/TakeAway
        public HttpResponseMessage Charge(UserReq req)
        {
            var tokenStr = req.Token;
            var userId   = Convert.ToInt32(req.userId);

            Token token = CacheHelper.GetUserToken(tokenStr);

            if (token == null)
            {
                return(ControllerHelper.Instance.JsonResult(400, "token失效"));
            }
            if (token.Payload.UserID != userId)
            {
                return(ControllerHelper.Instance.JsonResult(400, "token错误"));
            }


            var     payType          = req.payType;
            var     payMoney         = Convert.ToDecimal(req.payMoney);
            var     Spbill_create_ip = req.spbill_create_ip;
            var     out_trade_no     = StringHelperHere.Instance.GetTimeStamp() + StringHelperHere.Instance.GetLastFiveStr(userId.ToString());
            UserPay up = new UserPay();

            up.type       = 0;
            up.status     = false;
            up.userId     = userId;
            up.createTime = DateTime.Now;
            up.takeType   = payType;
            up.outTradeNo = out_trade_no;
            up.money      = payMoney;
            UserPayOper.Instance.Add(up);

            if (payType == "alipay")
            {
                //var str = alipay.CreateAlipayOrder(chargeMoney, out_trade_no, "http://" + apiHost + "/user/chargeByAlipayNotify");

                AlipayHelperHere a = new AlipayHelperHere();
                var b = a.CreateAlipayOrder(req.payMoney, out_trade_no, "https://fan-di.com/notify/chargeByAlipayNotify");

                JObject jo = new JObject();
                jo.Add("payType", "alipay");
                jo.Add("payStr", b);

                return(ControllerHelper.Instance.JsonResult(200, JsonConvert.SerializeObject(jo), ""));
            }
            else
            {
                WXPayHelperHere w = new WXPayHelperHere();
                var             b = w.CreateWXOrder(payMoney, out_trade_no, "https://fan-di.com/notify/ChargeByWxNotify", Spbill_create_ip);

                XmlDocument doc = new XmlDocument();
                doc.LoadXml(b);
                if (doc.DocumentElement["return_code"].InnerText != "SUCCESS")
                {
                    txyInfo txy = new txyInfo();
                    txy.content = JsonConvert.SerializeObject(doc);
                    //txyInfoOper txyOper = new txyInfoOper();
                    txyInfoOper.Instance.Add(txy);
                    return(ControllerHelper.Instance.JsonResult(500, "网络不稳定,请稍后"));
                }

                JObject jo = new JObject();
                jo.Add("payType", "wxpay");
                foreach (XmlNode item in doc.DocumentElement.ChildNodes)
                {
                    if (item.Name != "sign")
                    {
                        jo.Add(item.Name, item.InnerText);
                    }
                }

                var timestamp = StringHelperHere.Instance.GetTimeStamp();
                jo.Add("timestamp", timestamp);
                var dict = new Dictionary <string, string>();

                foreach (var item in jo)
                {
                    if (item.Key == "prepay_id")
                    {
                        dict.Add("prepayid", item.Value.ToString());
                    }
                    if (item.Key == "nonce_str")
                    {
                        dict.Add("noncestr", item.Value.ToString());
                    }
                }

                dict.Add("appid", "wxd8482615c33b8859");
                dict.Add("partnerid", "1494504712");
                dict.Add("package", "Sign=WXPay");
                dict.Add("timestamp", timestamp);

                string sign = StringHelperHere.Instance.GetWXSign(dict, "2BCF8DD9490E328D2FCEDE7B26643231");
                jo.Add("sign", sign);
                return(ControllerHelper.Instance.JsonResult(200, JsonConvert.SerializeObject(jo), ""));
            }
        }
コード例 #25
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[OrderNFC]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }

            OrderF2F OrderF2F = new OrderF2F();

            OrderF2F = JsonToObject.ConvertJsonToModel(OrderF2F, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            #region 获取并处理用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == OrderF2F.Token);
            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                //DataObj.OutError("2006");
                //return;
            }
            if (baseUsers.MiBao != 1)//未设置支付密码
            {
                //DataObj.OutError("2008");
                //return;
            }
            string NeekName = baseUsers.NeekName;
            if (NeekName.IsNullOrEmpty())
            {
                NeekName = baseUsers.TrueName;
            }
            if (NeekName.IsNullOrEmpty())
            {
                NeekName = "货款";
            }
            #endregion

            if (OrderF2F.Action == "Create")
            {
                //处理交易地点
                if (OrderF2F.X.IsNullOrEmpty() || OrderF2F.Y.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
                int PayWay = OrderF2F.PayWay;
                if (PayWay.IsNullOrEmpty())
                {
                    PayWay = 7;//兼容老版本
                }

                //获取系统支付配置
                PayConfig PayConfig = Entity.PayConfig.FirstOrDefault(n => n.Id == PayWay && n.State == 1);
                if (PayConfig == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                if (PayConfig.GroupType != "NFC")
                {
                    DataObj.OutError("1000");
                    return;
                }
                int InType = 0;
                if (!OrderF2F.InType.IsNullOrEmpty())
                {
                    InType = 1;
                }
                SysControl SysControl = new SysControl();
                #region 版本比较 升级之后比较长时间后可以考滤删除版本判断代码
                bool IsNew     = true;
                var  vSysAgent = this.Entity.SysAgent.FirstOrDefault(o => o.Id == baseUsers.Agent);
                if (vSysAgent == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                IsNew = BizExt.NewOrOldVersion(vSysAgent, Equipment, this.Entity);
                #endregion
                if (IsNew)//新版
                {
                    if (InType == 1)
                    {
                        SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == "NFC" && n.PayWay == PayWay && n.LagEntryDay > 0);
                    }
                    else
                    {
                        SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == "NFC" && n.PayWay == PayWay && n.LagEntryDay == 0);
                    }
                }
                else//旧版
                {
                    SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == "NFC" && n.PayWay == PayWay);
                }

                //获取系统支付配置
                if (SysControl == null)
                {
                    DataObj.OutError("1005");
                    return;
                }
                SysControl syscontrol = SysControl.ChkState();
                if (syscontrol.State != 1)
                {
                    DataObj.OutError("1005");
                    return;
                }

                #region 创建交易
                OrderF2F.PayWay  = PayWay;
                OrderF2F.PayType = 0;
                OrderF2F.PayId   = PayConfig.DllName;
                OrderF2F.OType   = 9; //NFC

                //开始处理参数 PayId扣款码,OType通道,7支付宝,8微信
                if (OrderF2F.Amoney.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
                OrderF2F.Amoney = OrderF2F.Amoney.FormatMoney();

                //获取用户支付配置
                UserPay UserPay = Entity.UserPay.FirstOrDefault(n => n.UId == baseUsers.Id && n.PId == PayConfig.Id);
                if (UserPay == null)
                {
                    DataObj.OutError("1000");
                    return;
                }

                //获取分支机构信息
                SysAgent SysAgent = new SysAgent();
                if (!baseUsers.Agent.IsNullOrEmpty())
                {
                    SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent);
                }


                //获取系统配置
                SysSet SysSet = Entity.SysSet.FirstOrDefault();
                if (InType == 1)
                {//客户端传来T+N但是系统没开启时无效
                    if (SysSet.LagEntry == 0)
                    {
                        InType = 0;
                    }
                }
                if (InType == 1)
                {
                    //手续费
                    OrderF2F.Poundage = 0;
                    //商户费率
                    OrderF2F.UserRate = 0;
                    //T+n时,代理佣金为 交易金额*费率
                    decimal AgentPayGet = OrderF2F.Amoney * SysSet.AgentGet;
                    OrderF2F.AgentPayGet = (Double)AgentPayGet;
                    //佣金舍位
                    OrderF2F.AgentPayGet = OrderF2F.AgentPayGet.Floor();
                }
                else
                {
                    //手续费
                    OrderF2F.Poundage = OrderF2F.Amoney * (decimal)UserPay.Cost;
                    //手续费取进
                    OrderF2F.Poundage = OrderF2F.Poundage.Ceiling();
                    //商户费率
                    OrderF2F.UserRate = UserPay.Cost;
                    //分支机构佣金设置为0,待分润计算后再写入
                    OrderF2F.AgentPayGet = 0;
                }

                OrderF2F.UId = baseUsers.Id;

                //到帐金额=支付金额-手续费
                OrderF2F.PayMoney = OrderF2F.Amoney - OrderF2F.Poundage;
                //第三方支付通道率
                OrderF2F.SysRate = (double)PayConfig.Cost;
                //这里是利润计算==========
                //利润=总金额-到帐-支付手续费
                decimal GetAll = OrderF2F.Amoney - OrderF2F.PayMoney - OrderF2F.Amoney * (decimal)OrderF2F.SysRate;
                //利润舍位
                GetAll = GetAll.Floor();
                //总利润
                OrderF2F.AIdPayGet = (double)GetAll;

                OrderF2F.Agent      = SysAgent.Id;//分支机构Id
                OrderF2F.AId        = baseUsers.AId;
                OrderF2F.FId        = 0;
                OrderF2F.OrderState = 1;
                OrderF2F.PayState   = 0;
                OrderF2F.AgentState = 0;
                OrderF2F.AddTime    = DateTime.Now;

                //写入前,判断交易金额限制
                if (OrderF2F.Amoney < syscontrol.SNum || OrderF2F.Amoney > syscontrol.ENum)
                {
                    DataObj.OutError("1006");
                    return;
                }

                //写入订单总表
                Orders Orders = new Orders();
                Orders.UId   = OrderF2F.UId;
                Orders.TName = NeekName;

                Orders.PayType = OrderF2F.PayType;
                Orders.PayName = "NFC";

                Orders.RUId     = 0;
                Orders.RName    = string.Empty;
                Orders.TType    = OrderF2F.OType;
                Orders.TState   = 1;
                Orders.Amoney   = OrderF2F.Amoney;
                Orders.Poundage = OrderF2F.Poundage;
                Orders.AddTime  = DateTime.Now;
                Orders.PayState = 0;
                Orders.PayWay   = PayConfig.Id;

                Orders.Agent      = OrderF2F.Agent;
                Orders.AgentState = 0;
                Orders.AId        = OrderF2F.AId;
                Orders.FId        = 0;

                string OrderAddress = OrderF2F.OrderAddress;
                if (OrderAddress.IsNullOrEmpty())
                {
                    OrderAddress = Utils.GetAddressByGPS(OrderF2F.X, OrderF2F.Y);
                }
                Orders.OrderAddress = OrderAddress;
                Orders.X            = OrderF2F.X;
                Orders.Y            = OrderF2F.Y;

                if (InType == 1)
                {
                    if (IsNew)//新版
                    {
                        Orders.LagEntryDay = SysControl.LagEntryDay;
                        Orders.LagEntryNum = SysControl.LagEntryNum;
                    }
                    else
                    {
                        Orders.LagEntryDay = SysSet.LagEntryDay;
                        Orders.LagEntryNum = SysSet.LagEntryNum;
                    }
                }
                else
                {
                    Orders.LagEntryDay = 0;
                    Orders.LagEntryNum = 0;
                }

                Entity.Orders.AddObject(Orders);
                Entity.SaveChanges();
                Entity.Refresh(RefreshMode.StoreWins, Orders);

                OrderF2F.OId = Orders.TNum;
                Entity.OrderF2F.AddObject(OrderF2F);
                Entity.SaveChanges();

                //=======================================
                UserTrack.ENo        = DataObj.ENo;
                UserTrack.OPType     = Orders.PayName;
                UserTrack.UserName   = Orders.TNum;
                UserTrack.GPSAddress = Orders.OrderAddress;
                UserTrack.GPSX       = Orders.X;
                UserTrack.GPSY       = Orders.Y;
                Orders.SeavGPSLog(UserTrack, Entity);
                //=======================================

                if (PayConfig.DllName == "NFC")
                {
                    string[] PayConfigArr = PayConfig.QueryArray.Split(',');
                    if (PayConfigArr.Length != 2)
                    {
                        DataObj.OutError("1000");
                        return;
                    }

                    string NoticeUrl = NoticePath + "/PayCenter/NFC/Notice.html";

                    NFCObj NFCObj = new NFCObj();
                    NFCObj.merchantCode    = PayConfigArr[0];                           //      商户编码
                    NFCObj.outOrderId      = Orders.TNum;                               //		订单号
                    NFCObj.outUserId       = Orders.UId.ToString();                     //		用户编号
                    NFCObj.orderCreateTime = Orders.AddTime.ToString("yyyyMMddHHmmss"); //		订单生成时间20140423112324
                    NFCObj.nonceStr        = Utils.RandomSMSCode(10);                   //		随机字符串
                    NFCObj.goodName        = Orders.TName;                              //		商品名称
                    NFCObj.goodsExplain    = Orders.TNum;;                              //		商品详情
                    NFCObj.totalAmount     = (Orders.Amoney * 100).ToString("F0");      //		订单金额	100
                    NFCObj.payNotifyUrl    = NoticeUrl;                                 //		支付通知地址
                    NFCObj.sign            = PayConfigArr[1];
                    NFCObj.lastPayTime     = "";
                    //===================================
                    JavaScriptSerializer jss = new JavaScriptSerializer();
                    string jsonString        = jss.Serialize(NFCObj);
                    try
                    {
                        json = (JObject)JsonConvert.DeserializeObject(jsonString);
                    }
                    catch (Exception Ex)
                    {
                        Log.Write("[OrderNFC_My]:", "【jsonString】" + jsonString, Ex);
                    }
                    Orders.Json = json;
                }
                else if (PayConfig.DllName == "HFNFC")
                {
                    string NoticeUrl = NoticePath + "/PayCenter/HFNFC/Notice.html";

                    string[] PayConfigArr = PayConfig.QueryArray.Split(',');
                    if (PayConfigArr.Length != 3)
                    {
                        DataObj.OutError("1000");
                        return;
                    }
                    //提交结算中心
                    string merId    = PayConfigArr[0]; //商户号
                    string merKey   = PayConfigArr[1]; //商户密钥
                    string JsPayWay = PayConfigArr[2]; //绑定通道

                    string  orderId    = Orders.TNum;  //商户流水号
                    decimal money      = Orders.Amoney * 100;
                    long    intmoney   = Int64.Parse(money.ToString("F0"));
                    string  OrderMoney = intmoney.ToString();//金额,以分为单

                    string PostJson = "{\"action\":\"getOrder\",\"txnamt\":\"" + OrderMoney + "\",\"merid\":\"" + merId + "\",\"payway\":\"" + JsPayWay + "\",\"orderid\":\"" + orderId + "\",\"backurl\":\"" + NoticeUrl + "\"}";

                    string DataBase64 = LokFuEncode.Base64Encode(PostJson, "utf-8");
                    string Sign       = (DataBase64 + merKey).GetMD5();

                    DataBase64 = HttpUtility.UrlEncode(DataBase64);
                    string PostData = string.Format("req={0}&sign={1}", DataBase64, Sign);

                    string HFNFC_Url = "https://api.zhifujiekou.com/api/nfcgateway";

                    string Ret = Utils.PostRequest(HFNFC_Url, PostData, "utf-8");

                    JObject JS = new JObject();
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(Ret);
                    }
                    catch (Exception Ex)
                    {
                        Log.Write("[OrderNFC_HF]:", "【Ret】" + Ret, Ex);
                    }
                    if (JS == null)
                    {
                        DataObj.OutError("1000");
                        return;
                    }
                    string resp = JS["resp"].ToString();
                    Ret = LokFuEncode.Base64Decode(resp, "utf-8");
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(Ret);
                    }
                    catch (Exception Ex)
                    {
                        Log.Write("[OrderNFC_HF]:", "【Ret2】" + Ret, Ex);
                    }
                    if (JS == null)
                    {
                        DataObj.OutError("1000");
                        return;
                    }
                    string respcode = JS["respcode"].ToString();
                    if (respcode != "00")
                    {
                        string respmsg = JS["respmsg"].ToString();
                        DataObj.OutError("1000");
                        Utils.WriteLog("[OrderNFC_HF_Err]:【" + respcode + "】" + respmsg, "orderface");
                        return;
                    }
                    JObject Json = (JObject)JS["webform"];
                    Orders.Json = Json;
                }
                Orders.Cols  = Orders.Cols + ",Json";
                DataObj.Data = Orders.OutJson();
                DataObj.Code = "0000";
                DataObj.OutString();
                #endregion
            }
            if (OrderF2F.Action == "GET")//获取订交易信息
            {
                //开始处理参数
                if (OrderF2F.OId.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
                Orders Orders = Entity.Orders.FirstOrDefault(n => n.TNum == OrderF2F.OId && n.UId == baseUsers.Id);
                if (Orders == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                OrderF2F  Orderf2f  = Entity.OrderF2F.FirstOrDefault(n => n.OId == OrderF2F.OId && n.UId == baseUsers.Id);
                PayConfig PayConfig = Entity.PayConfig.FirstOrNew(n => n.Id == Orders.PayWay);
                if (Orders.TState == 1 && Orders.PayState == 0)
                {
                    if (PayConfig.DllName == "NFC")
                    {
                        //1000000951,f38e989d-900f-4768-8a01-f6667a21f7d3
                        string[] QueryArr = PayConfig.QueryArray.Split(',');
                        if (QueryArr.Length == 2)
                        {
                            string merchantCode = QueryArr[0];
                            string Key          = QueryArr[1];
                            string outOrderId   = Orders.TNum;
                            string dataStr      = "merchantCode=" + merchantCode + "&outOrderId=" + outOrderId;
                            string signStr      = dataStr + "&KEY=" + Key;
                            string sign         = signStr.GetMD5().ToUpper();
                            string dataJson     = "{\"merchantCode\":\"" + merchantCode + "\",\"outOrderId\":\"" + outOrderId + "\",\"sign\":\"" + sign + "\"}";
                            string postData     = "{\"param\":" + dataJson + ",\"project_id\":\"WEPAYPLUGIN_PAY\"}";
                            string postUrl      = "https://payment.kklpay.com/query/queryOrder.do";
                            string Ret          = Utils.GetPostJson(postUrl, postData);
                            //"{"code":"00","data":{"amount":1,"instructCode":"11001998044","merchantCode":"1000000951","outOrderId":"201511170900077","replyCode":"00","sign":"EA778C87B5ACDCBC7735BB78C15CAC72","transTime":"20151117174726","transType":"00200"},"msg":"成功"}"
                            JObject JS = new JObject();
                            try
                            {
                                JS = (JObject)JsonConvert.DeserializeObject(Ret);
                            }
                            catch (Exception Ex)
                            {
                                Utils.WriteLog("[OrderNFC]:JSON[" + Ret + "]" + Ex.ToString(), "orderface");
                            }
                            if (JS != null)
                            {
                                string code = JS["code"].ToString();//返回状态--
                                if (code == "00")
                                {
                                    JObject JSD = (JObject)JS["data"];
                                    if (JSD != null)
                                    {
                                        string amount        = JSD["amount"].ToString();       //交易金额 单位分
                                        string instructCode  = JSD["instructCode"].ToString(); //交易单号
                                        string merchantCodeR = JSD["merchantCode"].ToString(); //商户号
                                        string outOrderIdR   = JSD["outOrderId"].ToString();   //订单号
                                        string replyCode     = JSD["replyCode"].ToString();    //交易状态
                                        string transTime     = JSD["transTime"].ToString();    //交易时间
                                        string transType     = JSD["transType"].ToString();    //交易类型
                                        string signR         = JSD["sign"].ToString();
                                        //================================================
                                        PayLog PayLog = new PayLog();
                                        PayLog.PId     = PayConfig.Id;
                                        PayLog.OId     = outOrderId;
                                        PayLog.TId     = instructCode;
                                        PayLog.Amount  = decimal.Parse(amount) / 100;
                                        PayLog.Way     = "GET";
                                        PayLog.AddTime = DateTime.Now;
                                        PayLog.Data    = Ret;
                                        PayLog.State   = 1;
                                        Entity.PayLog.AddObject(PayLog);
                                        Entity.SaveChanges();
                                        //================================================
                                        if (replyCode == "00")
                                        {
                                            if (merchantCodeR == merchantCode)
                                            {
                                                int factmoney = int.Parse(amount);
                                                if (((int)(Orders.Amoney * 100)) == factmoney)
                                                {
                                                    //Orders.PayState = 1;//此处不保存支付状态,由通知返回再操作
                                                    Orders = Orders.PaySuccess(Entity);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        //PaySuccess
                    }
                    else if (PayConfig.DllName == "HFNFC")
                    {
                        string[] QueryArr = PayConfig.QueryArray.Split(',');
                        if (QueryArr.Length == 3)
                        {
                            //提交结算中心
                            string merId      = QueryArr[0]; //商户号
                            string merKey     = QueryArr[1]; //商户密钥
                            string orderId    = Orders.TNum; //商户流水号
                            string PostJson   = "{\"merid\":\"" + merId + "\",\"orderid\":\"" + orderId + "\"}";
                            string DataBase64 = LokFuEncode.Base64Encode(PostJson, "utf-8");
                            string Sign       = (DataBase64 + merKey).GetMD5();
                            DataBase64 = HttpUtility.UrlEncode(DataBase64);
                            string PostData  = string.Format("req={0}&sign={1}", DataBase64, Sign);
                            string HFNFC_Url = "https://api.zhifujiekou.com/api/query";
                            string Ret       = Utils.PostRequest(HFNFC_Url, PostData, "utf-8");

                            JObject JS = new JObject();
                            try
                            {
                                JS = (JObject)JsonConvert.DeserializeObject(Ret);
                            }
                            catch (Exception Ex)
                            {
                                Log.Write("[OrderNFC_HFQuery]:", "【Ret】" + Ret, Ex);
                            }
                            if (JS == null)
                            {
                                DataObj.OutError("1000");
                                return;
                            }
                            string resp = JS["resp"].ToString();
                            Ret = LokFuEncode.Base64Decode(resp, "utf-8");
                            try
                            {
                                JS = (JObject)JsonConvert.DeserializeObject(Ret);
                            }
                            catch (Exception Ex)
                            {
                                Log.Write("[OrderNFC_HFQuery]:", "【Ret2】" + Ret, Ex);
                            }
                            if (JS == null)
                            {
                                DataObj.OutError("1000");
                                return;
                            }
                            string respcode = JS["respcode"].ToString();
                            if (respcode != "00")
                            {
                                string respmsg = JS["respmsg"].ToString();
                                DataObj.OutError("1000");
                                Utils.WriteLog("[OrderNFC_HFQuery_Err]:【" + respcode + "】" + respmsg, "orderface");
                                return;
                            }
                            string resultcode = JS["resultcode"].ToString();
                            if (resultcode == "0000" || resultcode == "1002" || resultcode == "1004")
                            {
                                string txnamt    = JS["txnamt"].ToString();
                                int    factmoney = int.Parse(txnamt);
                                if (((int)(Orders.Amoney * 100)) == factmoney)
                                {
                                    //Orders.PayState = 1;//此处不保存支付状态,由通知返回再操作
                                    Orders = Orders.PaySuccess(Entity);
                                }
                            }
                        }
                        //PaySuccess
                    }
                }
                DataObj.Data = Orders.OutJson();
                DataObj.Code = "0000";
                DataObj.OutString();
            }
        }
コード例 #26
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[UsersPay]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            UserPay UserPay = new UserPay();

            UserPay = JsonToObject.ConvertJsonToModel(UserPay, json);
            //获取用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == UserPay.Token);

            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                DataObj.OutError("2006");
                return;
            }
            if (baseUsers.MiBao != 1)//未设置支付密码
            {
                DataObj.OutError("2008");
                return;
            }

            IList <PayConfig> PayConfigList = Entity.PayConfig.Where(n => n.State == 1).OrderBy(n => n.Sort).ToList();
            IList <UserPay>   UserPayList   = Entity.UserPay.Where(n => n.UId == baseUsers.Id).ToList();
            IList <UserPay>   List          = new List <UserPay>();

            foreach (var p in PayConfigList)
            {
                UserPay = UserPayList.FirstOrDefault(n => n.PId == p.Id);
                if (UserPay != null)
                {
                    UserPay.Name = p.Name;
                    List.Add(UserPay);
                }
            }

            DataObj.Data = List.EntityToJson();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
コード例 #27
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[PayConfigChange]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            //JObject pp = (JObject)p;
            Users Users = new Users();

            Users = JsonToObject.ConvertJsonToModel(Users, json);
            if (Users.Token.IsNullOrEmpty())
            {
                //
                DataObj.OutError("1000");
                return;
            }

            Users = Entity.Users.FirstOrDefault(n => n.Token == Users.Token);
            if (Users == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (Users.State != 1)
            {
                DataObj.OutError("2003");
                return;
            }
            if (Users.CardStae != 2)//未实名认证
            {
                DataObj.OutError("2006");
                return;
            }
            if (Users.MiBao != 1)//未设置支付密码
            {
                DataObj.OutError("2008");
                return;
            }

            string CashName = "PayConfigChange_" + Users.Agent + "_" + Users.Id;

            if (HasCache)
            {
                string StringJson = CacheBuilder.EntityCache.Get(CashName, null) as string;
                if (!StringJson.IsNullOrEmpty())
                {
                    DataObj.Data = StringJson;
                    DataObj.Code = "0000";
                    DataObj.OutString();
                    return;
                }
            }

            //获取用户所属代理商
            SysAgent SysAgent = Entity.SysAgent.FirstOrDefault(x => x.Id == Users.Agent);
            int      ShowType = 0;
            int      AgentId  = 0;

            if (SysAgent != null)
            {
                SysAgent TopAgent = SysAgentExtensions.GetTopAgent(SysAgent, Entity);
                ShowType = TopAgent.AgentState.HasValue ? TopAgent.AgentState.Value : 0;
                AgentId  = TopAgent.Id;
            }
            //获取顶级代理商
            IList <PayConfigChange> List = null;

            switch (ShowType)
            {
            case 0:     //显示好付
                List = Entity.PayConfigChange.Where(n => n.AgentId == 0 && n.State == 1).ToList();
                break;

            case 1:     //不显示
                List = new List <PayConfigChange>();
                break;

            case 2:     //显示代理商
                List = Entity.PayConfigChange.Where(n => n.AgentId == AgentId && n.State == 1).ToList();
                break;
            }
            StringBuilder sb = new StringBuilder("");

            sb.Append("[");
            int i = 0;

            foreach (var p in List)
            {
                //处理数据
                IList <PayConfigTemp> list = Entity.PayConfigTemp.Where(n => n.PCCId == p.Id && n.State == 1).ToList();
                bool isAct = false;//是否可升级,默认不能升级
                foreach (var pp in list)
                {
                    pp.Cols = "PId,Name,Cost";
                    PayConfig PC = Entity.PayConfig.FirstOrNew(n => n.Id == pp.PId && n.State == 1);
                    pp.Name = PC.Name;
                    UserPay UP = Entity.UserPay.FirstOrNew(n => n.UId == Users.Id && n.PId == pp.PId);
                    if (pp.Cost < UP.Cost)
                    {//只要有一个比原配置低就可升级
                        isAct = true;
                    }
                }
                if (p.CState == 1)
                {                              //本套餐可升级提现费率
                    if (p.Cash0 < Users.Cash0) //用户可升级提现费率
                    {
                        isAct = true;
                    }
                    if (p.ECash0 < Users.ECash0)//用户可升级提现服务费
                    {
                        isAct = true;
                    }
                }
                else
                {
                    p.Cash0  = -1;
                    p.ECash0 = -1;
                }
                if (p.EState == 1)
                {
                    //本套餐可升级提现服务费
                    if (p.Cash1 < Users.Cash1)//用户可升级提现费率
                    {
                        isAct = true;
                    }
                    if (p.ECash1 < Users.ECash1)//用户可升级提现服务费
                    {
                        isAct = true;
                    }
                }
                else
                {
                    p.Cash1  = -1;
                    p.ECash1 = -1;
                }
                if (!isAct)
                {
                    p.State = 0;
                }
                //处理数据End
                if (p.State == 1)
                {
                    if (i > 0)
                    {
                        sb.Append(",");
                    }
                    sb.Append("{");
                    sb.Append(p.ToStr());
                    sb.Append(",");
                    sb.Append(list.EntityToString());
                    sb.Append("}");
                    i++;
                }
            }
            sb.Append("]");

            string data = sb.ToString();

            if (HasCache)
            {
                CacheBuilder.EntityCache.Remove(CashName, null);
                CacheBuilder.EntityCache.Add(CashName, data, DateTime.Now.AddMinutes(6), null);
            }
            DataObj.Data = data;

            DataObj.Code = "0000";
            DataObj.OutString();
            //Tools.OutString(ErrInfo.Return("0000"));
        }
コード例 #28
0
        public void OpenOrBindUser(int id, string PowerID = "")
        {
            SysAgent SysAgent = Entity.SysAgent.FirstOrDefault(n => n.Id == id);

            if (!SysAgent.MyUId.IsNullOrEmpty())
            {
                //已绑定
                return;
            }
            SysAdmin SysAdmin = new SysAdmin();
            SysSet   ss       = new SysSet();

            ss.SMSEnd = BasicSet.SMSEnd;

            if (SysAgent.AdminId.IsNullOrEmpty())
            {
                //未绑定管理员
                SysAdmin = Entity.SysAdmin.Where(n => n.UserName == SysAgent.LinkMobile).OrderBy(n => n.Id).FirstOrDefault();
                if (SysAdmin == null)
                {
                    //获取是否开通过管理员
                    SysAdmin = Entity.SysAdmin.Where(n => n.AgentId == SysAgent.Id).FirstOrDefault();
                    if (SysAdmin == null)
                    {
                        //开通管理员帐号
                        SysAdmin            = new SysAdmin();
                        SysAdmin.UserName   = SysAgent.LinkMobile;
                        SysAdmin.TrueName   = SysAgent.Linker;
                        SysAdmin.Mobile     = SysAgent.LinkMobile;
                        SysAdmin.Email      = "";
                        SysAdmin.State      = SysAgent.State;
                        SysAdmin.LoginTimes = 0;
                        SysAdmin.AddTime    = DateTime.Now;
                        SysAdmin.AgentId    = SysAgent.Id;
                        SysAdmin.PowerID    = PowerID;
                        string PassWord = Utils.GetCode();
                        SysAdmin.PassWord = PassWord.GetAdminMD5();
                        Entity.SysAdmin.AddObject(SysAdmin);
                        Entity.SaveChanges();
                        SysAgent.AdminId = SysAdmin.Id;
                        Entity.SaveChanges();
                        if (SysAgent.AdminId.IsNullOrEmpty())
                        { //绑定第一个管理员
                            SysAgent.AdminId = SysAdmin.Id;
                        }
                        Entity.SaveChanges();
                        //开通后发送短信
                        string SendText = "您的服务商管理账户已经开通,帐号:{0},密码:{1}。";
                        SendText = string.Format(SendText, SysAdmin.UserName, PassWord);
                        this.SendSMS(SendText, SysAdmin.Mobile, ss);
                    }
                }
                if (SysAdmin.AgentId.IsNullOrEmpty())
                {
                    //所属手机号是管理员
                    return;
                }
                if (SysAdmin.AgentId != SysAgent.Id)
                {
                    //手机号所属于管理员不属于本代理商
                    return;
                }
                SysAgent.AdminId = SysAdmin.Id;
                Entity.SaveChanges();
            }
            Users Users = Entity.Users.FirstOrDefault(n => n.UserName == SysAgent.LinkMobile);

            if (Users == null)
            {
                //注册用户
                Users          = new Users();
                Users.UserName = SysAgent.LinkMobile;
                Users.Mobile   = SysAgent.LinkMobile;
                string PassWord = Utils.GetCode();
                Users.PassWord    = PassWord.GetMD5();
                Users.RegAddress  = "下级代理自动开通";
                Users.X           = "0";
                Users.Y           = "0";
                Users.MobileState = 2;
                Users.EmailState  = 0;
                Users.CardStae    = 0;
                Users.State       = 0;
                Users.Amount      = 0;
                Users.Frozen      = 0;
                Users.AddTime     = DateTime.Now;
                Users.PayPwd      = "";
                Users.Agent       = SysAgent.Id;//默认指定
                Users.SAId        = SysAgent.Id;
                //Users.SALevel = SysAgent.Levels;
                Users.AId = SysAdmin.Id;//默认指定
                Entity.Users.AddObject(Users);
                Entity.SaveChanges();
                //=======================================
                UserTrack UserTrack = new UserTrack();
                UserTrack.ENo        = string.Empty;
                UserTrack.OPType     = "下级代理开通";
                UserTrack.IfYY       = string.Empty;
                UserTrack.EqMobile   = string.Empty;
                UserTrack.SysVer     = string.Empty;
                UserTrack.SoftVer    = string.Empty;
                UserTrack.SignalType = string.Empty;
                UserTrack.GPSAddress = string.Empty;
                UserTrack.GPSX       = "0";
                UserTrack.GPSY       = "0";
                Users.SeavGPSLog(UserTrack, Entity);
                //=======================================
                SysAgent.MyUId = Users.Id;
                Entity.SaveChanges();
                //自动开通
                //IList<PayConfig> PCList = Entity.PayConfig.Where(n => n.State == 1).ToList();
                //foreach (var PC in PCList)
                //{
                //    UserPay UserPay = new UserPay();
                //    UserPay.UId = Users.Id;
                //    UserPay.PId = PC.Id;
                //    UserPay.Cost = (double)PC.CostUser;
                //    Entity.UserPay.AddObject(UserPay);
                //}
                //使用代理配置
                IList <UserPayAgent> UPAList = Entity.UserPayAgent.Where(n => n.AId == SysAgent.Id).OrderBy(n => n.PId).ToList();
                foreach (var p in UPAList)
                {
                    UserPay UserPay = new UserPay();
                    UserPay.UId  = Users.Id;
                    UserPay.PId  = p.PId;
                    UserPay.Cost = p.Cost;
                    Entity.UserPay.AddObject(UserPay);
                }

                SysSet Sys = Entity.SysSet.FirstOrDefault();
                //Users.Cash0 = Sys.Cash0;
                //Users.ECash0 = Sys.ECash0;
                //Users.Cash1 = Sys.Cash1;
                //Users.ECash1 = Sys.ECash1;
                //使用代理配置
                Users.Cash0  = SysAgent.Cash0;
                Users.Cash1  = SysAgent.Cash1;
                Users.ECash0 = SysAgent.ECash0;
                Users.ECash1 = SysAgent.ECash1;

                Users.State = 1;
                Entity.SaveChanges();
                //自动开通End
                //开通后发送短信
                string SendText = "您的钱包账户已经开通,帐号:{0},密码:{1}。";
                SendText = string.Format(SendText, Users.UserName, PassWord);
                this.SendSMS(SendText, Users.UserName, ss);
            }
            else
            {
                SysAgent.MyUId = Users.Id;
                //钱包帐户所属于代理商改成自己,避免推广用户属于原代理商
                Users.Agent = SysAgent.Id; //默认指定
                Users.SAId  = SysAgent.Id;
                Users.AId   = SysAdmin.Id; //默认指定
                Users.MyPId = 0;
                Entity.SaveChanges();
                string SendText = "您的钱包账户“{0}”,绑定成为{1}的结算帐户。";
                SendText = string.Format(SendText, Users.UserName, SysAgent.Name);
                this.SendSMS(SendText, Users.UserName, ss);
            }
        }
コード例 #29
0
        public void Save(Users Users)
        {
            if (Users.UserName.IsNullOrEmpty() || Users.PassWord.IsNullOrEmpty() || Users.Code.IsNullOrEmpty())
            {
                Response.Write("0");
                return;
            }
            //验证是否重复
            Users Old = Entity.Users.FirstOrDefault(n => n.UserName == Users.UserName);

            if (Old != null)
            {
                Response.Write("1");
                return;
            }
            if (Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == Users.UserName && UBL.State == 1) != null)
            {
                Response.Write("6");
                return;
            }
            //手机验证码
            //失效之前获取验证码
            SMSCode SMSCode = Entity.SMSCode.OrderByDescending(n => n.Id).FirstOrDefault(n => n.UId == 0 && n.Mobile == Users.UserName && n.CType == 1 && n.Code == Users.Code);

            if (SMSCode == null)
            {
                Response.Write("2");
                return;
            }
            SysSet SysSet = Entity.SysSet.FirstOrNew();

            if (SMSCode.State != 1)
            {
                Response.Write("3");
                return;
            }
            if (SMSCode.AddTime.AddMinutes(SysSet.SMSActives) < DateTime.Now)
            {
                Response.Write("4");
                return;
            }
            Users.Agent = 1; //默认指定
            Users.AId   = 2; //默认指定
            if (!Users.MyPId.IsNullOrEmpty())
            {
                Users U = Entity.Users.FirstOrDefault(n => n.Id == Users.MyPId && n.State == 1);
                if (U == null)
                {
                    Users.MyPId = 0;
                    Utils.WriteLog("Users.MyPId=" + Users.MyPId + "Is Null!", "UsersRegAgent" + DateTime.Now.ToString("yyyy-MM-dd"));
                }
                else
                {
                    Users.Agent = U.Agent; //默认指定
                    Users.AId   = U.AId;   //默认指定
                }
            }
            else
            {
                Users.MyPId = 0;
            }
            if (!Users.PayConfigId.IsNullOrEmpty())
            {
                PayConfigChange PCC = Entity.PayConfigChange.FirstOrDefault(n => n.Id == Users.PayConfigId && n.State == 1 && n.ShareNumber > 0);
                if (PCC == null)
                {
                    Users.PayConfigId = 0;
                }
                Users.ShareType = 2;
            }
            else
            {
                Users.PayConfigId = 0;
            }
            if (Users.ShareType == 2)
            {
                if (Users.PayConfigId.IsNullOrEmpty() || Users.MyPId.IsNullOrEmpty())
                {
                    //Users.MyPId = 0;
                    Users.PayConfigId = 0;
                }
            }
            else
            {
                if (Users.MyPId.IsNullOrEmpty())
                {
                    Users.MyPId = 0;
                }
                Users.PayConfigId = 0;
            }
            if (Users.MyPId == 0)
            {
                Response.Write("5");
                return;
            }

            Users.PassWord   = Users.PassWord.GetMD5();
            Users.Mobile     = Users.UserName;
            Users.EmailState = 0;
            Users.CardStae   = 0;
            Users.State      = 0;
            Users.Amount     = 0;
            Users.Frozen     = 0;
            Users.AddTime    = DateTime.Now;
            Users.PayPwd     = "";
            //Users.Agent = 1;//默认指定
            //Users.AId = 2;//默认指定
            Users.MobileState = 2;
            Users.RegAddress  = "网页注册," + Utils.GetAddressAndIp();
            Users.X           = "0";
            Users.Y           = "0";
            Entity.Users.AddObject(Users);
            Entity.SaveChanges();
            //=======================================
            UserTrack UserTrack = new UserTrack();

            UserTrack.ENo        = string.Empty;
            UserTrack.OPType     = "网页注册";
            UserTrack.IfYY       = string.Empty;
            UserTrack.EqMobile   = string.Empty;
            UserTrack.SysVer     = Utils.GetCustomOS();      //操作系统版本
            UserTrack.SoftVer    = Utils.GetCustomBrowser(); //软件版本
            UserTrack.SignalType = string.Empty;
            UserTrack.GPSAddress = string.Empty;
            UserTrack.GPSX       = "0";
            UserTrack.GPSY       = "0";
            Users.SeavGPSLog(UserTrack, Entity);
            //=======================================
            SMSCode.State = 2;
            SMSCode.UId   = Users.Id;
            Entity.SaveChanges();
            //自动开通
            //IList<PayConfig> PCList = Entity.PayConfig.Where(n => n.State == 1).ToList();
            //foreach (var PC in PCList)
            //{
            //    UserPay UserPay = new UserPay();
            //    UserPay.UId = Users.Id;
            //    UserPay.PId = PC.Id;
            //    UserPay.Cost = (double)PC.CostUser;
            //    Entity.UserPay.AddObject(UserPay);
            //}

            SysAgent SysAgent = Entity.SysAgent.FirstOrDefault(n => n.Id == Users.Agent && n.State == 1);

            if (SysAgent == null)
            {
                Utils.WriteLog("Users.Id=" + Users.Id + "Read Agent Null Users.Agent=" + Users.Agent + "!", "UsersRegAgent" + DateTime.Now.ToString("yyyy-MM-dd"));
                SysAgent    = Entity.SysAgent.FirstOrDefault(n => n.Id == 1 && n.State == 1);
                Users.Agent = SysAgent.Id;
                Users.AId   = SysAgent.AdminId.GetValueOrDefault();
            }
            //使用代理配置
            IList <UserPayAgent> UPAList = Entity.UserPayAgent.Where(n => n.AId == SysAgent.Id).OrderBy(n => n.PId).ToList();

            foreach (var p in UPAList)
            {
                UserPay UserPay = new UserPay();
                UserPay.UId  = Users.Id;
                UserPay.PId  = p.PId;
                UserPay.Cost = p.Cost;
                Entity.UserPay.AddObject(UserPay);
            }

            //SysSet Sys = Entity.SysSet.FirstOrDefault();
            //Users.Cash0 = Sys.Cash0;
            //Users.ECash0 = Sys.ECash0;
            //Users.Cash1 = Sys.Cash1;
            //Users.ECash1 = Sys.ECash1;

            //使用代理配置
            Users.Cash0  = SysAgent.Cash0;
            Users.Cash1  = SysAgent.Cash1;
            Users.ECash0 = SysAgent.ECash0;
            Users.ECash1 = SysAgent.ECash1;

            Users.State = 1;
            Entity.SaveChanges();
            //自动开通End
            Response.Write("OK");
        }
コード例 #30
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[UsersReg_2_0]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            //JObject pp = (JObject)p;
            Users Users = new Users();

            Users = JsonToObject.ConvertJsonToModel(Users, json);
            if (Users.Mobile.IsNullOrEmpty())
            {
                //
                DataObj.OutError("1000");
                return;
            }

            //验证是否重复
            Users Old = Entity.Users.FirstOrDefault(n => n.Mobile == Users.Mobile);

            if (Old != null)
            {
                DataObj.OutError("2005");
                return;
            }
            //手机号码黑名单验证
            if (Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == Users.Mobile && UBL.State == 1) != null)
            {
                //提示暂不支持该手机号入网
                DataObj.OutError("2035");
                return;
            }
            Users baseUsers = null;

            if (Users.Token.IndexOf("Print|") == -1)
            {
                baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Users.Token);
            }
            else
            {
                baseUsers = Entity.Users.FirstOrDefault(n => n.PrintToken == Users.Token);
            }
            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                DataObj.OutError("2006");
                return;
            }
            if (baseUsers.MiBao != 1)//未设置支付密码
            {
                //DataObj.OutError("2008");
                //return;
            }

            int IntervalCountAll = Entity.Users.Count(o => o.MyPId == baseUsers.Id && o.ShareType == 4);//统计所有邀请人数

            if (IntervalCountAll > 20)
            {
                //20人以上,验证其认证通过率
                int IntervalCountRZ = Entity.Users.Count(o => o.MyPId == baseUsers.Id && o.ShareType == 4 && o.CardStae == 2);//统计所有邀请并认证人数
                if (IntervalCountRZ * 10 < IntervalCountAll)
                {
                    DataObj.OutError("2102");
                    return;
                }
            }

            SysSet   SysSet        = this.Entity.SysSet.FirstOrNew();
            DateTime IntervalTime  = DateTime.Now.AddSeconds(0 - SysSet.YaoQingIntervalTime);
            int      IntervalCount = this.Entity.Users.Where(o => o.MyPId == baseUsers.Id && o.ShareType == 4 && o.AddTime > IntervalTime).Count();

            if (IntervalCount >= SysSet.YaoQingIntervalNumber)
            {
                DataObj.OutError("2101");
                return;
            }

            //邀请注册
            Users inviteUsers = new Users();

            inviteUsers.UserName = Users.Mobile;
            inviteUsers.Mobile   = Users.Mobile;
            inviteUsers.Agent    = baseUsers.Agent;
            inviteUsers.AId      = baseUsers.AId;
            inviteUsers.MyPId    = baseUsers.Id;

            inviteUsers.ShareType  = 4;
            inviteUsers.RegAddress = "短信邀请";
            inviteUsers.X          = "0";
            inviteUsers.Y          = "0";

            string PassWord = Utils.GetCode();

            inviteUsers.PassWord = PassWord.GetMD5();

            inviteUsers.MobileState = 2;
            inviteUsers.EmailState  = 0;
            inviteUsers.CardStae    = 0;
            inviteUsers.State       = 0;
            inviteUsers.Amount      = 0;
            inviteUsers.Frozen      = 0;
            inviteUsers.AddTime     = DateTime.Now;
            inviteUsers.PayPwd      = "";

            Entity.Users.AddObject(inviteUsers);

            //=======================================
            UserTrack UserTrack = new UserTrack();

            UserTrack.ENo        = string.Empty;
            UserTrack.OPType     = "邀请注册";
            UserTrack.IfYY       = string.Empty;
            UserTrack.EqMobile   = string.Empty;
            UserTrack.SysVer     = string.Empty;
            UserTrack.SoftVer    = string.Empty;
            UserTrack.SignalType = string.Empty;
            UserTrack.GPSAddress = string.Empty;
            UserTrack.GPSX       = "0";
            UserTrack.GPSY       = "0";
            Users.SeavGPSLog(UserTrack, Entity);
            //=======================================

            //自动开通
            //IList<PayConfig> PCList = Entity.PayConfig.Where(n => n.State == 1).ToList();
            //foreach (var PC in PCList)
            //{
            //    UserPay UserPay = new UserPay();
            //    UserPay.UId = inviteUsers.Id;
            //    UserPay.PId = PC.Id;
            //    UserPay.Cost = (double)PC.CostUser;
            //    Entity.UserPay.AddObject(UserPay);
            //}

            SysAgent SysAgent = Entity.SysAgent.FirstOrDefault(n => n.Id == inviteUsers.Agent && n.State == 1);

            if (SysAgent == null)
            {
                SysAgent          = Entity.SysAgent.FirstOrDefault(n => n.Id == 1 && n.State == 1);
                inviteUsers.Agent = SysAgent.Id;
                inviteUsers.AId   = SysAgent.AdminId.GetValueOrDefault();
            }
            //使用代理配置
            IList <UserPayAgent> UPAList = Entity.UserPayAgent.Where(n => n.AId == SysAgent.Id).OrderBy(n => n.PId).ToList();

            foreach (var p in UPAList)
            {
                UserPay UserPay = new UserPay();
                UserPay.UId  = inviteUsers.Id;
                UserPay.PId  = p.PId;
                UserPay.Cost = p.Cost;
                Entity.UserPay.AddObject(UserPay);
            }

            SysSet Sys = Entity.SysSet.FirstOrDefault();

            //inviteUsers.Cash0 = Sys.Cash0;
            //inviteUsers.ECash0 = Sys.ECash0;
            //inviteUsers.Cash1 = Sys.Cash1;
            //inviteUsers.ECash1 = Sys.ECash1;
            //使用代理配置
            inviteUsers.Cash0  = SysAgent.Cash0;
            inviteUsers.Cash1  = SysAgent.Cash1;
            inviteUsers.ECash0 = SysAgent.ECash0;
            inviteUsers.ECash1 = SysAgent.ECash1;

            inviteUsers.State = 1;
            Entity.SaveChanges();
            //自动开通End

            //开通后发送短信
            string NoteDownload = "https://fir.im/he3q";
            string CompanyName  = Sys.Name;
            //查询根代理
            //var CurrentAgent = this.Entity.SysAgent.FirstOrNew(o => o.Id == baseUsers.Agent);//当前代理
            //if (CurrentAgent.Tier == 1)
            //{
            //    if (CurrentAgent.IsTeiPai == 1) {
            //        CompanyName = CurrentAgent.APPName;
            //        NoteDownload = CurrentAgent.NoteDownload.IsNullOrEmpty() ? NoteDownload : CurrentAgent.NoteDownload;
            //    }
            //}
            //else
            //{
            //    var TreeAgent = CurrentAgent.GetAgentsById(Entity);
            //    SysAgent RootAgent = TreeAgent.FirstOrDefault(o => o.Tier == 1);
            //    if (RootAgent.IsTeiPai == 1)
            //    {
            //        CompanyName = RootAgent.APPName;
            //        NoteDownload = RootAgent.NoteDownload.IsNullOrEmpty() ? NoteDownload : RootAgent.NoteDownload;
            //    }
            //}

            //根代理
            //string SendText = "{2}邀请您使用{3},您的账号{0}已开通,登陆密码{1},登陆后请修改登陆密码和尽快实名认证!APP下载地址{4}。";
            //SendText = string.Format(SendText, inviteUsers.UserName, PassWord, baseUsers.Mobile, CompanyName, NoteDownload);
            string SendText = "您的账号{0}已开通,登陆密码{1},登录后请修改登录密码和尽快实名认证!APP下载地址{2}。";

            SendText = string.Format(SendText, inviteUsers.UserName, PassWord, NoteDownload);
            SMSLog SMSLog = new SMSLog();

            SMSLog.SendText = SendText;
            SMSLog.Mobile   = inviteUsers.UserName;
            SMSLog.UId      = baseUsers.Id;

            SysSet ss = new SysSet();

            ss.SMSEnd = Sys.SMSEnd;
            SysAgent SA = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent);

            SA = SA.GetTopAgent(Entity);
            SMSLog.SendSMS(ss, SA, Entity);

            //邀请注册end
            DataObj.Data = "";
            DataObj.Code = "0000";
            DataObj.OutString();
        }
コード例 #31
0
ファイル: UserController.cs プロジェクト: hlxaaa/TakeAway
        public HttpResponseMessage ConvertCoupon(UserReq req)
        {
            var tokenStr = req.Token;
            var userId   = Convert.ToInt32(req.userId);

            Token token = CacheHelper.GetUserToken(tokenStr);

            if (token == null)
            {
                return(ControllerHelper.Instance.JsonResult(400, "token失效"));
            }
            if (token.Payload.UserID != userId)
            {
                return(ControllerHelper.Instance.JsonResult(400, "token错误"));
            }

            var couponNo = req.couponNo;
            var list     = CouponOper.Instance.GetByCouponNo(couponNo);

            if (list.Count < 1)
            {
                return(ControllerHelper.Instance.JsonResult(500, "兑换码不存在"));
            }

            list = list.Where(p => p.isUse == false).ToList();
            if (list.Count < 1)
            {
                return(ControllerHelper.Instance.JsonResult(500, "兑换码已被使用"));
            }

            var coupon     = list.First();
            var now        = DateTime.Now;
            var set        = new SettingRes();
            var couponDays = Convert.ToInt32(set.couponSaveDays);

            if (Convert.ToDateTime(coupon.createTime).AddDays(couponDays) < now)
            {
                return(ControllerHelper.Instance.JsonResult(500, "兑换码已过期"));
            }
            //if ((bool)coupon.isUse)
            //    return ControllerHelper.Instance.JsonResult(500, "兑换码已被使用");


            var ts = coupon.batch;

            if (CouponOper.Instance.isUserUsedCoupon(userId, ts))
            {
                return(ControllerHelper.Instance.JsonResult(500, "已使用过同类型兑换码"));
            }

            coupon.isUse = true;
            if (!(bool)coupon.isRepeat)
            {
                CouponOper.Instance.AddCouponIds(userId, ts);
            }
            CouponOper.Instance.Update(coupon);

            var user     = UserInfoOper.Instance.GetById(userId);
            var userHere = new UserInfo();

            userHere.id     = user.id;
            userHere.coupon = user.coupon + coupon.money;
            UserInfoOper.Instance.Update(userHere);

            UserPay up = new UserPay();

            up.type       = 1;
            up.money      = coupon.money;
            up.userId     = userId;
            up.createTime = DateTime.Now;
            UserPayOper.Instance.Add(up);

            return(ControllerHelper.Instance.JsonResult(200, "兑换成功"));
        }