Exemplo n.º 1
0
        protected void btn_Click(object sender, EventArgs e)
        {
            string ip = common.GetIP.getIPAddress();

            if (isRightUser(tbuser.Text.ToString(), tbpwd.Text.ToString()))
            {
                UserTrack userinfo = new UserTrack(tbuser.Text.ToString(), tbpwd.Text.ToString(), ip.ToString(), "", 0);
                Context.Session["userInfo"] = userinfo;
                Log log = new Log();
                log.InsertUserTrack(0);
                Response.Write("<script>alert('登陆成功! IP:" + userinfo.Ip.ToString() + "');window.location='Default.aspx'</script>");
            }
            else if (isAdmin(tbuser.Text.ToString(), tbpwd.Text.ToString()))
            {
                UserTrack userinfo = new UserTrack(tbuser.Text.ToString(), tbpwd.Text.ToString(), ip.ToString(), "", 0);
                Context.Session["userInfo"] = userinfo;
                Log log = new Log();
                log.InsertUserTrack(0);
                Response.Write("<script>alert('欢迎管理员!');window.location='/admin/Default.aspx'</script>");
            }
            else
            {
                Response.Write("<script>alert('登陆失败,请重新登陆');window.location='/Login.aspx'</script>");
            }
            Response.End();
        }
Exemplo n.º 2
0
        public async Task <UserTrack> Update(UserTrack userTrack)
        {
            var result = dataContext.UserTracks.Update(userTrack);
            await dataContext.SaveChangesAsync();

            return(result.Entity);
        }
Exemplo n.º 3
0
        public void InsertUserTrack(int operation)
        {
            SqlParameter[] para     = new SqlParameter[] { };
            string         kw       = Session["kword"] as string;
            UserTrack      userinfo = (UserTrack)Session["userInfo"];
            string         sql      = string.Format("INSERT INTO News_UserTracks(UserName ,IPAdress,LoginTime,Keyword ,Operation) VALUES ('{0}', '{1}', '{2}', '{3}',{4})", userinfo.Username.ToString(), userinfo.Ip.ToString(), DateTime.Now.ToString("G"), kw, operation);
            int            i        = DBHelper.UpDeInstu(sql, para, System.Data.CommandType.Text);

            DBHelper.close();
        }
Exemplo n.º 4
0
        public UserTrack TryParse(byte[] buffers, out int index)
        {
            index = 0;
            try
            {
                if (buffers == null)
                {
                    return(null);
                }
                index = 0;
                if (buffers.Length < 20)
                {
                    return(null);
                }
                byte[] imsiBytes = ByteUtil.InterceptByteArray(buffers, index, 20);
                index += 20;
                long   imsi       = BitConverter.ToInt64(imsiBytes, 0);
                byte   devByte    = buffers[index++];
                int    dev        = Convert.ToInt16(devByte);
                byte   portByte   = buffers[index++];
                int    port       = Convert.ToInt16(portByte);
                byte[] arfcnBytes = ByteUtil.InterceptByteArray(buffers, index, 2);
                index += 2;
                short arfcn       = BitConverter.ToInt16(arfcnBytes, 0);
                byte  chanNumByte = buffers[index++];

                int chanNum = Convert.ToInt16(chanNumByte);

                byte[] crcBytes = ByteUtil.InterceptByteArray(buffers, index, 2);
                short  crc      = BitConverter.ToInt16(crcBytes, 0);

                var userId = new UserId
                {
                    IMSI    = imsi,
                    Device  = dev,
                    Port    = port,
                    ARFCN   = arfcn,
                    ChanNum = chanNum
                };
                var userTrack = new UserTrack
                {
                    UserId = userId,
                    CRC    = crc,
                };
                return(userTrack);
            }
            catch (Exception ex)
            {
                Log.Error("userTraced parse error", ex);
                return(null);
            }
        }
 public ActionResult GPS(UserTrack UserTrack)
 {
     if (UserTrack.Id != 0)
     {
         UserTrack = Entity.UserTrack.FirstOrDefault(n => n.Id == UserTrack.Id);
     }
     if (UserTrack == null)
     {
         ViewBag.ErrorMsg = "数据不存在";
         return(View("Error"));
     }
     ViewBag.UserTrack = UserTrack;
     return(View());
 }
Exemplo n.º 6
0
        public ResultViewModel <FinishedCourseEditViewModel> FinishCourse(int CourseID, int TrackID)
        {
            ResultViewModel <FinishedCourseEditViewModel> result = new ResultViewModel <FinishedCourseEditViewModel>();

            try
            {
                string Token = Request.Headers.Authorization?
                               .Parameter;
                Dictionary <string, string>
                          cliams = SecurityHelper.Validate(Token);
                int       UserID = int.Parse(cliams.First(i => i.Key == "ID").Value);
                UserTrack T      = userTrackService.Get(UserID, TrackID);
                if (T != null)
                {
                    int UserTrackID = T.ID;
                    //Check If  User Finshed Previous Courses
                    var FinedCourses      = finishedCourseService.Get(i => i.UserTrackID == UserTrackID).Select(i => i.course).ToList(); //html
                    var TrackCourses      = T.Track.Courses.Select(i => i.Course).ToList();                                              //html css js
                    var lastFinshedCourse = FinedCourses.LastOrDefault();                                                                //html
                    var Course            = courseService.GetByID(CourseID);                                                             //js

                    if (TrackCourses.IndexOf(Course) == TrackCourses.IndexOf(lastFinshedCourse) + 1)
                    {
                        FinishedCourseEditViewModel F = finishedCourseService.Add(new FinishedCourseEditViewModel()
                        {
                            ID          = 0,
                            CourseID    = CourseID,
                            TrackID     = TrackID,
                            UserID      = UserID,
                            UserTrackID = UserTrackID
                        });
                        result.Data      = F;
                        result.Successed = true;
                    }
                    else
                    {
                        result.Successed = false;
                        result.Message   = "User Not Finshed Prequest Courses";
                    }
                }
            }
            catch (Exception e)
            {
                result.Successed = false;
                result.Message   = "Error";
            }
            return(result);
        }
Exemplo n.º 7
0
        public void CountItem_UserTrackFromRepository_AreNotEqual()
        {
            var stubUserTrackForTest = new UserTrack()
            {
                UserId      = 4,
                Task        = new EF.DAL.Data.Task(),
                TaskId      = 3,
                TaskName    = "FooTaskName",
                TaskTrack   = new TaskTrack(),
                TaskTrackId = 5,
                TrackDate   = new DateTime().Date,
                TrackNote   = "FooSomeNote"
            };

            stubUserTrackRepository.Create(stubUserTrackForTest);

            Assert.AreNotEqual(2, stubUserTrackRepository.GetAll().Count());
        }
Exemplo n.º 8
0
        public void Create_UserTrackFromRepository_IsNotNull()
        {
            var result = new UserTrack()
            {
                UserId      = 3,
                Task        = new EF.DAL.Data.Task(),
                TaskId      = 1,
                TaskName    = "Foo",
                TaskTrack   = new TaskTrack(),
                TaskTrackId = 1,
                TrackDate   = new DateTime(),
                TrackNote   = "SomeNote"
            };

            stubUserTrackRepository.Create(result);



            Assert.IsNotNull(stubUserTrackRepository.Get(3));
        }
Exemplo n.º 9
0
        public async Task <bool> AddTrack(string userId, int trackId)
        {
            var userTrack = userTrackRepository.GetAll()
                            .FirstOrDefault(t => t.UserId == userId && t.TrackId == trackId);

            if (userTrack == null)
            {
                userTrack = new UserTrack
                {
                    UserId  = userId,
                    TrackId = trackId
                };

                await userTrackRepository.Create(userTrack);

                return(true);
            }

            return(false);
        }
        public ActionResult Index(UserTrack UserTrack, EFPagingInfo <UserTrack> p)
        {
            if (UserTrack.UId.IsNullOrEmpty())
            {
                UserTrack.UId = 0;
            }
            p.SqlWhere.Add(f => f.UId == UserTrack.UId);
            p.OrderByList.Add("Id", "DESC");
            IPageOfItems <UserTrack> UserTrackList = Entity.Selects <UserTrack>(p);

            ViewBag.UserTrackList = UserTrackList;
            Users Users = Entity.Users.FirstOrDefault(n => n.Id == UserTrack.UId);

            if (Users == null)
            {
                ViewBag.ErrorMsg = "数据不存在";
                return(View("Error"));
            }
            ViewBag.Users = Users;
            return(View());
        }
Exemplo n.º 11
0
        // POST: Users/Create
        // To protect from overposting attacks, enable the specific properties you want to bind to, for
        // more details, see http://go.microsoft.com/fwlink/?LinkId=317598.


        public async Task <IActionResult> Build()
        {
            var spotify = await _spotifyClientBuilder.CreateClient();

            if (spotify == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            PrivateUser me = await spotify.UserProfile.Current();

            _user.UserId   = me.Id;
            _user.UserName = me.DisplayName;
            if (me.Images.Any())
            {
                _user.UserProfilePicture = me.Images[0].Url;
            }
            else
            {
                _user.UserProfilePicture = "";
            }



            var user = await _context.Users
                       .FirstOrDefaultAsync(m => m.UserId == me.Id);

            var userNum = _context.Users.Count() + 1;

            _user.UserCode = GenerateUserCode(me.Id) + userNum.ToString();

            if (user == null)
            {
                PersonalizationTopRequest request = new PersonalizationTopRequest();
                request.Limit = 50;

                var tracks = await spotify.Personalization.GetTopTracks(request);

                List <FullTrack> .Enumerator tracksEnumerator = tracks.Items.GetEnumerator();



                var trackNumbers = tracks.Items.Count;
                for (int i = 0; i < trackNumbers; i++)
                {
                    tracksEnumerator.MoveNext();

                    if (tracksEnumerator.Current != null)
                    {
                        //creating a new track and userTracks to map tracks and users
                        Track     newTrack   = new Track();
                        UserTrack userTracks = new UserTrack();

                        //initializing tracks one bu one
                        newTrack.TrackId   = tracksEnumerator.Current.Id;
                        newTrack.TrackName = tracksEnumerator.Current.Name;
                        if (tracksEnumerator.Current.Album.Images.Any())
                        {
                            newTrack.TrackAlbumPicture = tracksEnumerator.Current.Album.Images[0].Url;
                        }
                        else
                        {
                            newTrack.TrackAlbumPicture = "";
                        }
                        newTrack.TrackAlbumPicture = tracksEnumerator.Current.Album.Images[0].Url;

                        //adding track and user to UserTracks model initializing userTracks
                        userTracks.Track = newTrack;
                        userTracks.User  = _user;

                        //adding userTracks to User model
                        _user.UsersTracks.Add(userTracks);

                        //adding userTracks to Track model
                        newTrack.UsersTracks.Add(userTracks);
                        //check if artist exists in db
                        var trackExists = _context.Tracks.Count(a => a.TrackId == newTrack.TrackId);
                        if (trackExists == 0)
                        {
                            await _context.Tracks.AddAsync(newTrack);
                        }
                        else
                        {
                            _context.Tracks.Update(newTrack);
                        }
                    }
                }

                //now put top artist to database

                var artists = await spotify.Personalization.GetTopArtists(request);

                List <FullArtist> .Enumerator artistsEnumerator = artists.Items.GetEnumerator();

                var artistCount = artists.Items.Count;
                for (int i = 0; i < artistCount; i++)
                {
                    artistsEnumerator.MoveNext();

                    if (artistsEnumerator.Current != null)
                    {
                        //creating a new track and userTracks to map tracks and users
                        Artist     newArtist  = new Artist();
                        UserArtist userArtist = new UserArtist();

                        //initializing tracks one bu one
                        newArtist.ArtistId   = artistsEnumerator.Current.Id;
                        newArtist.ArtistName = artistsEnumerator.Current.Name;

                        if (artistsEnumerator.Current.Images.Any())
                        {
                            newArtist.ArtistPicture = artistsEnumerator.Current.Images[0].Url;
                        }
                        else
                        {
                            newArtist.ArtistPicture = "";
                        }
                        //adding track and user to UserTracks model initializing userTracks
                        userArtist.Artist = newArtist;
                        userArtist.User   = _user;

                        //adding userTracks to User model
                        _user.UsersArtists.Add(userArtist);

                        //adding userTracks to Track model
                        newArtist.UsersArtists.Add(userArtist);

                        //check if artist exists in db
                        var artistExists = _context.Artists.Count(a => a.ArtistId == newArtist.ArtistId);
                        if (artistExists == 0)
                        {
                            await _context.Artists.AddAsync(newArtist);
                        }
                        else
                        {
                            _context.Artists.Update(newArtist);
                        }
                    }
                }

                await _context.Users.AddAsync(_user);

                await _context.SaveChangesAsync();

                return(RedirectToAction(actionName: "Home", "Users", new { id = _user.UserId }));
            }



            return(RedirectToAction(actionName: "Home", "Users", new { id = _user.UserId }));
        }
Exemplo n.º 12
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("[FastSetBankController]:", "【Data】" + Data, Ex);
                json = null;
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            UserCard UserCard = new UserCard();

            UserCard = JsonToObject.ConvertJsonToModel(UserCard, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == UserCard.Token);

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

            FastUser FastUser = Entity.FastUser.FirstOrDefault(n => n.UId == baseUsers.Id);

            if (FastUser == null)
            {
                DataObj.OutError("2035");
                return;
            }

            UserCard UC = Entity.UserCard.FirstOrDefault(n => n.UId == baseUsers.Id && n.Type == 1 && n.Id == UserCard.Id && n.State == 1);

            if (UC == null)
            {
                DataObj.OutError("1001");
                return;
            }

            if (FastUser.Card == UC.Card)
            {
                DataObj.OutError("2080");
                return;
            }
            string GPSRemark = "旧默认结算卡:" + FastUser.Card + " 新默认结算卡:" + UC.Card;

            FastUser.Card = UC.Card;
            FastUser.Bank = UC.Bank;
            FastUser.Bin  = UC.Bin;
            Entity.SaveChanges();

            //这里要增加所有通道的商户注册及绑卡操作
            //=============================================================
            IList <FastPayWay> FastPayWayList = Entity.FastPayWay.OrderBy(n => n.Sort).ToList();
            //购买商户与默认商户都需要改卡
            IList <FastUserPay> FastUserPayList = Entity.FastUserPay.Where(n => n.UId == baseUsers.Id).OrderBy(n => n.PayWay).ToList();

            foreach (var p in FastUserPayList)
            {
                FastPayWay FastPayWay = FastPayWayList.FirstOrDefault(n => n.Id == p.PayWay);
                if (FastPayWay != null)
                {
                    if (FastPayWay.DllName == "MiBank" || FastPayWay.DllName == "HFPay" || FastPayWay.DllName == "ZBLHPay" || FastPayWay.DllName == "JiFuJFPay")
                    {
                        p.CardState = 1;//不需要验卡
                    }
                    else
                    {
                        p.CardState = 2;//重新标识状态为待提交
                    }
                    p.Bank = FastUser.Bank;
                    p.Card = FastUser.Card;
                    p.Bin  = FastUser.Bin;
                    BusFastPay.AddCard(FastUser, p, FastPayWay, Entity);
                }
            }
            Entity.SaveChanges();

            //=======================================
            UserTrack.ENo      = DataObj.ENo;
            UserTrack.OPType   = "更换默认结算卡";
            UserTrack.UserName = "";
            UserTrack.Remark   = GPSRemark;
            UserTrack.UId      = FastUser.UId;
            UserTrack.SeavGPSLog(Entity);
            //=======================================

            FastUser.Cols = "Card,Bank,Bin";
            DataObj.Data  = FastUser.OutJson();
            DataObj.Code  = "0000";
            DataObj.OutString();
        }
Exemplo n.º 13
0
 public void AddUserTrack(UserTrack usertrack)
 {
     UserTrackQueue.Add(usertrack);
 }
Exemplo n.º 14
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("[OrderPayConfig]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            VIPOrder VIPOrder = new VIPOrder();

            VIPOrder = JsonToObject.ConvertJsonToModel(VIPOrder, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);
            if (VIPOrder.X.IsNullOrEmpty() || VIPOrder.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            //获取用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == VIPOrder.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.IsVip == 1)//是VIP不能再生成
            {
                DataObj.OutError("9001");
                return;
            }

            //获取分支机构信息
            SysAgent SysAgent = new SysAgent();

            if (!baseUsers.Agent.IsNullOrEmpty())
            {
                SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent);
            }
            VIPOrder.UId = baseUsers.Id;
            //VIPOrder.Agent = baseUsers.Agent;
            //PayConfigOrder.AId = baseUsers.AId;
            SysMoneySet SysMoneySet = Entity.SysMoneySet.FirstOrNew();

            VIPOrder.Amoney   = SysMoneySet.VipPrice;
            VIPOrder.VName    = "升级VIP";
            VIPOrder.State    = 1;
            VIPOrder.PayState = 0;
            VIPOrder.AddTime  = DateTime.Now;
            //这里是利润计算==========
            //利润舍位
            VIPOrder.SplitMoney = 0;
            VIPOrder.SplitState = 0;
            VIPOrder.Poundage   = 0;
            VIPOrder.HFGet      = 0;
            VIPOrder.PayWay     = 15;
            VIPOrder.Days       = 99999999;
            VIPOrder.UserState  = 0;
            VIPOrder.Agent      = baseUsers.Agent;
            VIPOrder.SameGet    = 0;
            //写入订单总表
            Orders Orders = new Orders();

            Orders.UId     = VIPOrder.UId;
            Orders.TName   = "VIP升级";
            Orders.PayType = 0;
            Orders.PayName = "升级VIP";

            Orders.RUId     = 0;
            Orders.RName    = string.Empty;
            Orders.TType    = 6;
            Orders.TState   = 1;
            Orders.Amoney   = VIPOrder.Amoney;
            Orders.Poundage = VIPOrder.Poundage;
            Orders.AddTime  = DateTime.Now;
            Orders.PayState = 0;
            Orders.PayWay   = 15;

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

            string OrderAddress = VIPOrder.OrderAddress;

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

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

            VIPOrder.TNum = Orders.TNum;
            Entity.VIPOrder.AddObject(VIPOrder);
            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);//发送消息类
            //=======================================
            Orders.Cols = "TNum,PayId,Amoney,PayState";
            string TNum = Orders.TNum;
            string Sign = (TNum + "NewPay").GetMD5().Substring(8, 8);

            //Orders.PayId = PayPath + "/pay/" + TNum + ".html?sign=" + Sign;
            Orders.PayId = PayPath + "/mobile/orders/GoPay.html?sign=" + Sign + "&tnum=" + TNum;
            //=======================================

            #region 走结算中心
            //获取最佳支付通道
            //IList<PayConfig> PayConfigList = Entity.PayConfig.Where(n => n.State == 1).OrderBy(n => n.Cost).ToList();
            //IList<SysControl> SysControlList = Entity.SysControl.OrderBy(n => n.Sort).ToList();//SysControl
            //IList<SysControl> SCList = new List<SysControl>();
            //IList<PayConfig> PCList = new List<PayConfig>();
            //foreach (var p in SysControlList)
            //{
            //    SysControl T = p.ChkState();
            //    if (T.State == 1)
            //    {
            //        SCList.Add(p);
            //    }
            //}
            //foreach (var p in PayConfigList)
            //{
            //    SysControl T = SCList.FirstOrDefault(n => n.PayWay == p.Id);
            //    if (T != null)
            //    {
            //        if (VIPOrder.Amoney >= (decimal)T.SNum && VIPOrder.Amoney <= (decimal)T.ENum)
            //        {
            //            PCList.Add(p);
            //        }
            //    }
            //}
            //IList<PayConfig> CashList = PCList.Where(n => n.GroupType == "Cash").OrderBy(n => n.Cost).ToList();
            //IList<PayConfig> BankList = PCList.Where(n => n.GroupType == "Bank").OrderBy(n => n.Cost).ToList();
            //IList<PayConfig> WxList = PCList.Where(n => n.GroupType == "WeiXin").OrderBy(n => n.Cost).ToList();
            //IList<PayConfig> AliList = PCList.Where(n => n.GroupType == "AliPay").OrderBy(n => n.Cost).ToList();

            //IList<PayConfig> List = new List<PayConfig>();
            //if (CashList.Count > 0)
            //{
            //    PayConfig Cash = new PayConfig();
            //    Cash.GroupType = "Cash";
            //    Cash.Name = "余额支付";
            //    Cash.State = 1;
            //    Cash.Cols = "Name,GroupType,State";
            //    List.Add(Cash);
            //}
            //if (BankList.Count > 0)
            //{
            //    PayConfig Bank = new PayConfig();
            //    Bank.GroupType = "Bank";
            //    Bank.Name = "银联支付";
            //    Bank.State = 1;
            //    Bank.Cols = "Name,GroupType,State";
            //    List.Add(Bank);
            //}
            //if (WxList.Count > 0)
            //{
            //    PayConfig Wx = new PayConfig();
            //    Wx.GroupType = "WeiXin";
            //    Wx.Name = "微信支付";
            //    Wx.State = 0;
            //    Wx.Cols = "Name,GroupType,State";
            //    List.Add(Wx);
            //}
            //if (AliList.Count > 0)
            //{
            //    PayConfig Ali = new PayConfig();
            //    Ali.GroupType = "AliPay";
            //    Ali.Name = "支付宝支付";
            //    Ali.State = 1;
            //    Ali.Cols = "Name,GroupType,State";
            //    List.Add(Ali);
            //}
            //string PCString = List.EntityToJson();
            //JArray PCJson = (JArray)JsonConvert.DeserializeObject(PCString);
            //Orders.PayConfig = PCJson;

            //Orders.Cols += ",PayConfig";
            #endregion
            //Orders.paycon
            DataObj.Data = Orders.OutJson();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
Exemplo n.º 15
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("[FastOrderController]:", "【Data】" + Data, Ex);
                json = null;
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }

            FastOrder InFastOrder = new FastOrder();

            InFastOrder = JsonToObject.ConvertJsonToModel(InFastOrder, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            if (InFastOrder.Id == 99999)
            {
                DataObj.Msg = "当前通道维护中,建议您开通收款到银行卡功能,享受更多收款通道";
                DataObj.OutError("1000");
                return;
            }

            if (InFastOrder.CashType.IsNullOrEmpty())
            {
                InFastOrder.CashType = "D0";
                //DataObj.OutError("1000");
                //return;
            }
            decimal Amount = InFastOrder.Amoney;
            byte    payway = InFastOrder.OType;

            if (Amount <= 0)
            {
                DataObj.OutError("1000");
                return;
            }
            if (payway != 1 && payway != 2 && payway != 3)
            {
                DataObj.Msg = "你当前版本不支持该交易,请等待新版本发布及升级!";
                DataObj.OutError("1000");
                return;
            }

            Users Users = Entity.Users.FirstOrDefault(n => n.Token == InFastOrder.Token);

            #region 用户
            if (Users == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (Users.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (Users.CardStae != 2)//未实名认证
            {
                DataObj.OutError("2006");
                return;
            }
            if (Amount.IsNullOrEmpty() || payway.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            #endregion

            FastUser FastUser = Entity.FastUser.FirstOrDefault(o => o.UId == Users.Id);
            if (FastUser == null)
            {
                DataObj.OutError("2070");
                return;
            }
            #region 取通道
            IList <FastPayWay> FastPayWayList = null;
            if (InFastOrder.Id.IsNullOrEmpty())
            {
                //这是旧逻辑,有一些旧版还在用
                if (payway == 1)
                {
                    FastPayWayList = Entity.FastPayWay.Where(n => n.State == 1 && n.SNum2 < Amount && n.ENum2 >= Amount && n.HasAliPay == 1).OrderBy(n => n.Sort).ToList();
                }
                else if (payway == 2)
                {
                    FastPayWayList = Entity.FastPayWay.Where(n => n.State == 1 && n.SNum < Amount && n.ENum >= Amount && n.HasWeiXin == 1).OrderBy(n => n.Sort).ToList();
                }
                else if (payway == 3)
                {
                    FastPayWayList = Entity.FastPayWay.Where(n => n.State == 1 && n.BankSNum < Amount && n.BankENum >= Amount && n.HasBank == 1).OrderBy(n => n.Sort).ToList();
                }
                else
                {
                    DataObj.OutError("1000");
                    return;
                }
            }
            else
            {
                var query = Entity.FastPayWay.Where(n => n.Id == InFastOrder.Id && n.State == 1);
                if (payway == 1)
                {
                    query = query.Where(o => o.HasAliPay == 1 && o.SNum2 <= Amount && o.ENum2 >= Amount);
                }
                else if (payway == 2)
                {
                    query = query.Where(o => o.HasWeiXin == 1 && o.SNum <= Amount && o.ENum >= Amount);
                }
                else if (payway == 3)
                {
                    query = query.Where(o => o.HasBank == 1 && o.BankSNum <= Amount && o.BankENum >= Amount);
                }
                FastPayWayList = query.ToList();
            }
            #endregion
            if (FastPayWayList.Count < 1)
            {
                DataObj.OutError("2079");
                return;
            }
            #region 通道验证及商户进件信息验证
            FastPayWay         FastPayWay  = null;
            FastUserPay        FastUserPay = null;
            IList <FastPayWay> PayWayList  = new List <FastPayWay>();
            foreach (var p in FastPayWayList)
            {
                if (p.TimeType == 1)//限制时间,模式1
                {
                    DateTime STime    = p.STime;
                    DateTime ETime    = p.ETime;
                    DateTime NowSTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + STime.ToString("HH:mm:ss"));
                    DateTime NowETime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + ETime.ToString("HH:mm:ss"));
                    if (NowSTime <= DateTime.Now && DateTime.Now <= NowETime)
                    {
                        //当前时间允许交易
                        PayWayList.Add(p);
                    }
                }
                else
                {
                    PayWayList.Add(p);
                }
            }
            if (PayWayList.Count < 1)
            {
                DataObj.OutError("2071");
                return;
            }
            foreach (var p in PayWayList)
            {
                FastUserPay temp = Entity.FastUserPay.FirstOrDefault(n => n.UId == Users.Id && n.PayWay == p.Id && n.MerState == 1 && n.CardState == 1 && n.BusiState == 1);
                if (temp != null)
                {
                    FastPayWay  = p;
                    FastUserPay = temp;
                    break;
                }
            }
            if (FastUserPay == null)
            {
                DataObj.OutError("2072");
                return;
            }
            if (FastPayWay == null)
            {
                DataObj.OutError("2073");
                return;
            }
            #endregion
            string[] PayConfigArr = FastPayWay.QueryArray.Split(',');
            #region 验证配置
            if (FastPayWay.DllName == "HFPay")
            {
                if (PayConfigArr.Length != 3)
                {
                    DataObj.OutError("2074");
                    return;
                }
            }
            if (FastPayWay.DllName == "HFJSPay")
            {
                if (PayConfigArr.Length != 3)
                {
                    DataObj.OutError("2074");
                    return;
                }
            }
            #endregion

            decimal UserCost  = 0;//用户
            decimal BankCost  = 0;
            decimal BankMin   = 0;
            decimal BankMax   = 0;
            decimal AgentCost = 0; //代理
            if (payway == 1)
            {                      //支付宝
                UserCost  = FastUserPay.UserCost2;
                BankCost  = FastPayWay.BankCost2;
                BankMin   = FastPayWay.MinCost2;
                BankMax   = FastPayWay.MaxCost2;
                AgentCost = FastPayWay.Cost2;
            }
            if (payway == 2)//微信
            {
                UserCost  = FastUserPay.UserCost;
                BankCost  = FastPayWay.BankCost;
                BankMin   = FastPayWay.MinCost;
                BankMax   = FastPayWay.MaxCost;
                AgentCost = FastPayWay.Cost;
            }
            if (payway == 3)//银联
            {
                UserCost  = FastUserPay.UserCost3;
                BankCost  = FastPayWay.BankCost3;
                BankMin   = FastPayWay.MinCost3;
                BankMax   = FastPayWay.MaxCost3;
                AgentCost = FastPayWay.Cost3;
            }
            #region 创建交易
            //=======================生成订单===========================
            SysAgent         SysAgent     = Entity.SysAgent.FirstOrNew(n => n.Id == Users.Agent);
            IList <SysAgent> SysAgentList = SysAgent.GetAgentsById(Entity);
            SysAgent         TopAgent     = SysAgentList.FirstOrNew();

            FastOrder FastOrder = new FastOrder();
            FastOrder.ComeWay = 1;
            FastOrder.UId     = Users.Id;
            FastOrder.Agent   = SysAgent.Id;

            FastOrder.PayId = string.Empty;

            FastOrder.OType    = payway;
            FastOrder.PayWay   = FastPayWay.Id;
            FastOrder.CashType = InFastOrder.CashType;
            FastOrder.Amoney   = Amount;

            //用户手续费
            decimal Poundage = Amount * UserCost + FastUserPay.UserCash;
            Poundage           = Poundage.Ceiling();
            FastOrder.Poundage = Poundage;
            //用户最终金额
            FastOrder.PayMoney = FastOrder.Amoney - FastOrder.Poundage;

            if (FastOrder.PayMoney < 0)
            {
                DataObj.OutError("2076");
                return;
            }
            FastOrder.UserRate  = UserCost;
            FastOrder.AgentRate = AgentCost;
            FastOrder.SysRate   = BankCost;
            FastOrder.UserCash  = FastUserPay.UserCash;
            FastOrder.SysCash   = FastPayWay.Cash;
            FastOrder.SameGet   = 0;
            //计算手续费差
            SysMoneySet SysMoneySet = Entity.SysMoneySet.FirstOrNew();
            decimal     PaySplit    = 0;//代理商费率
            PaySplit = SysAgent.GetSplit(TopAgent.Tier, Entity);
            decimal PayGet = Amount * PaySplit;
            PayGet = PayGet.Floor();
            //一级代理利润
            decimal AgentPayGet = PayGet;
            AgentPayGet           = AgentPayGet.Floor();
            FastOrder.AgentPayGet = 0;
            string  AgentPath = "|";
            string  Split     = "|";
            decimal MyGet     = PayGet;
            foreach (var p in SysAgentList)
            {
                PaySplit   = SysAgent.GetSplit(p.Tier, Entity);
                AgentPath += p.Id + "|";
                MyGet      = Amount * PaySplit;//各级代理分润
                MyGet      = MyGet.Floor();
                Split     += MyGet.ToString("F2") + "|";
            }
            FastOrder.AgentPath = AgentPath;
            FastOrder.Split     = Split;

            decimal BankMoney = Amount * BankCost;
            if (BankMoney < BankMin)
            {
                BankMoney = BankMin;
            }
            if (BankMoney > BankMax)
            {
                BankMoney = BankMax;
            }
            BankMoney = BankMoney.Floor();
            //用户手续费(含代付手续费)-代付分润-银行手续费-银行代付成本
            decimal HFGet = Poundage - AgentPayGet - BankMoney - FastPayWay.Cash;
            FastOrder.HFGet = HFGet;

            FastOrder.State   = 1;
            FastOrder.AddTime = DateTime.Now;

            FastOrder.PayState   = 0;
            FastOrder.AgentState = 0;
            FastOrder.UserState  = 0;

            FastOrder.CardName = FastUserPay.CardName;
            FastOrder.Bank     = FastUserPay.Bank;
            FastOrder.Card     = FastUserPay.Card;
            FastOrder.Bin      = FastUserPay.Bin;

            Entity.FastOrder.AddObject(FastOrder);
            Entity.SaveChanges();
            Entity.Refresh(RefreshMode.StoreWins, FastOrder);
            #endregion

            //=======================================
            UserTrack.ENo      = DataObj.ENo;
            UserTrack.OPType   = "到银行卡交易";
            UserTrack.UserName = FastOrder.TNum;
            UserTrack.UId      = FastOrder.UId;
            UserTrack.SeavGPSLog(Entity);
            //=======================================

            //=======================分润记录===========================
            MyGet = PayGet;
            int tier = 1;
            foreach (var p in SysAgentList)
            {
                PaySplit = SysAgent.GetSplit(p.Tier, Entity);
                MyGet    = Amount * PaySplit;//各级代理分润
                MyGet    = MyGet.Floor();
                FastSplit FastSplit = new FastSplit();
                FastSplit.Tnum    = FastOrder.TNum;
                FastSplit.Profit  = MyGet;
                FastSplit.AgentId = p.Id;
                FastSplit.Tier    = p.Tier;
                FastSplit.AddTime = DateTime.Now;
                Entity.FastSplit.AddObject(FastSplit);
                tier++;
            }
            Entity.SaveChanges();
            //=======================请求接口开始===========================
            if (FastOrder.OType == 1 || FastOrder.OType == 2)
            {
                if (FastPayWay.DllName == "HFPay")
                {
                    string NoticeUrl = NoticePath + "/PayCenter/HFPay/FastNotice.html";//后台通过地址
                    #region 微信&支付宝
                    string Action = "";
                    if (FastOrder.OType == 1)
                    {
                        Action = "AliSao";
                    }
                    else if (FastOrder.OType == 2)
                    {
                        Action = "WxSao";
                    }
                    //提交结算中心
                    string merId  = PayConfigArr[0]; //商户号
                    string merKey = PayConfigArr[1]; //商户密钥
                    string PayWay = PayConfigArr[2]; //绑定通道

                    decimal money      = FastOrder.Amoney * 100;
                    string  OrderMoney = money.ToString("F0");//金额,以分为单

                    string PostJson = "{\"action\":\"" + Action + "\",\"txnamt\":\"" + OrderMoney + "\",\"merid\":\"" + merId + "\",\"payway\":\"" + PayWay + "\",\"orderid\":\"" + FastOrder.TNum + "\",\"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 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)
                    {
                        FastOrder.State  = 0;
                        FastOrder.Remark = "数据请求出错";
                        Entity.SaveChanges();
                        JS = null;
                    }
                    if (JS != null)
                    {
                        string resp = JS["resp"].ToString();
                        Ret = LokFuEncode.Base64Decode(resp, "utf-8");
                        try
                        {
                            JS = (JObject)JsonConvert.DeserializeObject(Ret);
                        }
                        catch (Exception Ex)
                        {
                            FastOrder.State  = 0;
                            FastOrder.Remark = "JSON加载出错";
                            Entity.SaveChanges();
                            JS = null;
                        }
                        if (JS != null)
                        {
                            string respcode = JS["respcode"].ToString();
                            if (respcode != "00")
                            {
                                string respmsg = JS["respmsg"].ToString();
                                FastOrder.State  = 0;
                                FastOrder.Remark = respmsg;
                                Entity.SaveChanges();
                            }
                            else
                            {
                                if (JS["formaction"] == null)
                                {
                                    FastOrder.State  = 0;
                                    FastOrder.Remark = "接口没有返回二维码";
                                    Entity.SaveChanges();
                                }
                                else
                                {
                                    string BankNum = JS["queryid"].ToString();
                                    string qr_code = JS["formaction"].ToString();
                                    FastOrder.PayId = qr_code;
                                    FastOrder.Trade = BankNum;
                                    Entity.SaveChanges();
                                }
                            }
                        }
                    }
                    #endregion
                }
            }
            else if (FastOrder.OType == 3)
            {
                if (FastPayWay.DllName == "HFPay" || FastPayWay.DllName == "HFJSPay")
                {
                    #region
                    //银联不用请求第三方,直接生成链接
                    FastOrder.PayId = PayPath + "/paycenter/pay-" + FastOrder.Id + ".html?sign=" + ((FastOrder.Id * 100 + 99) + "Pay").GetMD5().Substring(8, 8);
                    Entity.SaveChanges();
                    #endregion
                }
            }
            if (FastOrder.State == 1)
            {
                if (FastOrder.PayState == 1)
                {
                    if (FastOrder.UserState == 1)
                    {
                        FastOrder.State = 3;
                    }
                    else
                    {
                        FastOrder.State = 2;
                    }
                }
                else
                {
                    FastOrder.State = 1;
                }
            }
            else
            {
                FastOrder.State = 0;
                DataObj.OutError("1005");
                return;
            }
            FastOrder.Cols = "TNum,PayId,Amoney,Poundage,State";

            DataObj.Data = FastOrder.OutJson();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
Exemplo n.º 16
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("[UsersGetPayPassSet]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            //JObject pp = (JObject)p;
            Users Users = new Users();

            Users = JsonToObject.ConvertJsonToModel(Users, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            string trueToken = string.Empty;

            if (!Users.PToken.IsNullOrEmpty())
            {
                trueToken = Users.PToken;
            }
            else
            {
                if (!Users.Token.IsNullOrEmpty())
                {
                    trueToken = Users.Token;
                }
                else
                {
                    DataObj.OutError("1000");
                    return;
                }
            }

            if (Users.UserName.IsNullOrEmpty() || Users.PassWord.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (Users.X.IsNullOrEmpty() || Users.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            ////手机号码黑名单验证
            //if (Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == Users.UserName && UBL.State == 1) != null)
            //{
            //    //提示暂不支持您手机号入网
            //    DataObj.OutError("2026");
            //    return;
            //}
            if (trueToken.Substring(0, 4) != "pppp")
            {
                DataObj.OutError("9999");
                return;
            }
            Users BaseUsers = Entity.Users.Where(n => n.Token == trueToken && n.UserName == Users.UserName).FirstOrDefault();

            if (BaseUsers == null)//令牌错误
            {
                DataObj.OutError("2014");
                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;
            }
            BaseUsers.PayLock = 0; //解除锁定
            BaseUsers.PayErr  = 0; //解除锁定
            BaseUsers.PayPwd  = Users.PassWord.GetPayMD5();
            Entity.SaveChanges();

            //=======================================
            UserTrack.ENo        = DataObj.ENo;
            UserTrack.OPType     = "重设支付密码";
            UserTrack.GPSAddress = Users.RegAddress;
            UserTrack.GPSX       = Users.X;
            UserTrack.GPSY       = Users.Y;
            BaseUsers.SeavGPSLog(UserTrack, Entity);
            //=======================================

            DataObj.Data = "";
            DataObj.Code = "0000";
            DataObj.OutString();
        }
        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("[CreditCardAdd]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            UserCard UserCard = new UserCard();

            UserCard = JsonToObject.ConvertJsonToModel(UserCard, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);
            if (UserTrack.X.IsNullOrEmpty() || UserTrack.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            #region 基础验证
            //获取用户信息
            string Token     = UserCard.Token;
            Users  baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Token);
            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                DataObj.OutError("2006");
                return;
            }
            string       cardbin      = UserCard.Card.Substring(0, 6);
            BasicCardBin BasicCardBin = this.Entity.BasicCardBin.Where(o => o.BIN == cardbin).FirstOrDefault();
            if (BasicCardBin != null)
            {
                if (BasicCardBin.CardType != 2)
                {
                    DataObj.Msg = "请使用信用卡绑定";
                    DataObj.OutError("1000");
                    return;
                }
            }
            else
            {
                DataObj.OutError("1103");
                return;
            }
            #endregion
            //=======================================
            UserTrack.ENo        = DataObj.ENo;
            UserTrack.OPType     = "信用卡验证码";
            UserTrack.GPSAddress = UserTrack.GPSAddress;
            UserTrack.GPSX       = UserTrack.X;
            UserTrack.GPSY       = UserTrack.Y;
            baseUsers.SeavGPSLog(UserTrack, Entity);
            //=======================================

            JobPayWay JobPayWay = Entity.JobPayWay.Where(n => n.State == 1 && n.GroupType == "Pay").OrderBy(n => n.Sort).FirstOrDefault();//目前只支持一条
            if (JobPayWay == null)
            {
                DataObj.Msg = "暂无可用通道";
                DataObj.OutError("1000");
                return;
            }
            if (UserCard.ValidYear.Length == 4)
            {
                UserCard.ValidYear = UserCard.ValidYear.Substring(2, 2);
            }
            #region 第三方接口
            string[] JobPayWayArr = JobPayWay.QueryArray.Split(',');
            bool     Result       = false;
            string   RetMsg       = "";
            if (JobPayWay.DllName == "HLBPay" && JobPayWayArr.Length == 2)
            {
                #region 合利宝
                string MerId   = JobPayWayArr[0];
                string MerKey  = JobPayWayArr[1];
                string postUrl = "http://pay.trx.helipay.com/trx/quickPayApi/interface.action";

                string orderId = Guid.NewGuid().ToString("N");
                Dictionary <string, string> map = new Dictionary <string, string>();
                map.Add("P1_bizType", "QuickPayBindCardValidateCode");
                map.Add("P2_customerNumber", MerId);
                map.Add("P3_userId", "HF_" + baseUsers.Id.ToString());
                map.Add("P4_orderId", orderId);
                map.Add("P5_timestamp", DateTime.Now.ToString("yyyyMMddHHmmss"));
                map.Add("P6_cardNo", UserCard.Card);
                map.Add("P7_phone", UserCard.Mobile);

                //签名串,把参数值拼接
                string data = Utils.CreateLinkString(map, false);
                //MD5签名KEY
                string sign = ("&" + data + "&" + MerKey).GetMD5();
                map.Add("sign", sign);
                string send_data = Utils.CreateLinkString(map);
                string RetString = Utils.PostRequest(postUrl, send_data, "utf-8");
                //================================================
                //这里记录日志
                JobLog JobLog = new JobLog();
                JobLog.PayWay  = JobPayWay.Id;
                JobLog.ReqNo   = orderId;
                JobLog.TNum    = "";
                JobLog.Trade   = "";
                JobLog.Amount  = 0;
                JobLog.Way     = "SendCode";
                JobLog.AddTime = DateTime.Now;
                JobLog.Data    = RetString;
                JobLog.State   = 1;
                Entity.JobLog.AddObject(JobLog);
                Entity.SaveChanges();
                //================================================
                JObject obj = new JObject();
                try
                {
                    obj = (JObject)JsonConvert.DeserializeObject(RetString);
                }
                catch (Exception)
                {
                    Utils.WriteLog("[CreditCardAddCode]:" + RetString, "HLBPayError");
                    DataObj.OutError("1000");
                    return;
                }
                string rt2_retCode = obj["rt2_retCode"].ToString();
                string rt3_retMsg  = obj["rt3_retMsg"].ToString();
                if (rt2_retCode == "0000")
                {
                    Result = true;
                }
                else
                {
                    Result = false;
                    RetMsg = rt3_retMsg;
                    Utils.WriteLog("[CreditCardAddCode]:" + RetString + "【" + send_data + "】", "HLBPayError");
                }
                #endregion
            }
            else if (JobPayWay.DllName == "GHTPay" && JobPayWayArr.Length == 3)
            {
                #region
                //检测是否已开通商户
                DateTime Today  = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
                SysSet   SysSet = Entity.SysSet.FirstOrNew();
                //统计今天已经发送注册验证码次数
                int Times = Entity.SMSCode.Count(n => n.UId == baseUsers.Id && n.Mobile == UserCard.Mobile && n.CType == 31 && n.AddTime >= Today);
                if (Times >= SysSet.SMSTimes)
                {
                    DataObj.Msg = "获取验证码超过" + SysSet.SMSTimes + "次,请明天再试。";
                    DataObj.OutError("1000");
                    return;
                }
                if (Times > 0)
                {
                    //第一次发送不获取,以节少系统资源
                    SMSCode SMSCode = Entity.SMSCode.Where(n => n.UId == baseUsers.Id && n.Mobile == UserCard.Mobile && n.CType == 31 && n.AddTime >= Today).OrderByDescending(n => n.Id).FirstOrDefault();
                    if (SMSCode.AddTime.AddMinutes(1) >= DateTime.Now)
                    {
                        //最后一次发送到现在不足1分钟
                        DataObj.Msg = "您操作太快了。";
                        DataObj.OutError("1000");;
                        return;
                    }
                }
                //失效之前获取验证码
                IList <SMSCode> List = Entity.SMSCode.Where(n => n.UId == baseUsers.Id && n.Mobile == UserCard.Mobile && n.CType == 31 && n.State == 1).ToList();
                foreach (var p in List)
                {
                    p.State = 0;
                }
                Entity.SaveChanges();

                //生成验证码
                string  Code = Utils.RandomSMSCode(4);
                SMSCode SSC  = new SMSCode();
                SSC.CType   = 31;
                SSC.UId     = baseUsers.Id;
                SSC.Mobile  = UserCard.Mobile;
                SSC.Code    = Code;
                SSC.AddTime = DateTime.Now;
                SSC.State   = 1;
                Entity.SMSCode.AddObject(SSC);
                Entity.SaveChanges();

                string Info = "您正在授权尾号{2}开通授权交易,验证码为{0},为了保护您的账户安全,验证码请勿转发他人,有效时间{1}分钟。";
                Info  = string.Format(Info, Code, SysSet.SMSActives, UserCard.Card.Substring(UserCard.Card.Length - 4, 4));
                Info += "【好支付】";
                SMSLog SMSLog = new SMSLog();
                SMSLog.UId      = baseUsers.Id;
                SMSLog.Mobile   = UserCard.Mobile;
                SMSLog.SendText = Info;
                SMSLog.State    = 1;
                SMSLog.AddTime  = DateTime.Now;
                Entity.SMSLog.AddObject(SMSLog);
                Entity.SaveChanges();

                Result = true;

                #endregion
            }
            else if (JobPayWay.DllName == "HFJSPay" && JobPayWayArr.Length == 3)
            {
                #region 结算系统
                string Code       = JobPayWayArr[0];
                string CodeKey    = JobPayWayArr[1];
                string PayWayCode = JobPayWayArr[2];
                #region 进件
                JobUserPay JobUserPay = Entity.JobUserPay.FirstOrDefault(n => n.UId == baseUsers.Id && n.PayWay == JobPayWay.Id);
                if (JobUserPay == null)
                {
                    JobUserPay           = new JobUserPay();
                    JobUserPay.UId       = baseUsers.Id;
                    JobUserPay.PayWay    = JobPayWay.Id;
                    JobUserPay.AddTime   = DateTime.Now;
                    JobUserPay.MerState  = 2; //状态 0锁定 1正常 2待提交 3审核中 4审核失败
                    JobUserPay.CardState = 2; //状态 0锁定 1正常 2待提交 3审核中 4审核失败
                    JobUserPay.BusiState = 2; //状态 1正常 2待提交 3审核中 4审核失败
                    Entity.JobUserPay.AddObject(JobUserPay);
                    Entity.SaveChanges();
                }
                if (JobUserPay.MerState == 2 || JobUserPay.MerState == 4)
                {
                    fastuseraddModel model = new fastuseraddModel()
                    {
                        code          = Code,
                        mchid         = "HF" + baseUsers.Id.ToString(),
                        mchname       = baseUsers.NeekName,
                        truename      = baseUsers.TrueName,
                        cardno        = baseUsers.CardId,
                        accountcard   = UserCard.Card,
                        accountbin    = BasicCardBin.BankCode,
                        accountmobile = UserCard.Mobile
                    };
                    fastuserResult fastuserResult = HFJSTools.fastuseradd(model, CodeKey);
                    if (fastuserResult.respcode == "00")
                    {
                        if (fastuserResult.state == 1)
                        {
                            JobUserPay.MerState  = 1;
                            JobUserPay.CardState = 1;//这里已绑定结算卡
                            JobUserPay.MerId     = fastuserResult.merid;
                            JobUserPay.MerKey    = fastuserResult.merkey;
                        }
                        else if (fastuserResult.state == 2)
                        {
                            JobUserPay.MerId    = fastuserResult.merid;
                            JobUserPay.MerKey   = fastuserResult.merkey;
                            JobUserPay.MerState = 3;
                        }
                        else
                        {
                            JobUserPay.MerState = 4;
                        }
                    }
                    else
                    {
                        JobUserPay.MerState = 4;
                        JobUserPay.MerMsg   = fastuserResult.respcode + "[" + fastuserResult.respmsg + "]";
                    }
                    Entity.SaveChanges();
                }
                #endregion
                #region 开通道
                if (JobUserPay.MerState == 1 && (JobUserPay.BusiState == 2 || JobUserPay.BusiState == 4))
                {
                    JobSet             JobSet             = Entity.JobSet.FirstOrNew(); //获取配置
                    decimal            Cost               = JobSet.Cost;                //刷卡手续费
                    decimal            Cash               = JobSet.Cash;                //还款手续费
                    userspayopenbModel userspayopenbModel = new userspayopenbModel()
                    {
                        merid       = JobUserPay.MerId,
                        paywaycode  = PayWayCode,
                        code        = Code,
                        bankcost    = Cost,
                        surcharge   = Cash,
                        cash        = 0,
                        bankcostmin = 1.2M,
                        bankcostmax = 9999999
                    };
                    fastuserResult fastuserResult = HFJSTools.userspayopen(userspayopenbModel, CodeKey);
                    if (fastuserResult.respcode == "00")
                    {
                        if (fastuserResult.state == 1)
                        {
                            JobUserPay.BusiState = 1;
                        }
                        else
                        {
                            JobUserPay.BusiState = 4;
                        }
                    }
                    else
                    {
                        JobUserPay.BusiMsg = fastuserResult.respcode + "[" + fastuserResult.respmsg + "]";
                    }
                    Entity.SaveChanges();
                }
                #endregion
                #region 绑卡
                if (JobUserPay.MerState == 1 && JobUserPay.CardState == 1 && JobUserPay.BusiState == 1)
                {
                    fastcardbindModel fastcardbindModel = new fastcardbindModel()
                    {
                        action   = "Add",
                        merid    = JobUserPay.MerId,
                        bankcard = UserCard.Card,
                        cvv2     = UserCard.CVV,
                        mobile   = UserCard.Mobile,
                        month    = UserCard.ValidMonth,
                        year     = UserCard.ValidYear
                    };
                    ErrorCode errorCode = HFJSTools.fastcardbind(fastcardbindModel, JobUserPay.MerKey);
                    if (errorCode.respcode == "00")
                    {
                        #region 发验证码
                        if (JobUserPay.MerState == 1 && JobUserPay.BusiState == 1 && JobUserPay.CardState == 1)
                        {
                            fastcardcodeModel fastcardcodeModel = new fastcardcodeModel()
                            {
                                bankcard   = UserCard.Card,
                                merid      = JobUserPay.MerId,
                                paywaycode = PayWayCode
                            };
                            ErrorCode errorcode = HFJSTools.fastcardcode(fastcardcodeModel, JobUserPay.MerKey);
                            if (errorcode.respcode == "00")
                            {
                                Result = true;
                            }
                            else
                            {
                                Result = false;
                                RetMsg = errorcode.respmsg;
                            }
                        }
                        else
                        {
                            Result = false;
                            RetMsg = errorCode.respmsg;
                        }
                        #endregion
                    }
                    else
                    {
                        Result = false;
                        RetMsg = errorCode.respmsg;
                    }
                    Entity.SaveChanges();
                }
                else
                {
                    Result = false;
                    RetMsg = "商户入驻失败";
                }
                #endregion
                #endregion
            }

            #endregion
            if (Result)
            {
                DataObj.OutError("0000");
            }
            else
            {
                DataObj.Msg = RetMsg;
                DataObj.OutError("1010");
            }
        }
        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("[UsersPayPwdEdit]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            Users Users = new Users();

            Users = JsonToObject.ConvertJsonToModel(Users, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            if (Users.PassWord.IsNullOrEmpty() || Users.NewPWD.IsNullOrEmpty())//使用PassWord字段
            {
                DataObj.OutError("1000");
                return;
            }
            if (Users.X.IsNullOrEmpty() || Users.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (Users.PassWord.Length < 6 || Users.NewPWD.Length < 6)//6位及以上
            {
                DataObj.OutError("1000");
                return;
            }
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == 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;
            }
            if (baseUsers.PayLock == 1)//密码错误太多次锁定
            {
                DataObj.OutError("2050");
                return;
            }

            //这里是执行指纹解锁
            bool IfCheckOk = true;

            if (Users.PassWord.Substring(0, 3) == "HF_")
            {
                string PassWord = Users.PassWord;
                PassWord = PassWord.Replace("HF_", "");
                string Token = baseUsers.Token;
                Token = Token + "GoodPay";
                string Md5Token = Token.GetMD5().ToUpper();
                string Pass     = Md5Token.Substring(0, 4) + Md5Token.Substring(Md5Token.Length - 4, 4);
                if (Pass != PassWord)
                {
                    IfCheckOk = false;
                }
            }
            else if (baseUsers.PayPwd != Users.PassWord.GetPayMD5())
            {
                //原支付密码错误
                IfCheckOk = false;
            }
            if (!IfCheckOk)
            {
                //付密码错误
                SysSet SysSet = Entity.SysSet.FirstOrNew();
                //系统统一修改标识SAME002
                baseUsers.PayErr++;
                if (baseUsers.PayErr >= SysSet.PayLock)
                {
                    baseUsers.PayLock = 1;
                }
                Entity.SaveChanges();
                Users Out = new Users();
                Out.PayErr   = SysSet.PayLock - baseUsers.PayErr;
                Out.Cols     = "PayErr";
                DataObj.Data = Out.OutJson();
                DataObj.Code = "2002";
                if (Out.LoginErr == 0)
                {
                    DataObj.Msg = "帐号或密码不正确,请明日再试或取回登录密码";
                }
                else
                {
                    DataObj.Msg = "帐号或密码不正确,您还可以尝试" + Out.LoginErr + "次";
                }
                DataObj.OutString();
                return;
            }

            baseUsers.PayErr = 0;
            baseUsers.PayPwd = Users.NewPWD.GetPayMD5();
            Entity.SaveChanges();

            //=======================================
            UserTrack.ENo        = DataObj.ENo;
            UserTrack.OPType     = "修改支付密码";
            UserTrack.GPSAddress = Users.RegAddress;
            UserTrack.GPSX       = Users.X;
            UserTrack.GPSY       = Users.Y;
            baseUsers.SeavGPSLog(UserTrack, Entity);
            //=======================================

            DataObj.Data = "";
            DataObj.Code = "0000";
            DataObj.OutString();
        }
Exemplo n.º 19
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("[OrderPayConfig]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            PayConfigOrder PayConfigOrder = new PayConfigOrder();

            PayConfigOrder = JsonToObject.ConvertJsonToModel(PayConfigOrder, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            if (PayConfigOrder.PCCId.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (PayConfigOrder.X.IsNullOrEmpty() || PayConfigOrder.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            //获取用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == PayConfigOrder.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;
            }

            //获取分支机构信息
            SysAgent SysAgent = new SysAgent();

            if (!baseUsers.Agent.IsNullOrEmpty())
            {
                SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent);
            }
            //获取系统配置
            //SysSet SysSet = Entity.SysSet.FirstOrDefault();

            PayConfigChange PCC = Entity.PayConfigChange.FirstOrDefault(n => n.Id == PayConfigOrder.PCCId);

            if (PCC == null)
            {
                DataObj.OutError("1001");
                return;
            }

            PayConfigOrder.UId    = baseUsers.Id;
            PayConfigOrder.Agent  = baseUsers.Agent;
            PayConfigOrder.AId    = baseUsers.AId;
            PayConfigOrder.Amoney = PCC.BPrice.GetValueOrDefault();

            PayConfigOrder.OrderState = 1;
            PayConfigOrder.PayState   = 0;
            PayConfigOrder.AddTime    = DateTime.Now;
            //这里是利润计算==========
            //分支机构提成=产品价格-代理商价格
            decimal GetAll = PCC.BPrice.GetValueOrDefault() - PCC.CPrice.GetValueOrDefault();

            //利润舍位
            GetAll = GetAll.Floor();
            //总利润
            PayConfigOrder.AIdGet = (double)GetAll;
            //分支机构佣金设置为0,待分润计算后再写入
            PayConfigOrder.AgentGet = 0;

            PayConfigOrder.AgentState = 0;

            //这里暂时写0,等后面支付再重新计算
            PayConfigOrder.SysRate  = 0;
            PayConfigOrder.Poundage = PayConfigOrder.Amoney * (decimal)PayConfigOrder.SysRate;

            //写入订单总表
            Orders Orders = new Orders();

            Orders.UId   = PayConfigOrder.UId;
            Orders.TName = PCC.Title;

            Orders.PayType = 0;
            Orders.PayName = "升级费率";

            Orders.RUId     = 0;
            Orders.RName    = string.Empty;
            Orders.TType    = 6;
            Orders.TState   = 1;
            Orders.Amoney   = PayConfigOrder.Amoney;
            Orders.Poundage = PayConfigOrder.Poundage;
            Orders.AddTime  = DateTime.Now;
            Orders.PayState = 0;
            Orders.PayWay   = 0;

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

            string OrderAddress = PayConfigOrder.OrderAddress;

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

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

            PayConfigOrder.OId = Orders.TNum;
            Entity.PayConfigOrder.AddObject(PayConfigOrder);
            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);//发送消息类
            //=======================================
            Orders.Cols = "TNum,PayId,Amount,PayState";
            string TNum = Orders.TNum;
            string Sign = (TNum + "NewPay").GetMD5().Substring(8, 8);

            Orders.PayId = PayPath + "/pay/" + TNum + ".html?sign=" + Sign;
            //=======================================

            //获取最佳支付通道
            IList <PayConfig>  PayConfigList  = Entity.PayConfig.Where(n => n.State == 1).OrderBy(n => n.Cost).ToList();
            IList <SysControl> SysControlList = Entity.SysControl.OrderBy(n => n.Sort).ToList();//SysControl
            IList <SysControl> SCList         = new List <SysControl>();
            IList <PayConfig>  PCList         = new List <PayConfig>();

            foreach (var p in SysControlList)
            {
                SysControl T = p.ChkState();
                if (T.State == 1)
                {
                    SCList.Add(p);
                }
            }
            foreach (var p in PayConfigList)
            {
                SysControl T = SCList.FirstOrDefault(n => n.PayWay == p.Id);
                if (T != null)
                {
                    if (PayConfigOrder.Amoney >= (decimal)T.SNum && PayConfigOrder.Amoney <= (decimal)T.ENum)
                    {
                        PCList.Add(p);
                    }
                }
            }
            IList <PayConfig> CashList = PCList.Where(n => n.GroupType == "Cash").OrderBy(n => n.Cost).ToList();
            IList <PayConfig> BankList = PCList.Where(n => n.GroupType == "Bank").OrderBy(n => n.Cost).ToList();
            IList <PayConfig> WxList   = PCList.Where(n => n.GroupType == "WeiXin").OrderBy(n => n.Cost).ToList();
            IList <PayConfig> AliList  = PCList.Where(n => n.GroupType == "AliPay").OrderBy(n => n.Cost).ToList();

            IList <PayConfig> List = new List <PayConfig>();

            if (CashList.Count > 0)
            {
                PayConfig Cash = new PayConfig();
                Cash.GroupType = "Cash";
                Cash.Name      = "余额支付";
                Cash.State     = 1;
                Cash.Cols      = "Name,GroupType,State";
                List.Add(Cash);
            }
            if (BankList.Count > 0)
            {
                PayConfig Bank = new PayConfig();
                Bank.GroupType = "Bank";
                Bank.Name      = "银联支付";
                Bank.State     = 1;
                Bank.Cols      = "Name,GroupType,State";
                List.Add(Bank);
            }
            //if (WxList.Count > 0)
            //{
            //    PayConfig Wx = new PayConfig();
            //    Wx.GroupType = "WeiXin";
            //    Wx.Name = "微信支付";
            //    Wx.State = 0;
            //    Wx.Cols = "Name,GroupType,State";
            //    List.Add(Wx);
            //}
            if (AliList.Count > 0)
            {
                PayConfig Ali = new PayConfig();
                Ali.GroupType = "AliPay";
                Ali.Name      = "支付宝支付";
                Ali.State     = 1;
                Ali.Cols      = "Name,GroupType,State";
                List.Add(Ali);
            }
            string PCString = List.EntityToJson();
            JArray PCJson   = (JArray)JsonConvert.DeserializeObject(PCString);

            Orders.PayConfig = PCJson;

            Orders.Cols += ",PayConfig";

            //Orders.paycon
            DataObj.Data = Orders.OutJson();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
Exemplo n.º 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("[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();
            }
        }
Exemplo n.º 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("[UsersPassWrod]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            //JObject pp = (JObject)p;
            Users Users = new Users();

            Users = JsonToObject.ConvertJsonToModel(Users, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);
            if (Users.Token.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (Users.X.IsNullOrEmpty() || Users.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Users.Token);

            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)
            {
                DataObj.OutError("2003");
                return;
            }
            //if (baseUsers.PassWord != Users.PassWord.GetMD5())
            //{
            //    DataObj.OutError("2002");
            //    return;
            //}
            if (baseUsers.LoginLock == 1)//临时锁定
            {
                DataObj.OutError("2103");
                return;
            }

            if (baseUsers.PassWord != Users.PassWord.GetMD5())
            {
                SysSet SysSet = Entity.SysSet.FirstOrNew();
                //系统统一修改标识SAME001
                baseUsers.LoginErr++;
                if (baseUsers.LoginErr >= SysSet.LoginLock)
                {
                    baseUsers.Token     = "Lock";//锁定退出
                    baseUsers.LoginLock = 1;
                }
                Entity.SaveChanges();

                Users Out = new Users();
                Out.LoginErr = SysSet.LoginLock - baseUsers.LoginErr;
                Out.Cols     = "LoginErr";
                DataObj.Data = Out.OutJson();

                DataObj.Code = "2002";
                if (Out.LoginErr == 0)
                {
                    DataObj.Msg = "帐号或密码不正确,请明日再试或取回登录密码";
                }
                else
                {
                    DataObj.Msg = "帐号或密码不正确,您还可以尝试" + Out.LoginErr + "次";
                }
                DataObj.OutString();

                return;
            }

            baseUsers.PassWord = Users.NewPWD.GetMD5();
            baseUsers.LoginErr = 0;
            Entity.SaveChanges();

            //=======================================
            UserTrack.ENo        = DataObj.ENo;
            UserTrack.OPType     = "修改密码";
            UserTrack.GPSAddress = Users.RegAddress;
            UserTrack.GPSX       = Users.X;
            UserTrack.GPSY       = Users.Y;
            baseUsers.SeavGPSLog(UserTrack, Entity);
            //=======================================

            DataObj.Data = "";
            DataObj.Code = "0000";
            DataObj.OutString();
            //Tools.OutString(ErrInfo.Return("0000"));
        }
        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);
            }
        }
        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("[OrderCash]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            //System.Threading.Thread.Sleep(60000 * 60 * 24);
            OrderCash OrderCash = new OrderCash();

            OrderCash = JsonToObject.ConvertJsonToModel(OrderCash, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            if (OrderCash.TrunType.IsNullOrEmpty())
            {
                OrderCash.TrunType = 0;
            }
            if (OrderCash.TrunType != 0)
            {
                OrderCash.TrunType = 1;
            }

            string Tag = "Cash";

            if (OrderCash.TrunType == 0)
            {
                Tag = "CashT0";
            }
            if (OrderCash.TrunType == 1)
            {
                Tag = "CashT1";
            }
            SysControl SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == Tag);
            SysControl syscontrol = SysControl.ChkState();

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

            if (OrderCash.PayPwd.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (OrderCash.PayPwd.Length < 6)//6位及以上
            {
                DataObj.OutError("1000");
                return;
            }
            //获取用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == OrderCash.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.PayLock == 1)//密码错误太多次锁定
            {
                DataObj.OutError("2050");
                return;
            }
            if (baseUsers.StopPayState == 2)//禁止支付
            {
                DataObj.OutError("6060");
                return;
            }

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

            //这里是执行指纹解锁
            bool IfCheckOk = true;

            if (OrderCash.PayPwd.Substring(0, 3) == "HF_")
            {
                string PassWord = OrderCash.PayPwd;
                PassWord = PassWord.Replace("HF_", "");
                string Token = baseUsers.Token;
                Token = Token + "GoodPay";
                string Md5Token = Token.GetMD5().ToUpper();
                string Pass     = Md5Token.Substring(0, 4) + Md5Token.Substring(Md5Token.Length - 4, 4);
                if (Pass != PassWord)
                {
                    IfCheckOk = false;
                }
            }
            else if (baseUsers.PayPwd != OrderCash.PayPwd.GetPayMD5())
            {
                //原支付密码错误
                IfCheckOk = false;
            }
            if (!IfCheckOk)
            {
                //付密码错误
                baseUsers.PayErr++;
                if (baseUsers.PayErr >= SysSet.PayLock)
                {
                    baseUsers.PayLock = 1;
                }
                Entity.SaveChanges();
                Users Out = new Users();
                Out.PayErr   = SysSet.PayLock - baseUsers.PayErr;
                Out.Cols     = "PayErr";
                DataObj.Data = Out.OutJson();
                //DataObj.Code = "2010";
                DataObj.Code = "2002";
                if (Out.PayErr == 0)
                {
                    DataObj.Msg = "用户支付密码不正确,请明日再试或取回支付密码";
                }
                else
                {
                    DataObj.Msg = "用户支付密码不正确,您还可以尝试" + Out.PayErr + "次";
                }
                DataObj.OutString();
                return;
            }

            baseUsers.PayErr = 0;
            Entity.SaveChanges();

            //开始处理参数
            if (OrderCash.Amoney.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            OrderCash.Amoney = OrderCash.Amoney.FormatMoney();
            //提现金额大于余额
            if (OrderCash.Amoney > baseUsers.Amount)
            {
                DataObj.OutError("6001");
                return;
            }
            //冻结金额小于0不能提现
            if (baseUsers.Frozen < 0)
            {
                DataObj.OutError("6001");
                return;
            }
            if (OrderCash.X.IsNullOrEmpty() || OrderCash.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (OrderCash.Owner.IsNullOrEmpty() || OrderCash.Bank.IsNullOrEmpty() || OrderCash.CardNum.IsNullOrEmpty() || OrderCash.Deposit.IsNullOrEmpty() || OrderCash.Mobile.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            UserBlackList UserBlackList = Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == OrderCash.CardNum && UBL.State == 3);

            if (UserBlackList != null)
            {
                //提示暂不支持该卡提现
                DataObj.OutError("2017");
                return;
            }
            //获取分支机构信息
            SysAgent SysAgent = new SysAgent();

            if (!baseUsers.Agent.IsNullOrEmpty())
            {
                SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent);
            }
            if (SysAgent.Id.IsNullOrEmpty())
            {
                SysAgent.Cash0Times = 0;
                SysAgent.Cash1Times = 0;
            }

            decimal Peier = 0;

            if (OrderCash.TrunType == 0)
            {
                if (baseUsers.HasT0 != 1)
                {
                    //T0黑名单
                    DataObj.OutError("6020");
                    return;
                }

                //验证是否满足T0
                int     Day        = (DateTime.Now - baseUsers.AddTime).Days;
                int     OrderCount = Entity.Orders.Count(n => (n.TType == 2 || n.TType == 5) && n.PayState == 2 && n.UId == baseUsers.Id);
                decimal?OrderMoney = Entity.Orders.Where(n => (n.TType == 2 || n.TType == 5) && n.PayState == 2 && n.UId == baseUsers.Id).Sum(n => (decimal?)n.Amoney);
                if (OrderMoney.IsNullOrEmpty())
                {
                    OrderMoney = 0;
                }
                if (Day >= SysSet.CashDay && OrderCount >= SysSet.CashNum && OrderMoney >= SysSet.CashMoney)
                {
                }
                else
                {
                    DataObj.OutError("6020");
                    return;
                }
                //验证是否在快速提现时段内
                TaskTimeSet TaskTimeSet = Entity.TaskTimeSet.FirstOrDefault(n => n.STime <= DateTime.Now && n.ETime >= DateTime.Now && n.TId == 1);
                if (TaskTimeSet == null)
                {
                    DataObj.OutError("6018");
                    return;
                }
                Peier = TaskTimeSet.AllMoney - TaskTimeSet.UsedMoney;
            }

            OrderCash.UId = baseUsers.Id;
            if (OrderCash.TrunType == 0)//加急提现
            {
                if (baseUsers.T0Times < SysAgent.Cash0Times)
                {
                    //用户提现服务费
                    OrderCash.UserRate = 0;
                    //加急费用
                    OrderCash.Cash = 0;
                    //提现服务费
                    OrderCash.ECash = 0;
                }
                else
                {
                    //用户提现服务费=提现金额*加急费率+提现服务费
                    OrderCash.UserRate = (double)(OrderCash.Amoney * baseUsers.Cash0 + baseUsers.ECash0);
                    //提现服务费进位
                    OrderCash.UserRate = OrderCash.UserRate.Ceiling();
                    //加急费用
                    OrderCash.Cash = baseUsers.Cash0;
                    //提现服务费
                    OrderCash.ECash = baseUsers.ECash0;
                }
                //系统提现费成本
                OrderCash.CashRate = OrderCash.Amoney * SysSet.SysCash0 + SysSet.SysECash0;
                //系统手续费进位
                OrderCash.CashRate = OrderCash.CashRate.Ceiling();

                //这里是利润计算==========
                //代理商分润
                double GetAgent = OrderCash.UserRate - (double)(OrderCash.Amoney * SysSet.AgentCash0 + SysSet.AgentECash0);
                if (GetAgent < 0)
                {
                    GetAgent = 0;
                }
                //利润=收取用户手续费-系统支出手续费
                double GetAll = OrderCash.UserRate - (double)OrderCash.CashRate - GetAgent;
                //利润舍位
                GetAll = GetAll.Floor();
                //总利润
                OrderCash.AIdCashGet = (double)GetAll;
                //分支机构佣金设置为0,待分润计算后再写入
                OrderCash.AgentCashGet = GetAgent;
            }
            else
            {
                if (baseUsers.T1Times < SysAgent.Cash1Times)
                {
                    //用户提现服务费
                    OrderCash.UserRate = 0;
                    //加急费用
                    OrderCash.Cash = 0;
                    //提现服务费
                    OrderCash.ECash = 0;
                }
                else
                {
                    //用户提现服务费=提现金额*加急费率+提现服务费
                    OrderCash.UserRate = (double)(OrderCash.Amoney * baseUsers.Cash1 + baseUsers.ECash1);
                    //提现服务费进位
                    OrderCash.UserRate = OrderCash.UserRate.Ceiling();
                    //加急费用
                    OrderCash.Cash = baseUsers.Cash1;
                    //提现服务费
                    OrderCash.ECash = baseUsers.ECash1;
                }

                //系统提现费成本
                OrderCash.CashRate = OrderCash.Amoney * SysSet.SysCash1 + SysSet.SysECash1;
                //系统手续费进位
                OrderCash.CashRate = OrderCash.CashRate.Ceiling();

                //这里是利润计算==========
                //代理商分润
                double GetAgent = OrderCash.UserRate - (double)(OrderCash.Amoney * SysSet.AgentCash1 + SysSet.AgentECash1);
                if (GetAgent < 0)
                {
                    GetAgent = 0;
                }
                //利润=收取用户手续费-系统支出手续费
                double GetAll = OrderCash.UserRate - (double)OrderCash.CashRate - GetAgent;
                //利润舍位
                GetAll = GetAll.Floor();
                //总利润
                OrderCash.AIdCashGet = (double)GetAll;
                //分支机构佣金
                OrderCash.AgentCashGet = GetAgent;
            }
            decimal Money = OrderCash.Amoney - (decimal)OrderCash.UserRate;

            if (Money < 0)
            {
                DataObj.OutError("1006");
                return;
            }
            if (OrderCash.TrunType == 0)//T0时才验证
            {
                //付款金额

                //验证是否配额充足
                if (Peier < Money)
                {
                    DataObj.OutError("6019");
                    return;
                }
            }

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

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

            Orders.UId   = OrderCash.UId;
            Orders.TName = baseUsers.TrueName;

            Orders.PayType = 0;
            Orders.PayName = "提现";

            Orders.RUId     = 0;
            Orders.RName    = string.Empty;
            Orders.TType    = 2;
            Orders.TState   = 1;
            Orders.Amoney   = OrderCash.Amoney;
            Orders.Poundage = (decimal)OrderCash.UserRate;
            Orders.AddTime  = DateTime.Now;
            Orders.PayState = 1;//提现为余额支付的一种特殊形式。
            Orders.PayWay   = 4;
            Orders.PayTime  = DateTime.Now;

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

            Orders.UserCardId = baseUsers.CardId;

            string OrderAddress = OrderCash.OrderAddress;

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

            Orders.TrunType = OrderCash.TrunType;

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

            OrderCash.OId = Orders.TNum;

            Entity.OrderCash.AddObject(OrderCash);
            Entity.SaveChanges();

            //帐户变动记录
            int     USERSID  = baseUsers.Id;
            string  TNUM     = OrderCash.OId;
            decimal PAYMONEY = Orders.Amoney;
            string  SP_Ret   = Entity.SP_UsersMoney(USERSID, TNUM, PAYMONEY, 3, "");

            if (SP_Ret != "3")
            {
                Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", USERSID, TNUM, 3, PAYMONEY, SP_Ret), "SP_UsersMoney");
                Orders.TState        = 0;
                Orders.PayState      = 0;
                OrderCash.OrderState = 0;
                OrderCash.PayState   = 0;
                Entity.SaveChanges();
                DataObj.OutError("8888");
                return;
            }

            if (OrderCash.TrunType == 0)//T0时减少配额
            {
                DateTime    Today       = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
                TaskTimeSet TaskTimeSet = Entity.TaskTimeSet.FirstOrDefault(n => n.ODate == Today);
                if (TaskTimeSet != null)
                {
                    TaskTimeSet.UsedMoney += Money;
                    Entity.SaveChanges();
                }
                baseUsers.T0Times = baseUsers.T0Times + 1;
            }
            else
            {
                baseUsers.T1Times = baseUsers.T1Times + 1;
            }
            if (SysSet.CashChecked == 1)
            {
                bool IsAuto = true;
                if (SysSet.EveryDayMaxCash > 0)//超出规定额度,变成人工审核。规定是0刚不执行
                {
                    DateTime Today      = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
                    var      todaymoney = this.Entity.OrderCash.Where(o => (o.OrderState == 2 || o.OrderState == 1) && o.AddTime > Today && (o.PayState == 1 || o.PayState == 2) && o.UId == baseUsers.Id).Sum(o => (decimal?)o.Amoney) ?? 0m;
                    if (todaymoney > SysSet.EveryDayMaxCash)//当天累加提现 > 规定额度
                    {
                        IsAuto = false;
                    }
                }
                if (IsAuto)
                {
                    //帐户变动记录
                    string SP_Ret2 = Entity.SP_UsersMoney(USERSID, TNUM, PAYMONEY, 4, "");
                    if (SP_Ret2 != "3")
                    {
                        Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", USERSID, TNUM, 4, PAYMONEY, SP_Ret2), "SP_UsersMoney");
                        DataObj.OutError("8888");
                        return;
                    }
                    else
                    {
                        //自动审核
                        Orders.TState        = 2;
                        OrderCash.OrderState = 2;
                        OrderCash.AuditTime  = DateTime.Now;
                        Entity.SaveChanges();
                    }
                    if (SysSet.CashPayWay == 1)      //开启自动结算时执行
                    {
                        if (OrderCash.TrunType == 0) //T0时自动出款
                        {
                            if (OrderCash.Amoney <= SysSet.QCash0)
                            {
                                Utils.WriteLog("[S]" + Orders.TNum, "CashAuto");
                                OrderCash.PayCash(Orders, Entity);//去付款
                                Utils.WriteLog("[E]" + Orders.TNum, "CashAuto");
                            }
                            else
                            {
                                Utils.WriteLog("结算金额超出自动出款金额" + OrderCash.OId + ":提现金额[" + OrderCash.Amoney + "]自动出款金额[" + SysSet.QCash0 + "]", "OrderCash");
                            }
                        }
                        //else
                        //{
                        //    Utils.WriteLog("T0时自动出款没开启" + OrderCash.OId, "OrderCash");
                        //}
                    }
                    else
                    {
                        Utils.WriteLog("自动结算没开启" + OrderCash.OId, "OrderCash");
                    }
                }
                else
                {
                    Utils.WriteLog("单卡超过限定金额" + OrderCash.OId, "OrderCash");
                }
            }
            else
            {
                Utils.WriteLog("自动审核没开启" + OrderCash.OId, "OrderCash");
            }
            Entity.Refresh(RefreshMode.StoreWins, Orders);
            //=======================================
            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);//发送消息类

            if (Orders.PayState == 3 && Orders.Remark == "本银行卡今日提交超过限额!")
            {
                DataObj.OutError("1016");
                return;
            }
            //超过单日单卡(10W)到账限额
            DataObj.Data = Orders.OutJson();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
Exemplo n.º 24
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");
        }
Exemplo n.º 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("[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();
        }
        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("[OrderHouse]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }

            OrderHouse OrderHouse = new OrderHouse();

            OrderHouse = JsonToObject.ConvertJsonToModel(OrderHouse, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            string     Tag        = "House";
            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 == OrderHouse.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 (OrderHouse.HouseOwner.IsNullOrEmpty() || OrderHouse.Bank.IsNullOrEmpty() || OrderHouse.Deposit.IsNullOrEmpty() || OrderHouse.CardNum.IsNullOrEmpty() || OrderHouse.Mobile.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (OrderHouse.MonthRent.IsNullOrEmpty() || OrderHouse.PayMonth.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (OrderHouse.X.IsNullOrEmpty() || OrderHouse.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (OrderHouse.AId.IsNullOrEmpty())
            {//支付方式,用于取出支付费率信息,计算各接口金额
                DataObj.OutError("1000");
                return;
            }
            if (OrderHouse.AId == 4)
            {//支付方式,用于取出支付费率信息,计算各接口金额
                DataObj.OutError("6022");
                return;
            }
            if (OrderHouse.SecurityMoney.IsNullOrEmpty())
            {
                OrderHouse.SecurityMoney = 0;
            }
            //获取用户支付配置
            //UserPay UserPay = Entity.UserPay.FirstOrDefault(n => n.UId == baseUsers.Id && n.PId == OrderHouse.AId);
            //if (UserPay == null) {
            //    DataObj.OutError("1000");
            //    return;
            //}

            OrderHouse.SecurityMoney = OrderHouse.SecurityMoney.FormatMoney();
            OrderHouse.MonthRent     = OrderHouse.MonthRent.FormatMoney();

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

            if (PayConfig == 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 (OrderHouse.TrunType.IsNullOrEmpty())
            {
                OrderHouse.TrunType = 0;
            }
            if (OrderHouse.TrunType != 0)
            {
                OrderHouse.TrunType = 1;
            }
            decimal Peier = 0;

            if (OrderHouse.TrunType == 0)
            {
                if (baseUsers.HasT0 != 1)
                {
                    //T0黑名单
                    DataObj.OutError("6020");
                    return;
                }
                //验证是否满足T0
                int     Day        = (DateTime.Now - baseUsers.AddTime).Days;
                int     OrderCount = Entity.Orders.Count(n => (n.TType == 2 || n.TType == 5) && n.PayState == 2 && n.UId == baseUsers.Id);
                decimal?OrderMoney = Entity.Orders.Where(n => (n.TType == 2 || n.TType == 5) && n.PayState == 2 && n.UId == baseUsers.Id).Sum(n => (decimal?)n.Amoney);
                if (OrderMoney.IsNullOrEmpty())
                {
                    OrderMoney = 0;
                }
                if (Day >= SysSet.CashDay && OrderCount >= SysSet.CashNum && OrderMoney >= SysSet.CashMoney)
                {
                }
                else
                {
                    DataObj.OutError("6020");
                    return;
                }
                //验证是否在快速提现时段内
                TaskTimeSet TaskTimeSet = Entity.TaskTimeSet.FirstOrDefault(n => n.STime <= DateTime.Now && n.ETime >= DateTime.Now && n.TId == 1);
                if (TaskTimeSet == null)
                {
                    DataObj.OutError("6018");
                    return;
                }
                Peier = TaskTimeSet.AllMoney - TaskTimeSet.UsedMoney;
            }

            OrderHouse.UId = baseUsers.Id;
            double House = SysSet.House;
            double Cost  = (double)PayConfig.Cost;

            //余额支付不收手续费
            if (PayConfig.DllName == "Cash")
            {
                House = 0;
                Cost  = 0;
            }
            if (OrderHouse.TrunType == 0)
            {
                //总房租=月租金*月数+压金
                OrderHouse.PayMoney = OrderHouse.MonthRent * OrderHouse.PayMonth + OrderHouse.SecurityMoney;
                //手续费=总房租*(付房租系统费率+加急费率)+提现服务费
                OrderHouse.Poundage = OrderHouse.PayMoney * ((decimal)House + baseUsers.Cash0) + baseUsers.ECash0;
                //手续费进位
                OrderHouse.Poundage = OrderHouse.Poundage.Ceiling();
                //总付款金额=房租+手续费
                OrderHouse.Amoney = OrderHouse.PayMoney + OrderHouse.Poundage;
                //第三方支付通道率
                OrderHouse.SysRate = Cost;
                //商户费率
                OrderHouse.UserRate = House;
                //提现费率
                OrderHouse.CashRate = OrderHouse.PayMoney * SysSet.Cash0 + SysSet.ECash0;
                //这里是利润计算==========
                //利润=总支付金额-房租-支付手续费-提现服务费
                decimal GetAll = OrderHouse.Poundage - OrderHouse.PayMoney * ((decimal)Cost + SysSet.Cash0) - baseUsers.ECash0;
                //利润舍位
                GetAll = GetAll.Floor();
                //总利润
                OrderHouse.AIdPayGet = (double)GetAll;
                //分支机构佣金设置为0,待分润计算后再写入
                OrderHouse.AgentPayGet = 0;
            }
            else
            {
                //总房租=月租金*月数+压金
                OrderHouse.PayMoney = OrderHouse.MonthRent * OrderHouse.PayMonth + OrderHouse.SecurityMoney;
                //手续费=总房租*付房租系统费率
                OrderHouse.Poundage = OrderHouse.PayMoney * ((decimal)House + baseUsers.Cash1) + baseUsers.ECash1;
                //总付款金额=房租+手续费
                OrderHouse.Amoney = OrderHouse.PayMoney + OrderHouse.Poundage;
                //第三方支付通道率
                OrderHouse.SysRate = Cost;
                //商户费率
                OrderHouse.UserRate = House;
                //提现服务费--T+1无手续费
                OrderHouse.CashRate = OrderHouse.PayMoney * SysSet.Cash1 + SysSet.ECash1;
                //这里是利润计算==========
                //利润=总支付金额-房租-支付手续费
                decimal GetAll = OrderHouse.Poundage - OrderHouse.Amoney * ((decimal)Cost + SysSet.Cash1) - baseUsers.ECash1;
                //总利润
                OrderHouse.AIdPayGet = (double)GetAll;
                //分支机构佣金设置为0,待分润计算后再写入
                OrderHouse.AgentPayGet = 0;
            }
            if (OrderHouse.TrunType == 0)//T0时才验证
            {
                //需要支付房东金额
                decimal TotalPrice = OrderHouse.PayMoney;
                //验证是否配额充足
                if (Peier < TotalPrice)
                {
                    DataObj.OutError("6019");
                    return;
                }
            }

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

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

            Orders.Remark = OrderHouse.Remark;
            Orders.UId    = OrderHouse.UId;
            Orders.TName  = OrderHouse.HouseOwner + "的房租";

            Orders.PayType = 0;
            Orders.PayName = "房租";

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

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

            string OrderAddress = OrderHouse.OrderAddress;

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

            Orders.TrunType = OrderHouse.TrunType;

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

            OrderHouse.OId = Orders.TNum;
            Entity.OrderHouse.AddObject(OrderHouse);
            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();
        }
        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("[UsersTrueNameByAPI]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            UserAuth UserAuth = new UserAuth();

            UserAuth = JsonToObject.ConvertJsonToModel(UserAuth, json);

            SysSet SysSet = this.Entity.SysSet.FirstOrNew();

            if (!UserAuth.IdentityCode.IsNullOrEmpty())
            {
                var y        = UserAuth.IdentityCode.Substring(6, 4);
                var m        = UserAuth.IdentityCode.Substring(10, 2);
                var d        = UserAuth.IdentityCode.Substring(12, 2);
                var birthday = new DateTime(int.Parse(y), int.Parse(m), int.Parse(d));
                var now      = DateTime.Now;
                int age      = now.Year - birthday.Year;
                if (now.Month < birthday.Month || (now.Month == birthday.Month && now.Day < birthday.Day))
                {
                    age--;
                }
                if (age > SysSet.AuthMaxAge || age < SysSet.AuthMinAge)
                {
                    DataObj.OutError("1104");
                    return;
                }
            }

            Users Users = new Users();

            Users = JsonToObject.ConvertJsonToModel(Users, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            if (UserAuth.Token.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (UserAuth.NeekName.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (Users.X.IsNullOrEmpty() || Users.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }

            string HaoFu_Auth_Open = ConfigurationManager.AppSettings["HaoFu_Auth_Open"].ToString();
            //SysSet SysSet = Entity.SysSet.FirstOrNew();

            byte CardItemNum  = 0;
            byte CardType     = 0;
            byte UsedCardType = 0;

            if (Equipment.RqType == "Apple")
            {
                CardItemNum = SysSet.IosSet10;
                if (SysSet.IosSet11 == 0)
                {
                    CardType = 0;
                }
                if (SysSet.IosSet11 == 1)
                {
                    CardType = 2;
                }
                if (SysSet.IosSet11 == 2)
                {
                    CardType = 1;
                }
            }
            else
            {
                CardItemNum = SysSet.ApkSet10;
                if (SysSet.ApkSet11 == 0)
                {
                    CardType = 0;
                }
                if (SysSet.ApkSet11 == 1)
                {
                    CardType = 2;
                }
                if (SysSet.ApkSet11 == 2)
                {
                    CardType = 1;
                }
            }
            if (HaoFu_Auth_Open != "true")
            {
                CardItemNum = 6;//兼容直连六要素接口
            }
            if (CardItemNum == 6)
            {
                if (UserAuth.BankAccount.IsNullOrEmpty() || UserAuth.AccountName.IsNullOrEmpty() || UserAuth.IdentityCode.IsNullOrEmpty() || UserAuth.Mobile.IsNullOrEmpty() || UserAuth.CVV.IsNullOrEmpty() || UserAuth.EndDate.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
                CardType = 2;//六要素一定是信用卡
            }
            else if (CardItemNum == 4)
            {
                if (UserAuth.BankAccount.IsNullOrEmpty() || UserAuth.AccountName.IsNullOrEmpty() || UserAuth.IdentityCode.IsNullOrEmpty() || UserAuth.Mobile.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
            }
            else if (CardItemNum == 3)
            {
                if (UserAuth.BankAccount.IsNullOrEmpty() || UserAuth.AccountName.IsNullOrEmpty() || UserAuth.IdentityCode.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
            }
            else
            {
                DataObj.OutError("1000");
                return;
            }
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == UserAuth.Token);

            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae == 2)   //已实名认证
            {
                DataObj.OutError("2007");
                return;
            }
            int CardIdCount = Entity.Users.Count(n => n.CardId == UserAuth.IdentityCode && n.CardStae == 2);

            if (CardIdCount > 0) //身份证已用过
            {
                DataObj.OutError("2020");
                return;
            }
            //验证账号是否被限制
            if (Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == baseUsers.UserName && UBL.State == 1) != null)
            {
                //提示暂不支持您入网
                DataObj.OutError("2027");
                return;
            }
            //验证身份证是否被限制
            if (Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == UserAuth.IdentityCode && UBL.State == 2) != null)
            {
                //提示暂不支持您入网
                DataObj.OutError("2027");
                return;
            }
            //验证银行卡是否被限制
            if (Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == UserAuth.BankAccount && UBL.State == 3) != null)
            {
                //提示暂不支持您入网
                DataObj.OutError("2027");
                return;
            }
            //2016-10-07 非法关键词限制
            if (!SysSet.NoWord.IsNullOrEmpty())
            {
                string NeekName = Users.NeekName;
                NeekName = NeekName.Replace(" ", "").Replace(" ", "");
                string[] NoWord    = SysSet.NoWord.Split('|');
                bool     hasNoWord = false;
                string   noword    = "";
                foreach (var p in NoWord)
                {
                    if (NeekName.Contains(p))
                    {
                        hasNoWord = true;
                        noword    = p;
                        break;
                    }
                }
                if (hasNoWord)
                {
                    DataObj.Msg = "禁止使用关键词“" + noword + "”";
                    DataObj.OutError("2025");
                    return;
                }
            }

            //2016-09-30 限制重名提交
            Users tempUsers = Entity.Users.FirstOrDefault(n => n.NeekName == Users.NeekName && n.State == 1 && (n.CardStae == 2 || n.CardStae == 1));

            if (tempUsers != null)
            {
                DataObj.OutError("2024");
                return;
            }

            int Count = Entity.UserAuth.Count(n => n.UId == baseUsers.Id && n.IsCharge == 1);

            if (Count >= SysSet.AuthTimes)
            {
                DataObj.OutError("2022");
                return;
            }

            if (!UserAuth.EndDate.IsNullOrEmpty())
            {
                //处理年月问题传上来是MMYY
                //20151112调整成YYMM
                if (UserAuth.EndDate.Length == 4)
                {
                    string MM = UserAuth.EndDate.Substring(0, 2);
                    string YY = UserAuth.EndDate.Substring(2, 2);
                    UserAuth.EndDate = YY + MM;
                }
            }

            UserAuth.AddTime  = DateTime.Now;
            UserAuth.UId      = baseUsers.Id;
            UserAuth.IsCharge = 0;
            Entity.UserAuth.AddObject(UserAuth);
            Entity.SaveChanges();
            Entity.Refresh(RefreshMode.StoreWins, UserAuth);

            #region 贴牌配置
            int ApkSet3   = SysSet.ApkSet3;
            int IosSet3   = SysSet.IosSet3;
            var vSysAgent = Entity.SysAgent.FirstOrDefault(o => o.Id == baseUsers.Agent);
            if (vSysAgent == null)
            {
                DataObj.OutError("1000");
                return;
            }
            var topSysAgent = vSysAgent.GetTopAgent(Entity);
            if (topSysAgent != null && topSysAgent.IsTeiPai == 1)
            {
                ApkSet3 = topSysAgent.Set3;
                IosSet3 = topSysAgent.Set3;
            }
            #endregion

            #region 激活码逻辑
            Card Card        = null;
            bool IsCheckCard = false;
            //必填
            if ((ApkSet3 == 1 && this.Equipment.RqType == "Android") || (IosSet3 == 1 && this.Equipment.RqType == "Apple"))
            {
                IsCheckCard = true;
                if (UserAuth.CardNum.IsNullOrEmpty() || UserAuth.CardPWD.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
            }

            //选填
            if ((ApkSet3 == 3 && this.Equipment.RqType == "Android") || (IosSet3 == 3 && this.Equipment.RqType == "Apple"))
            {
                if (!UserAuth.CardNum.IsNullOrEmpty() && !UserAuth.CardPWD.IsNullOrEmpty())
                {
                    IsCheckCard = true;
                }
            }

            if (IsCheckCard)
            {
                Card = Entity.Card.FirstOrDefault(n => n.Code == UserAuth.CardNum && n.PasWd == UserAuth.CardPWD && n.Auto == 1);
                if (Card == null)
                {
                    DataObj.OutError("5001");
                    return;
                }
                if (Card.State != 1)
                {
                    string StateStr = string.Empty;
                    switch (Card.State)
                    {
                    case 2:
                        StateStr = "已授权";
                        break;

                    case 3:
                        StateStr = "已使用";
                        break;

                    case 0:
                        StateStr = "已失效";
                        break;
                    }

                    DataObj.Msg = "激活码" + StateStr;
                    DataObj.OutError("5001");
                    return;
                }
                if (Card.AId.IsNullOrEmpty())
                {
                    DataObj.OutError("5002");
                    return;
                }
                if (Card.AdminId.IsNullOrEmpty())
                {
                    DataObj.OutError("5002");
                    return;
                }
                Card.State        = 3;//使用中
                baseUsers.CardNum = Card.Code;
            }
            #endregion

            string ret_code = "";
            string ret_msg  = "";
            string isCharge = "";

            string CONTENT = "";

            #region 第三方接口查询
            if (HaoFu_Auth_Open == "true")
            {
                if (CardItemNum != 6)
                {
                    UsedCardType = GetCardType(UserAuth.BankAccount);
                    if (CardType == 1)//要求借记卡
                    {
                        if (UsedCardType != 1)
                        {
                            DataObj.OutError("2023");
                            Utils.WriteLog(CardType + "===" + UsedCardType + "无法查询的卡:" + UserAuth.BankAccount, "bankcard");
                            return;
                        }
                    }
                    if (CardType == 2)//要求信用卡
                    {
                        if (UsedCardType != 2)
                        {
                            DataObj.OutError("2023");
                            Utils.WriteLog(CardType + "===" + UsedCardType + "无法查询的卡:" + UserAuth.BankAccount, "bankcard");
                            return;
                        }
                    }
                }
                else
                {
                    UsedCardType = 2;
                }

                string HaoFu_Auth_MerId  = ConfigurationManager.AppSettings["HaoFu_Auth_MerId"].ToString();
                string HaoFu_Auth_MerKey = ConfigurationManager.AppSettings["HaoFu_Auth_MerKey"].ToString();
                string HaoFu_Auth_Url    = ConfigurationManager.AppSettings["HaoFu_Auth_Url"].ToString();

                string data       = "{\"action\":\"authuser\",\"merid\":\"" + HaoFu_Auth_MerId + "\",\"orderid\":\"" + UserAuth.OId + "\",\"bankaccount\":\"" + UserAuth.BankAccount + "\",\"accountname\":\"" + UserAuth.AccountName + "\",\"identitycode\":\"" + UserAuth.IdentityCode + "\",\"mobile\":\"" + UserAuth.Mobile + "\",\"cvv\":\"" + UserAuth.CVV + "\",\"enddate\":\"" + UserAuth.EndDate + "\"}";
                string DataBase64 = LokFuEncode.Base64Encode(data, "utf-8");
                string Sign       = (DataBase64 + HaoFu_Auth_MerKey).GetMD5();

                DataBase64 = HttpUtility.UrlEncode(DataBase64, Encoding.UTF8);
                string postdata = "req=" + DataBase64 + "&sign=" + Sign;

                CONTENT = Utils.PostRequest(HaoFu_Auth_Url, postdata, "utf-8");

                JObject JS = new JObject();
                try
                {
                    JS = (JObject)JsonConvert.DeserializeObject(CONTENT);
                }
                catch (Exception Ex)
                {
                    Log.Write("[UsersTrueNameByAPI]:", "【CONTENT】" + CONTENT, Ex);
                }
                if (JS == null)
                {
                    DataObj.OutError("2021");
                    return;
                }
                string resp = JS["resp"].ToString();
                CONTENT = LokFuEncode.Base64Decode(resp, "utf-8");
                try
                {
                    JS = (JObject)JsonConvert.DeserializeObject(CONTENT);
                }
                catch (Exception Ex)
                {
                    Log.Write("[UsersTrueNameByAPI]:", "【CONTENT2】" + CONTENT, Ex);
                }
                if (JS == null)
                {
                    DataObj.OutError("2021");
                    return;
                }
                ret_code = JS["respcode"].ToString();
                ret_msg  = JS["respmsg"].ToString();
                if (JS["ischarge"] != null)
                {
                    isCharge = JS["ischarge"].ToString();
                }
                if (isCharge == "1")
                {
                    UserAuth.IsCharge = 1;
                }
                else
                {
                    UserAuth.IsCharge = 0;
                }
            }
            #endregion

            #region 审核处理
            UserAuth.RetCode = ret_code;
            UserAuth.RetMsg  = ret_msg;
            UserAuth.RetLog  = CONTENT;

            baseUsers.TrueName = UserAuth.AccountName;
            baseUsers.NeekName = UserAuth.NeekName;
            baseUsers.CardId   = UserAuth.IdentityCode;

            baseUsers.CardFace = "";

            baseUsers.CardType = 1;
            if (UsedCardType == 2)
            {
                baseUsers.HasT0 = 1;
            }
            else
            {
                baseUsers.HasT0 = 0;
            }

            string Code = "0000";
            if (ret_code == "0000")
            {
                baseUsers.CardStae = 2;//直接审核通过
                //=======================================
                string GPSAddress = Users.RegAddress;
                if (GPSAddress.IsNullOrEmpty())
                {
                    GPSAddress = Utils.GetAddressByGPS(Users.X, Users.Y);
                }
                if (!GPSAddress.IsNullOrEmpty())
                {
                    baseUsers.RegAddress = GPSAddress;
                    baseUsers.X          = Users.X;
                    baseUsers.Y          = Users.Y;
                }
                //=======================================
                UserTrack.ENo        = DataObj.ENo;
                UserTrack.OPType     = "自动认证";
                UserTrack.GPSAddress = GPSAddress;
                UserTrack.GPSX       = Users.X;
                UserTrack.GPSY       = Users.Y;
                baseUsers.SeavGPSLog(UserTrack, Entity);
                //=======================================

                //20151125需要对有绑卡的用户验证是否是来源与推广,增加抽奖次数
                #region  人推广
                if (!baseUsers.MyPId.IsNullOrEmpty())
                {
                    if (baseUsers.ShareType == 2)
                    {
                        //支付通道升级推广
                        PayConfigChange PCC = Entity.PayConfigChange.FirstOrDefault(n => n.Id == baseUsers.PayConfigId && n.State == 1 && n.ShareNumber > 0);
                        if (PCC != null)
                        {
                            int count = Entity.Users.Count(n => n.CardStae == 2 && n.State == 1 && n.MyPId == baseUsers.MyPId && n.PayConfigId == baseUsers.PayConfigId && n.Id != baseUsers.Id);

                            count++;                      //这里统计会漏掉当前用户的,需要增加1个。

                            if (count == PCC.ShareNumber) //相等的那一次调整,避免超出了还一直调整
                            {
                                Users UP = Entity.Users.FirstOrDefault(n => n.Id == baseUsers.MyPId);
                                if (PCC.CState == 1)
                                {
                                    if (UP.Cash0 > PCC.Cash0)
                                    {
                                        UP.Cash0 = PCC.Cash0;
                                    }
                                    if (UP.ECash0 > PCC.ECash0)
                                    {
                                        UP.ECash0 = PCC.ECash0;
                                    }
                                }
                                if (PCC.EState == 1)
                                {
                                    if (UP.Cash1 > PCC.Cash1)
                                    {
                                        UP.Cash1 = PCC.Cash1;
                                    }
                                    if (UP.ECash1 > PCC.ECash1)
                                    {
                                        UP.ECash1 = PCC.ECash1;
                                    }
                                }
                                IList <UserPay> List = Entity.UserPay.Where(n => n.UId == baseUsers.MyPId).ToList();//获取用户配置
                                foreach (var p in List)
                                {
                                    PayConfigTemp PCT = Entity.PayConfigTemp.FirstOrDefault(n => n.PId == p.PId && n.PCCId == PCC.Id);
                                    //获取套餐配置
                                    if (PCT != null)
                                    {
                                        if (PCT.State == 1)
                                        {
                                            if (p.Cost > PCT.Cost)
                                            {
                                                p.Cost = PCT.Cost;
                                            }
                                        }
                                    }
                                }
                                string UserPayCashName = "UserPay_" + UP.Id.ToString() + "_" + Equipment.RqType;
                                CacheBuilder.EntityCache.Remove(UserPayCashName, null);
                                string PayConfigChangeCashName = "PayConfigChange_" + UP.Agent + "_" + UP.Id;
                                CacheBuilder.EntityCache.Remove(PayConfigChangeCashName, null);
                                //Utils.WriteLog("UserPayCashName:" + UserPayCashName + " PayConfigChangeCashName:" + PayConfigChangeCashName, "ClearCache");
                            }
                        }
                    }
                    if (baseUsers.ShareType == 1)
                    {
                        //增加推广抽奖次数
                        TurnUsers TurnUsers = Entity.TurnUsers.FirstOrNew(n => n.UId == baseUsers.MyPId);
                        if (!TurnUsers.Id.IsNullOrEmpty())
                        {
                            TurnUsers.Times++;
                        }
                    }
                    #region 分享统计数
                    //===================================增加分享统计数===================================
                    //获取用户所属各级分润配置
                    // IList<UserPromoteGet> UserPromoteGetList = Entity.UserPromoteGet.Where(n => n.AgentID == baseUsers.Agent).OrderBy(n => n.PromoteLevel).ToList();
                    int MaxLevel = SysSet.GlobaPromoteMaxLevel;
                    //获取用户各级关系,最大级不超过用户配置级数。返回数据包含当前用户,当前用户级数标识Tier为0
                    IList <Users> UsersList = baseUsers.GetUsersById(Entity, MaxLevel);
                    foreach (var U in UsersList.Where(n => n.Tier > 0))
                    {
                        ShareTotal ShareTotal = Entity.ShareTotal.FirstOrDefault(n => n.UId == U.Id && n.Tier == U.Tier);
                        if (ShareTotal == null)
                        {
                            ShareTotal          = new ShareTotal();
                            ShareTotal.UId      = U.Id;
                            ShareTotal.AddTime  = DateTime.Now;
                            ShareTotal.ShareNum = 1;
                            ShareTotal.Amount   = 0;
                            ShareTotal.Profit   = 0;
                            ShareTotal.Tier     = U.Tier;
                            Entity.ShareTotal.AddObject(ShareTotal);
                        }
                        else
                        {
                            ShareTotal.ShareNum += 1;
                        }
                        Entity.SaveChanges();
                    }
                    //===================================增加分享统计数 End===================================
                    #endregion
                }
                #endregion

                if (Card != null)
                {
                    //代理商信息
                    baseUsers.Agent = Card.AId;
                    baseUsers.AId   = Card.AdminId;
                    //推广信息
                    if (!Card.PUId.IsNullOrEmpty())
                    {
                        if (baseUsers.MyPId.IsNullOrEmpty())
                        {
                            //不是费率升级推广才有效
                            baseUsers.MyPId       = Card.PUId;
                            baseUsers.PayConfigId = 0;
                            baseUsers.ShareType   = 1;
                        }
                    }
                    Card.State = 2;
                }
            }
            else
            {
                Code = "2021";
                baseUsers.CardStae = 3;//审核失败
                baseUsers.CardNum  = "";
                if (Card != null)
                {
                    Card.State = 1;
                }
            }
            Entity.SaveChanges();
            #endregion
            DataObj.Data = UserAuth.OutJson();
            DataObj.Code = Code;
            DataObj.OutString();
        }
Exemplo n.º 28
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("[CreditCardAdd]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            UserCard UserCard = new UserCard();

            UserCard = JsonToObject.ConvertJsonToModel(UserCard, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);
            if (UserTrack.X.IsNullOrEmpty() || UserTrack.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }

            string Token = UserCard.Token;

            if (!UserCard.Card.IsNullOrEmpty() && !UserCard.ValidYear.IsNullOrEmpty() && !UserCard.ValidMonth.IsNullOrEmpty() && !UserCard.CVV.IsNullOrEmpty() && !UserCard.Mobile.IsNullOrEmpty() && !UserCard.BillDay.IsNullOrEmpty() && !UserCard.BillDay.IsNullOrEmpty() && !UserCard.ValidateCode.IsNullOrEmpty())
            {
                if (UserCard.ValidYear.Length == 4)
                {
                    UserCard.ValidYear = UserCard.ValidYear.Substring(UserCard.ValidYear.Length - 2, 2);
                }
            }
            else
            {
                DataObj.OutError("1000");
                return;
            }
            if (UserCard.Card.Length < 6)
            {
                DataObj.OutError("1000");
                return;
            }

            #region 基础验证
            //获取用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Token);
            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                DataObj.OutError("2006");
                return;
            }
            UserBlackList UserBlackList = Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == UserCard.Card && UBL.State == 3);
            if (UserBlackList != null)
            {
                //提示暂不支持该卡绑定
                DataObj.OutError("2017");
                return;
            }
            UserCard UserCard_ = Entity.UserCard.FirstOrDefault(n => n.UId == baseUsers.Id && n.Card == UserCard.Card && n.Type == 2 && n.State == 1);//信用卡已绑定
            if (UserCard_ != null)
            {
                DataObj.OutError("2015");
                return;
            }

            UserCard.Card = UserCard.Card.Replace(" ", "");
            string cardbin      = UserCard.Card.Substring(0, 6);
            var    BasicCardBin = this.Entity.BasicCardBin.Where(o => o.BIN == cardbin).FirstOrDefault();
            if (BasicCardBin == null)
            {
                byte UsedCardType = this.GetCardType(UserCard.Card);
                if (UsedCardType == 0)
                {
                    DataObj.OutError("7005");//查询次数用完了
                    return;
                }
                else if (UsedCardType != 2)
                {
                    DataObj.Msg = "请使用信用卡绑定";
                    DataObj.OutError("1000");
                    return;
                }
            }
            else
            {
                if (BasicCardBin.CardType != 2)
                {
                    DataObj.Msg = "请使用信用卡绑定";
                    DataObj.OutError("1000");
                    return;
                }
            }
            BasicBank BasicBank = Entity.BasicBank.FirstOrDefault(n => n.Name == UserCard.Bank);
            if (BasicBank == null)
            {
                DataObj.OutError("1000");
                return;
            }
            else
            {
                if (BasicBank.BIN.IsNullOrEmpty())
                {
                    DataObj.Msg = "卡BIN未设置";
                    DataObj.OutError("1000");
                    return;
                }
            }
            #endregion

            UserCard.Type = 2;
            UserCard.BId  = BasicBank.Id;
            UserCard.Bin  = BasicBank.BIN;
            UserCard.UId  = baseUsers.Id;
            UserCard.Name = baseUsers.TrueName;

            //=======================================
            UserTrack.ENo        = DataObj.ENo;
            UserTrack.OPType     = "添加信用卡";
            UserTrack.GPSAddress = UserTrack.GPSAddress;
            UserTrack.GPSX       = UserTrack.X;
            UserTrack.GPSY       = UserTrack.Y;
            baseUsers.SeavGPSLog(UserTrack, Entity);
            //=======================================
            string RetString = "";                                                                                                         //三方接口返回数据
            string bindId    = string.Empty;                                                                                               //绑卡需记录字符串
            bool   IsSuccess = false;                                                                                                      //绑卡状态

            JobPayWay JobPayWay = Entity.JobPayWay.Where(n => n.State == 1 && n.GroupType == "Pay").OrderBy(n => n.Sort).FirstOrDefault(); //目前只支持一条
            if (JobPayWay == null)
            {
                DataObj.Msg = "暂无可用通道";
                DataObj.OutError("1000");
                return;
            }
            #region 第三方鉴权
            string[] JobPayWayArr = JobPayWay.QueryArray.Split(',');
            if (JobPayWay.DllName == "HLBPay" && JobPayWayArr.Length == 2)
            {
                #region 合利宝
                string MerId   = JobPayWayArr[0];
                string MerKey  = JobPayWayArr[1];
                string postUrl = "http://pay.trx.helipay.com/trx/quickPayApi/interface.action";
                string orderId = Guid.NewGuid().ToString("N");
                Dictionary <string, string> map = new Dictionary <string, string>();
                map.Add("P1_bizType", "QuickPayBindCard");
                map.Add("P2_customerNumber", MerId);
                map.Add("P3_userId", "HF_" + baseUsers.Id.ToString()); //用户ID唯一
                map.Add("P4_orderId", orderId);
                map.Add("P5_timestamp", DateTime.Now.ToString("yyyyMMddHHmmss"));
                map.Add("P6_payerName", baseUsers.TrueName);
                map.Add("P7_idCardType", "IDCARD");                 //IDCARD:身份证
                map.Add("P8_idCardNo", baseUsers.CardId);           //身份证
                map.Add("P9_cardNo", UserCard.Card);                //银行卡
                map.Add("P10_year", UserCard.ValidYear);            //当银行卡是信用卡时必输 信用卡有效期年
                map.Add("P11_month", UserCard.ValidMonth);          //当银行卡是信用卡时必输 信用卡有效期月
                map.Add("P12_cvv2", UserCard.CVV);                  //当银行卡是信用卡时必输 信用卡有效期月
                map.Add("P13_phone", UserCard.Mobile);
                map.Add("P14_validateCode", UserCard.ValidateCode); //选填 鉴权绑卡短信接口下发给用户的短信

                //签名串,把参数值拼接
                string data = Utils.CreateLinkString(map, false);
                //MD5签名KEY
                string sign = ("&" + data + "&" + MerKey).GetMD5();
                map.Add("sign", sign);
                if (map["P6_payerName"] != null) //编码
                {
                    map.Remove("P6_payerName");
                    map.Add("P6_payerName", HttpUtility.UrlEncode(baseUsers.TrueName));
                }
                string send_data = Utils.CreateLinkString(map);
                RetString = Utils.PostRequest(postUrl, send_data, "utf-8");
                //================================================
                //这里记录日志
                JobLog JobLog = new JobLog();
                JobLog.PayWay  = JobPayWay.Id;
                JobLog.ReqNo   = orderId;
                JobLog.TNum    = baseUsers.Mobile;
                JobLog.Trade   = "";
                JobLog.Amount  = 0;
                JobLog.Way     = "CardAdd";
                JobLog.AddTime = DateTime.Now;
                JobLog.Data    = RetString;
                JobLog.State   = 1;
                Entity.JobLog.AddObject(JobLog);
                Entity.SaveChanges();
                //================================================
                JObject obj = new JObject();
                try
                {
                    obj = (JObject)JsonConvert.DeserializeObject(RetString);
                }
                catch (Exception)
                {
                    Utils.WriteLog("[CreditCardAdd]:" + RetString, "HLBPayError");
                    DataObj.OutError("1000");
                    return;
                }
                string rt2_retCode = obj["rt2_retCode"].ToString();
                string rt3_retMsg  = obj["rt3_retMsg"].ToString();
                if (rt2_retCode == "0000")
                {
                    string rt7_bindStatus = obj["rt7_bindStatus"].ToString();  //绑卡状态结果  /成功/失败
                    if (rt7_bindStatus == "SUCCESS")
                    {
                        IsSuccess = true;
                        bindId    = obj["rt10_bindId"].ToString();
                    }
                    else
                    {
                        DataObj.Msg = rt3_retMsg;
                        DataObj.OutError("1010");
                        return;
                    }
                }
                else
                {
                    DataObj.Msg = rt3_retMsg;
                    DataObj.OutError("1010");
                    return;
                }
                #endregion
            }
            else if (JobPayWay.DllName == "HFJSPay" && JobPayWayArr.Length == 3)
            {
                #region 结算系统
                string            Code              = JobPayWayArr[0];
                string            CodeKey           = JobPayWayArr[1];
                string            PayWayCode        = JobPayWayArr[2];
                JobUserPay        JobUserPay        = Entity.JobUserPay.FirstOrDefault(n => n.UId == baseUsers.Id && n.PayWay == JobPayWay.Id);
                fastcardauthModel fastcardauthModel = new fastcardauthModel()
                {
                    bankcard   = UserCard.Card,
                    mcode      = UserCard.ValidateCode,
                    merid      = JobUserPay.MerId,
                    paywaycode = PayWayCode
                };
                ErrorCode errorCode = HFJSTools.fastcardauth(fastcardauthModel, JobUserPay.MerKey);
                if (errorCode.respcode == "00")
                {
                    IsSuccess = true;
                }
                else
                {
                    DataObj.Msg = errorCode.respmsg;
                    DataObj.OutError("1010");
                    return;
                }
                #endregion
            }
            #endregion
            if (IsSuccess)
            {
                //系统要限制每条通道每张卡只能存在一个授权,所以这里要处理
                UserCardOpen UserCardOpen = Entity.UserCardOpen.FirstOrDefault(n => n.CardNum == UserCard.Card && n.UId == baseUsers.Id && n.PayWay == JobPayWay.Id);
                if (UserCardOpen == null)
                {
                    UserCardOpen = new UserCardOpen()
                    {
                        UId     = baseUsers.Id,
                        CardNum = UserCard.Card,
                        Mobile  = UserCard.Mobile,
                        PayWay  = JobPayWay.Id,
                        State   = 1,
                        STime   = new DateTime(1990, 1, 1),
                        ETime   = new DateTime(2099, 1, 1),
                        Token   = bindId,
                        RqData  = RetString
                    };
                    Entity.UserCardOpen.AddObject(UserCardOpen);
                }
                else
                {
                    UserCardOpen.Mobile = UserCard.Mobile;
                    UserCardOpen.State  = 1;
                    UserCardOpen.Token  = bindId;
                    UserCardOpen.RqData = RetString;
                }
                UserCard.Pic     = string.Empty;
                UserCard.ScanNo  = string.Empty;
                UserCard.State   = 1;
                UserCard.Deposit = string.Empty;
                Entity.UserCard.AddObject(UserCard);
                Entity.SaveChanges();
            }
            DataObj.OutError("0000");
        }
Exemplo n.º 29
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("[OrderDaiLi_3_0]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            DaiLiOrder DaiLiOrder = new DaiLiOrder();

            DaiLiOrder = JsonToObject.ConvertJsonToModel(DaiLiOrder, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            //设置开通等级
            if (DaiLiOrder.Tier.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            if (DaiLiOrder.X.IsNullOrEmpty() || DaiLiOrder.Y.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }

            //获取用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == DaiLiOrder.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;
            }

            //获取分支机构信息
            //AgentType AgentType = Entity.AgentType.FirstOrNew(n => n.Id == DaiLiOrder.Levels);
            //if (AgentType.Id.IsNullOrEmpty()) {
            //    DataObj.OutError("1000");
            //    return;
            //}
            //if (AgentType.AgentID != baseUsers.Agent) {
            //    //用户代理与开通等级代理不同
            //    DataObj.OutError("1000");
            //    return;
            //}
            SysAgent SysAgent = Entity.SysAgent.FirstOrNew(o => o.LinkMobile == baseUsers.UserName);

            if (!SysAgent.LinkMobile.IsNullOrEmpty())
            {
                if (SysAgent.Tier < 5 || DaiLiOrder.Tier >= SysAgent.Tier)
                {
                    DataObj.OutError("9000");
                    return;
                }
            }

            DaiLiOrder.UId      = baseUsers.Id;
            DaiLiOrder.UserName = baseUsers.UserName;
            DaiLiOrder.TureName = baseUsers.TrueName;

            DaiLiOrder.Agent = baseUsers.Agent;
            DaiLiOrder.AId   = baseUsers.AId;
            // DaiLiOrder.Amoney = AgentType.RegisterFee;

            DaiLiOrder.OrderState = 1;
            DaiLiOrder.PayState   = 0;
            DaiLiOrder.AddTime    = DateTime.Now;
            DaiLiOrder.SameGet    = 0;
            //这里是利润计算==========
            DaiLiOrder.AIdGet     = Convert.ToDouble(DaiLiOrder.Amoney); //总利润
            DaiLiOrder.AgentGet   = 0;                                   //分支机构佣金设置为0,待分润计算后再写入
            DaiLiOrder.AgentState = 0;

            //写入订单总表
            Orders Orders = new Orders();

            Orders.UId      = DaiLiOrder.UId;
            Orders.TName    = "自助开通代理";
            Orders.RUId     = 0;
            Orders.RName    = string.Empty;
            Orders.TType    = 10;
            Orders.TState   = 1;
            Orders.Amoney   = DaiLiOrder.Amoney;
            Orders.Poundage = 0;
            Orders.AddTime  = DateTime.Now;
            Orders.PayState = 0;
            Orders.PayWay   = 15;

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

            string OrderAddress = DaiLiOrder.OrderAddress;

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

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

            DaiLiOrder.OId = Orders.TNum;
            Entity.DaiLiOrder.AddObject(DaiLiOrder);
            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);//发送消息类
            //=======================================
            Orders.Cols = "TNum,PayId,Amoney,PayState";
            string TNum = Orders.TNum;
            string Sign = (TNum + "NewPay").GetMD5().Substring(8, 8);

            // Orders.PayId = PayPath + "/pay/" + TNum + ".html?sign=" + Sign;
            Orders.PayId = PayPath + "/mobile/orders/GoPay.html?sign=" + Sign + "&tnum=" + TNum;
            //=======================================

            //获取最佳支付通道
            #region 结算中心
            //IList<PayConfig> PayConfigList = Entity.PayConfig.Where(n => n.State == 1).OrderBy(n => n.Cost).ToList();
            //IList<SysControl> SysControlList = Entity.SysControl.OrderBy(n => n.Sort).ToList();//SysControl
            //IList<SysControl> SCList = new List<SysControl>();
            //IList<PayConfig> PCList = new List<PayConfig>();
            //foreach (var p in SysControlList)
            //{
            //    SysControl T = p.ChkState();
            //    if (T.State == 1)
            //    {
            //        SCList.Add(p);
            //    }
            //}
            //foreach (var p in PayConfigList)
            //{
            //    SysControl T = SCList.FirstOrDefault(n => n.PayWay == p.Id);
            //    if (T != null)
            //    {
            //        if (Orders.Amoney >= (decimal)T.SNum && Orders.Amoney <= (decimal)T.ENum)
            //        {
            //            PCList.Add(p);
            //        }
            //    }
            //}
            //IList<PayConfig> CashList = PCList.Where(n => n.GroupType == "Cash").OrderBy(n => n.Cost).ToList();
            //IList<PayConfig> BankList = PCList.Where(n => n.GroupType == "Bank").OrderBy(n => n.Cost).ToList();
            //IList<PayConfig> WxList = PCList.Where(n => n.GroupType == "WeiXin").OrderBy(n => n.Cost).ToList();
            //IList<PayConfig> AliList = PCList.Where(n => n.GroupType == "AliPay").OrderBy(n => n.Cost).ToList();

            //IList<PayConfig> List = new List<PayConfig>();
            //if (CashList.Count > 0)
            //{
            //    PayConfig Cash = new PayConfig();
            //    Cash.GroupType = "Cash";
            //    Cash.Name = "余额支付";
            //    Cash.State = 1;
            //    Cash.Cols = "Name,GroupType,State";
            //    List.Add(Cash);
            //}
            //if (BankList.Count > 0)
            //{
            //    PayConfig Bank = new PayConfig();
            //    Bank.GroupType = "Bank";
            //    Bank.Name = "银联支付";
            //    Bank.State = 1;
            //    Bank.Cols = "Name,GroupType,State";
            //    List.Add(Bank);
            //}
            //if (WxList.Count > 0)
            //{
            //    PayConfig Wx = new PayConfig();
            //    Wx.GroupType = "WeiXin";
            //    Wx.Name = "微信支付";
            //    Wx.State = 0;
            //    Wx.Cols = "Name,GroupType,State";
            //    List.Add(Wx);
            //}
            //if (AliList.Count > 0)
            //{
            //    PayConfig Ali = new PayConfig();
            //    Ali.GroupType = "AliPay";
            //    Ali.Name = "支付宝支付";
            //    Ali.State = 1;
            //    Ali.Cols = "Name,GroupType,State";
            //    List.Add(Ali);
            //}
            //string PCString = List.EntityToJson();
            //JArray PCJson = (JArray)JsonConvert.DeserializeObject(PCString);
            //Orders.PayConfig = PCJson;

            //Orders.Cols += ",PayConfig";
            #endregion
            //Orders.paycon
            DataObj.Data = Orders.OutJson();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
Exemplo n.º 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("[AutoCash]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            Users Users = new Users();

            Users = JsonToObject.ConvertJsonToModel(Users, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            if (Users.PassWord.IsNullOrEmpty() || Users.Token.IsNullOrEmpty())//使用PassWord字段
            {
                DataObj.OutError("1000");
                return;
            }
            if (Users.PassWord.Length < 6)//6位及以上
            {
                DataObj.OutError("1000");
                return;
            }
            if (Users.AutoCash != 1 && Users.AutoCash != 0)
            {
                DataObj.OutError("1000");
                return;
            }
            if (Users.X.IsNullOrEmpty() || Users.Y.IsNullOrEmpty())
            {
                //DataObj.OutError("1000");
                //return;
            }
            if (Users.AutoCash == 1)
            {
                if (Users.PassWord.IsNullOrEmpty() || Users.Token.IsNullOrEmpty() || Users.AutoCashMoney.IsNullOrEmpty() || Users.AutoCashBank.IsNullOrEmpty())//使用PassWord字段
                {
                    DataObj.OutError("1000");
                    return;
                }
            }
            #region 校验
            //获取用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Users.Token);
            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.MiBao != 1)//未设置支付密码
            {
                DataObj.OutError("2008");
                return;
            }
            if (baseUsers.AutoBao == 1)
            {
                DataObj.OutError("6072");
                return;
            }
            if (baseUsers.PayLock == 1)//密码错误太多次锁定
            {
                DataObj.OutError("2050");
                return;
            }
            if (baseUsers.StopPayState == 2)//禁止支付
            {
                DataObj.OutError("6060");
                return;
            }

            SysSet SysSet = Entity.SysSet.FirstOrNew();
            if (Users.AutoCash == 1)
            {
                if (Users.AutoCashMoney < SysSet.AutoCashMoney)
                {
                    DataObj.Msg = "自动提现金额不能小于" + SysSet.AutoCashMoney.ToMoney() + "元";
                    DataObj.OutError("6074");
                    return;
                }
            }

            //这里是执行指纹解锁
            bool IfCheckOk = true;
            if (Users.PassWord.Substring(0, 3) == "HF_")
            {
                string PassWord = Users.PassWord;
                PassWord = PassWord.Replace("HF_", "");
                string Token = baseUsers.Token;
                Token = Token + "GoodPay";
                string Md5Token = Token.GetMD5().ToUpper();
                string Pass     = Md5Token.Substring(0, 4) + Md5Token.Substring(Md5Token.Length - 4, 4);
                if (Pass != PassWord)
                {
                    IfCheckOk = false;
                }
            }
            else if (baseUsers.PayPwd != Users.PassWord.GetPayMD5())
            {
                //原支付密码错误
                IfCheckOk = false;
            }
            if (!IfCheckOk)
            {
                //付密码错误
                baseUsers.PayErr++;
                if (baseUsers.PayErr >= SysSet.PayLock)
                {
                    baseUsers.PayLock = 1;
                }
                Entity.SaveChanges();
                Users Out = new Users();
                Out.PayErr   = SysSet.PayLock - baseUsers.PayErr;
                Out.Cols     = "PayErr";
                DataObj.Data = Out.OutJson();
                DataObj.Code = "2010";
                DataObj.OutString();
                return;
            }
            baseUsers.PayErr = 0;
            #endregion
            string optype = "关闭";
            if (Users.AutoCash == 1)
            {
                UserCard UserCard = Entity.UserCard.FirstOrDefault(n => n.Id == Users.AutoCashBank && n.State == 1);
                if (UserCard == null)
                {
                    DataObj.OutError("6075");
                    return;
                }
                if (UserCard.Name.IsNullOrEmpty() || UserCard.Card.IsNullOrEmpty() || UserCard.Bin.IsNullOrEmpty())
                {
                    DataObj.OutError("6076");
                    return;
                }
                optype = "开启";
            }


            //修改用户信息
            baseUsers.AutoCash      = Users.AutoCash;
            baseUsers.AutoCashMoney = Users.AutoCashMoney;
            baseUsers.AutoCashBank  = Users.AutoCashBank;
            Entity.SaveChanges();

            //添加跟踪信息
            //=======================================
            UserTrack.ENo        = DataObj.ENo;
            UserTrack.OPType     = optype + "自动提现";
            UserTrack.GPSAddress = Users.RegAddress;
            UserTrack.GPSX       = Users.X;
            UserTrack.GPSY       = Users.Y;
            baseUsers.SeavGPSLog(UserTrack, Entity);
            //=======================================

            DataObj.Data = "";
            DataObj.Code = "0000";
            DataObj.OutString();
        }