public ActionResult Index(FastUser FastUser, EFPagingInfo <FastUser> p, DateTime?STime, DateTime?ETime, int IsFirst = 0)
        {
            #region 筛选条件
            if (!FastUser.TrueName.IsNullOrEmpty())
            {
                if (!FastUser.UId.IsNullOrEmpty())
                {
                    switch (FastUser.UId)
                    {
                    case 1:
                        p.SqlWhere.Add(f => f.TrueName == FastUser.TrueName);
                        break;

                    case 2:
                        p.SqlWhere.Add(f => f.CardId == FastUser.CardId);
                        break;

                    case 3:
                        p.SqlWhere.Add(f => f.Card == FastUser.Card);
                        break;

                    case 4:
                        p.SqlWhere.Add(f => f.Bin == FastUser.Bin);
                        break;
                    }
                }
            }
            if (!FastUser.Bank.IsNullOrEmpty())
            {
                p.SqlWhere.Add(f => f.Bank == FastUser.Bank);
            }
            if (STime.HasValue)
            {
                p.SqlWhere.Add(f => f.AddTime >= STime);
            }
            if (ETime.HasValue)
            {
                p.SqlWhere.Add(f => f.AddTime <= ETime);
            }
            #endregion
            p.OrderByList.Add("Id", "DESC");
            IPageOfItems <FastUser> FastUserList = null;
            if (IsFirst == 0)
            {
                FastUserList = new PageOfItems <FastUser>(new List <FastUser>(), 0, 10, 0, new Hashtable());
            }
            else
            {
                FastUserList = Entity.Selects <FastUser>(p);
            }
            ViewBag.FastUserList = FastUserList;
            ViewBag.FastUser     = FastUser;
            ViewBag.STime        = STime;
            ViewBag.ETime        = ETime;

            return(View());
        }
예제 #2
0
 public static FastUserPay AddCard(FastUser FastUser, FastUserPay FastUserPay, FastPayWay FastPayWay, LokFuEntity Entity)
 {
     //添加/修改结算卡------不需要修改的需到上一步添加
     if (FastUserPay.CardState == 2)
     {
         string[] PayConfigArr = FastPayWay.QueryArray.Split(',');
         if (FastPayWay.DllName == "HFJSPay")
         {
             #region 结算中心
             if (PayConfigArr.Length == 3)
             {
                 UserCard UserCard = Entity.UserCard.FirstOrNew(n => n.Card == FastUserPay.Card && n.UId == FastUser.UId);
                 string   Mobile   = UserCard.Mobile;
                 Users    Users    = Entity.Users.FirstOrNew(n => n.Id == FastUser.UId);
                 if (Mobile.IsNullOrEmpty())
                 {
                     Mobile = Users.UserName;
                 }
                 string           Code       = PayConfigArr[0];
                 string           CodeKey    = PayConfigArr[1];
                 string           PayWayCode = PayConfigArr[2];
                 fastuseraddModel model      = new fastuseraddModel()
                 {
                     code          = Code,
                     merid         = FastUserPay.MerId,
                     cardno        = Users.CardId,
                     accountcard   = UserCard.Card,
                     accountbin    = UserCard.Bin,
                     accountmobile = UserCard.Mobile
                 };
                 fastuserResult fastuserResult = HFJSTools.fastuseredit(model, CodeKey);
                 if (fastuserResult.respcode == "00")
                 {
                     FastUserPay.CardState = 1;
                     Entity.SaveChanges();
                 }
                 else
                 {
                     FastUserPay.CardMsg   = fastuserResult.respcode + "[" + fastuserResult.respmsg + "]";
                     FastUserPay.CardState = 4;
                     Entity.SaveChanges();
                 }
             }
             #endregion
         }
     }
     return(FastUserPay);
 }
예제 #3
0
        public static FastUser AddMer(FastUser FastUser, FastConfig FastConfig, LokFuEntity Entity)
        {
            if (FastUser.Card.IsNullOrEmpty())
            {
                //未绑定银行卡
                return(FastUser);
            }
            //批量处理所有接口
            IList <FastPayWay> FastPayWayList = Entity.FastPayWay.Where(n => n.State == 1).OrderBy(n => n.Sort).ToList();

            foreach (var p in FastPayWayList)
            {
                try
                {
                    AddMer(FastUser, p, FastConfig, Entity);
                }
                catch (Exception e)
                {
                    Utils.WriteLog("/FastPay/AddMer" + e.Message + e.StackTrace, "bug", "API");
                }
            }
            return(FastUser);
        }
예제 #4
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (!Data.IsNullOrEmpty())
            {
                JObject json = new JObject();
                try
                {
                    json = (JObject)JsonConvert.DeserializeObject(Data);
                }
                catch (Exception Ex)
                {
                    Log.Write("[Receipt]:", "【Data】" + Data, Ex);
                }
                if (json == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                var Users = new Users();
                Users = JsonToObject.ConvertJsonToModel(Users, json);
                Users BaseUsers = Entity.Users.FirstOrDefault(o => o.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;
                //}

                //获取直通车配置及用户直通车配置
                bool     IsBindingFast = true;
                FastUser FastUser      = Entity.FastUser.FirstOrDefault(n => n.UId == BaseUsers.Id);
                if (FastUser == null)
                {
                    //开通帐户
                    FastUser          = new FastUser();
                    FastUser.UId      = BaseUsers.Id;
                    FastUser.TrueName = BaseUsers.TrueName;
                    FastUser.CardId   = BaseUsers.CardId;
                    FastUser.AddTime  = DateTime.Now;
                    Entity.FastUser.AddObject(FastUser);
                    Entity.SaveChanges();
                }

                if (FastUser.Card.IsNullOrEmpty())
                {
                    IsBindingFast = false;
                }
                else
                {
                    FastConfig FastConfig = Entity.FastConfig.FirstOrNew();
                    //===========================================================
                    //这里要处理商户入驻
                    BusFastPay.AddMer(FastUser, FastConfig, this.Entity);
                    //===========================================================
                }

                var result = new Receipt2Model();

                result.FastUser = new FastUserModel()
                {
                    card = FastUser.Card,
                    bank = FastUser.Bank,
                    bin  = FastUser.Bin,
                };
                List <PayWayModel> PayWayModelList = new List <PayWayModel>();
                SysSet             SysSet          = Entity.SysSet.FirstOrDefault();

                #region 整合数据
                DateTime now = new DateTime(1990, 01, 01, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);

                #region 交易通道
                var SCquery = Entity.SysControl.Where(o => AllowTag.Contains(o.Tag) && (o.State == 1 || o.State == 2) && ((((now >= o.STime && now <= o.ETime && o.STime < o.ETime) || ((now >= o.STime || now <= o.ETime) && o.STime > o.ETime)) && o.TimeType == 1) || o.TimeType == 0));
                if (SysSet.LagEntry == 0)
                {
                    SCquery = SCquery.Where(o => o.LagEntryNum == 0);
                }
                List <SysControl> SysControlList  = SCquery.OrderBy(o => o.Sort).ToList();
                string            UserPayCashName = "UserPay_" + BaseUsers.Id.ToString() + "_" + Equipment.RqType;
                List <UserPay>    UserPayList     = null;

                if (HasCache)
                {
                    UserPayList = CacheBuilder.EntityCache.Get(UserPayCashName, null) as List <UserPay>;
                    if (UserPayList == null)
                    {
                        UserPayList = Entity.UserPay.Where(n => n.UId == BaseUsers.Id).ToList();
                        CacheBuilder.EntityCache.Remove(UserPayCashName, null);
                        CacheBuilder.EntityCache.Add(UserPayCashName, UserPayList, DateTime.Now.AddHours(1), null);
                    }
                }
                else
                {
                    UserPayList = Entity.UserPay.Where(n => n.UId == BaseUsers.Id).ToList();
                }

                SysControlList.ForEach(o =>
                {
                    var PayWayModel = new PayWayModel()
                    {
                        id          = o.Id,
                        name        = o.CName,
                        cost        = o.LagEntryDay > 0 ? 0m : (decimal)UserPayList.Where(x => x.PId == o.PayWay).Select(x => x.Cost).FirstOrNew(),
                        s_num       = o.SNum,
                        e_num       = o.ENum,
                        state       = o.State,
                        sort        = o.Sort,
                        tag         = o.Tag,
                        lagentryday = o.LagEntryDay,
                        paywaytype  = 1,
                        cash        = 0,
                        payway      = o.PayWay,
                    };
                    PayWayModelList.Add(PayWayModel);
                });
                #endregion

                #region 直通车通道
                if (IsBindingFast)
                {
                    List <FastPayWay>  FastPayWayList      = Entity.FastPayWay.Where(o => o.State == 1 && o.ManE == 0 && ((now >= o.STime && now <= o.ETime && o.TimeType == 1) || o.TimeType == 0)).OrderBy(o => o.Sort).ToList();
                    string             FastUserPayCashName = "FastUserPay_" + BaseUsers.Id.ToString() + "_" + Equipment.RqType;
                    List <FastUserPay> FastUserPayList     = null;
                    if (HasCache)
                    {
                        FastUserPayList = CacheBuilder.EntityCache.Get(FastUserPayCashName, null) as List <FastUserPay>;
                        if (FastUserPayList == null)
                        {
                            FastUserPayList = Entity.FastUserPay.Where(n => n.UId == BaseUsers.Id).ToList();
                            CacheBuilder.EntityCache.Remove(FastUserPayCashName, null);
                            CacheBuilder.EntityCache.Add(FastUserPayCashName, FastUserPayList, DateTime.Now.AddHours(1), null);
                        }
                    }
                    else
                    {
                        FastUserPayList = Entity.FastUserPay.Where(n => n.UId == BaseUsers.Id).ToList();
                    }

                    FastPayWayList.ForEach(o =>
                    {
                        var tempList = new List <PayWayModel>();
                        if (o.HasAliPay == 1)
                        {
                            tempList.Add(new PayWayModel()
                            {
                                tag = "Alipay", name = "支付宝" + o.ShowName, s_num = o.SNum2, e_num = o.ENum2, payway = 1
                            });
                        }
                        if (o.HasWeiXin == 1)
                        {
                            tempList.Add(new PayWayModel()
                            {
                                tag = "WeiXin", name = "微信" + o.ShowName, s_num = o.SNum, e_num = o.ENum, payway = 2
                            });
                        }
                        if (o.HasBank == 1)
                        {
                            tempList.Add(new PayWayModel()
                            {
                                tag = "RecMoneyLocal", name = "银联" + o.ShowName, s_num = o.BankSNum, e_num = o.BankENum, payway = 3
                            });
                        }
                        foreach (var item in tempList)
                        {
                            FastUserPay FastUserPay = FastUserPayList.FirstOrNew(x => x.PayWay == o.Id);
                            item.id = o.Id;
                            //2017-11-12 通道支持微信/支付宝/银联不同费率
                            if (item.payway == 1)
                            {
                                item.cost = FastUserPay.UserCost2;
                            }
                            if (item.payway == 2)
                            {
                                item.cost = FastUserPay.UserCost;
                            }
                            if (item.payway == 3)
                            {
                                item.cost = FastUserPay.UserCost3;
                            }
                            item.cash = FastUserPay.UserCash;

                            item.state      = o.State;
                            item.sort       = o.Sort;
                            item.paywaytype = 2;

                            if (o.GroupType == "D0")
                            {
                                item.lagentryday = 0;
                            }
                            else if (o.GroupType == "T1")
                            {
                                item.lagentryday = 1;
                            }
                        }
                        ;
                        PayWayModelList.AddRange(tempList);
                    });
                }
                #endregion

                PayWayModelList = PayWayModelList.OrderBy(n => n.sort).ToList();//排序
                //一条通道都没有的情况处理
                //if (PayWayModelList.Count == 0)
                //{
                //    var none = new PayWayModel()
                //    {
                //        cash = 2,
                //        cost = 0.006m,
                //        s_num = 1000,
                //        e_num = 20000,
                //        id = 99999,
                //        lagentryday = 0,
                //        payway = 0,
                //        paywaytype = 2,
                //        sort = 0,
                //        tag = "RecMoneyLocal",
                //        state = 0,
                //        name = "银联",

                //    };
                //    PayWayModelList.Add(none);
                //}

                result.UserPay = PayWayModelList;
                #endregion

                DataObj.Data = JsonConvert.SerializeObject(result);
                DataObj.Code = "0000";
                DataObj.OutString();
            }
        }
예제 #5
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();
        }
예제 #6
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();
        }
예제 #7
0
        public static FastUser AddMer(FastUser FastUser, FastPayWay FastPayWay, FastConfig FastConfig, LokFuEntity Entity)
        {
            if (FastUser.Card.IsNullOrEmpty())
            {
                //未绑定银行卡
                return(FastUser);
            }
            FastUserPay FastUserPay = Entity.FastUserPay.FirstOrDefault(n => n.UId == FastUser.UId && n.PayWay == FastPayWay.Id);

            if (FastUserPay == null)
            {
                FastUserPay        = new FastUserPay();
                FastUserPay.UId    = FastUser.UId;
                FastUserPay.PayWay = FastPayWay.Id;
                if (FastPayWay.DllName == "HFPay")
                {
                    //不需要一户一码直接开通商户
                    FastUserPay.MerId     = "HFPay" + FastUserPay.UId.ToString();
                    FastUserPay.MerState  = 1;
                    FastUserPay.CardState = 1;
                    FastUserPay.BusiState = 1;
                }
                else
                {
                    FastUserPay.MerId     = "";
                    FastUserPay.MerState  = 2; //状态 0锁定 1正常 2待提交 3审核中 4审核失败
                    FastUserPay.CardState = 2; //状态 0锁定 1正常 2待提交 3审核中 4审核失败
                    FastUserPay.BusiState = 2; //状态 1正常 2待提交 3审核中 4审核失败
                }
                FastUserPay.CardName = FastUser.TrueName;
                FastUserPay.Bank     = FastUser.Bank;
                FastUserPay.Card     = FastUser.Card;
                FastUserPay.Bin      = FastUser.Bin;
                //2017-11-22 修改成取通道配置,且分别计算微信/支付宝/银联
                //FastUserPay.UserCost = FastConfig.UserCost;
                FastUserPay.UserCost  = FastPayWay.InCost;
                FastUserPay.UserCost2 = FastPayWay.InCost2;
                FastUserPay.UserCost3 = FastPayWay.InCost3;


                if (FastPayWay.GroupType == "T1")
                {
                    FastUserPay.UserCash = 0;
                }
                else
                {
                    FastUserPay.UserCash = FastConfig.UserCash;
                }
                FastUserPay.AddTime = DateTime.Now;
                Entity.FastUserPay.AddObject(FastUserPay);
                Entity.SaveChanges();
            }
            else
            {
                bool Save = false;
                if (FastUserPay.CardName != FastUser.TrueName)
                {
                    FastUserPay.CardName = FastUser.TrueName;
                    Save = true;
                }
                if (FastUserPay.Bank != FastUser.Bank)
                {
                    FastUserPay.Bank = FastUser.Bank;
                    Save             = true;
                }
                if (FastUserPay.Card != FastUser.Card)
                {
                    FastUserPay.Card = FastUser.Card;
                    Save             = true;
                }
                if (FastUserPay.Bin != FastUser.Bin)
                {
                    FastUserPay.Bin = FastUser.Bin;
                    Save            = true;
                }
                if (Save)
                {
                    Entity.SaveChanges();
                }
            }
            string[] PayConfigArr = FastPayWay.QueryArray.Split(',');
            if (FastPayWay.DllName == "HFJSPay")
            {
                #region 结算系统
                if (PayConfigArr.Length == 3)
                {
                    string Code       = PayConfigArr[0];
                    string CodeKey    = PayConfigArr[1];
                    string PayWayCode = PayConfigArr[2];
                    #region 进件
                    if (FastUserPay.MerState == 2 || FastUserPay.MerState == 4)
                    {
                        UserCard UserCard = Entity.UserCard.FirstOrNew(n => n.Card == FastUserPay.Card && n.UId == FastUser.UId);
                        string   Mobile   = UserCard.Mobile;
                        Users    Users    = Entity.Users.FirstOrNew(n => n.Id == FastUser.UId);
                        if (Mobile.IsNullOrEmpty())
                        {
                            Mobile = Users.UserName;
                        }
                        fastuseraddModel model = new fastuseraddModel()
                        {
                            code          = Code,
                            mchid         = "HF" + Users.Id.ToString(),
                            mchname       = Users.NeekName,
                            truename      = Users.TrueName,
                            cardno        = Users.CardId,
                            accountcard   = UserCard.Card,
                            accountbin    = UserCard.Bin,
                            accountmobile = UserCard.Mobile
                        };
                        fastuserResult fastuserResult = HFJSTools.fastuseradd(model, CodeKey);
                        if (fastuserResult.respcode == "00")
                        {
                            bool   RunTrue = true;
                            string Msg     = "";
                            if (fastuserResult.respmsg == "存在相同外部商户号")
                            {
                                //这里面要修改一下结算卡
                                fastuseraddModel modelEdit = new fastuseraddModel()
                                {
                                    code          = Code,
                                    merid         = fastuserResult.merid,
                                    cardno        = Users.CardId,
                                    accountcard   = UserCard.Card,
                                    accountbin    = UserCard.Bin,
                                    accountmobile = UserCard.Mobile
                                };
                                fastuserResult fastuserresult = HFJSTools.fastuseredit(modelEdit, CodeKey);
                                if (fastuserresult.respcode != "00")
                                {
                                    Msg     = fastuserresult.respmsg;
                                    RunTrue = false;
                                }
                            }
                            if (RunTrue)
                            {
                                if (fastuserResult.state == 1)
                                {
                                    FastUserPay.MerState  = 1;
                                    FastUserPay.CardState = 1;//这里已绑定结算卡
                                    FastUserPay.MerId     = fastuserResult.merid;
                                    FastUserPay.MerKey    = fastuserResult.merkey;
                                }
                                else if (fastuserResult.state == 2)
                                {
                                    FastUserPay.MerId    = fastuserResult.merid;
                                    FastUserPay.MerKey   = fastuserResult.merkey;
                                    FastUserPay.MerState = 3;
                                }
                                else
                                {
                                    FastUserPay.MerState = 4;
                                    FastUserPay.MerMsg   = fastuserResult.respcode + "[" + fastuserResult.respmsg + "]";
                                }
                            }
                            else
                            {
                                FastUserPay.MerState = 4;
                                FastUserPay.MerMsg   = Msg;
                            }
                        }
                        else
                        {
                            FastUserPay.MerState = 4;
                            FastUserPay.MerMsg   = fastuserResult.respcode + "[" + fastuserResult.respmsg + "]";
                        }
                        Entity.SaveChanges();
                    }
                    #endregion
                    #region 开通道
                    if (FastUserPay.MerState == 1 && (FastUserPay.BusiState == 2 || FastUserPay.BusiState == 4))
                    {
                        decimal Cost  = FastPayWay.InCost3;//刷卡手续费
                        Users   Users = Entity.Users.FirstOrNew(n => n.Id == FastUser.UId);
                        if (Users.IsVip == 1)
                        {
                            Cost = 0.005M;
                            FastUserPay.UserCost3 = 0.005M;
                        }
                        decimal            Cash = FastConfig.UserCash;//还款手续费
                        userspayopenbModel userspayopenbModel = new userspayopenbModel()
                        {
                            merid      = FastUserPay.MerId,
                            paywaycode = PayWayCode,
                            code       = Code,
                            bankcost   = Cost,
                            //surcharge = 0,
                            cash        = Cash,
                            bankcostmin = 0,
                            bankcostmax = 9999999
                        };
                        fastuserResult fastuserResult = HFJSTools.userspayopen(userspayopenbModel, CodeKey);
                        if (fastuserResult.respcode == "00")
                        {
                            if (fastuserResult.state == 1)
                            {
                                FastUserPay.BusiState = 1;
                            }
                            else
                            {
                                FastUserPay.BusiState = 4;
                                FastUserPay.BusiMsg   = fastuserResult.respcode + "[" + fastuserResult.respmsg + "]";
                            }
                        }
                        else
                        {
                            FastUserPay.BusiState = 4;
                            FastUserPay.BusiMsg   = fastuserResult.respcode + "[" + fastuserResult.respmsg + "]";
                        }
                        Entity.SaveChanges();
                    }

                    #endregion
                }
                #endregion
            }
            return(FastUser);
        }
        public ActionResult Index(string etnum)
        {
            if (etnum.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "Some Error[00]";
                return(View("Error"));
            }
            string    tnum      = LokFuEncode.LokFuAPIDecode(etnum, DllName);
            FastOrder FastOrder = Entity.FastOrder.FirstOrDefault(n => n.TNum == tnum);

            if (FastOrder == null)
            {
                ViewBag.ErrorMsg = "Some Error[02]";
                return(View("Error"));
            }
            FastPayWay FastPayWay = Entity.FastPayWay.FirstOrDefault(n => n.Id == FastOrder.PayWay);

            if (FastPayWay == null)
            {
                ViewBag.ErrorMsg = "Some Error[03]";
                return(View("Error"));
            }
            if (FastPayWay.DllName != DllName)
            {
                ViewBag.ErrorMsg = "Some Error[04]";
                return(View("Error"));
            }
            string[] PayConfigArr = FastPayWay.QueryArray.Split(',');
            if (PayConfigArr.Length != 3)
            {
                ViewBag.ErrorMsg = "Some Error[05]";
                return(View("Error"));
            }
            FastUser FastUser = Entity.FastUser.FirstOrNew(n => n.UId == FastOrder.UId);

            string merId  = PayConfigArr[0];                             //商户号
            string merKey = PayConfigArr[1];                             //商户密钥
            string PayWay = PayConfigArr[2];                             //绑定通道

            string orderId    = FastOrder.TNum;                          //商户流水号
            string OrderMoney = (FastOrder.Amoney * 100).ToString("F0"); //金额,以分为单

            string TrueName = FastUser.TrueName;
            string CardId   = FastUser.CardId;

            //填写参数
            string ReturnUrl = PayPath + "/PayCenter/HFPay/FastResult.html";    //支付成功跳转页
            string BackUrl   = NoticePath + "/PayCenter/HFPay/FastNotice.html"; //后台通过地址


            if (TrueName.IsNullOrEmpty() || CardId.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "TrueName IsNull";
                return(View("Error"));
            }
            if (FastPayWay.Id == 8)
            {
                PayWay = "3855";
            }
            //if (FastPayWay.Id == 13)
            //{
            //    PayWay = "3852";
            //}

            string Data = "{\"action\":\"goAndPay\",\"txnamt\":\"" + OrderMoney + "\",\"merid\":\"" + merId + "\",\"payway\":\"" + PayWay + "\",\"orderid\":\"" + orderId + "\",\"backurl\":\"" + BackUrl + "\",\"fronturl\":\"" + ReturnUrl + "\",\"accname\":\"" + TrueName + "\",\"accno\":\"" + CardId + "\"}";

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

            string GoUrl = "https://api.zhifujiekou.com/apis/gateway?";

            GoUrl += "req=" + HttpUtility.UrlEncode(DataBase64);
            GoUrl += "&sign=" + Sign;

            Response.Redirect(GoUrl);

            return(View("Null"));
        }
        public ActionResult MyQrCode(string act = "")
        {
            if (!IsLokFu)
            {
                ViewBag.ErrorMsg = "请在钱包中打开链接!";
                return(View("Error"));
            }
            if (BasicUsers == null)
            {
                ViewBag.ErrorMsg = "用户未登录或登录异常!";
                return(View("Error"));
            }
            if (BasicUsers.Id.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "用户未登录或登录异常!";
                return(View("Error"));
            }
            if (BasicUsers.State != 1)//用户被锁定
            {
                ViewBag.ErrorMsg = "您的帐户被锁定!";
                return(View("Error"));
            }
            if (BasicUsers.CardStae != 2)//未实名认证
            {
                ViewBag.ErrorMsg = "您未实名认证!";
                return(View("Error"));
            }
            //if (baseUsers.MiBao != 1)//未设置支付密码
            //{}
            //==========================================================================================
            //获取直通车配置及用户直通车配置
            FastUser FastUser = Entity.FastUser.FirstOrDefault(n => n.UId == BasicUsers.Id);

            if (FastUser == null)
            {
                //开通帐户
                FastUser          = new FastUser();
                FastUser.UId      = BasicUsers.Id;
                FastUser.TrueName = BasicUsers.TrueName;
                FastUser.CardId   = BasicUsers.CardId;
                FastUser.AddTime  = DateTime.Now;
                Entity.FastUser.AddObject(FastUser);
                Entity.SaveChanges();
            }
            ViewBag.FastUser = FastUser;
            if (FastUser.Card.IsNullOrEmpty() || act == "setbank")
            {
                //未绑卡
                IList <UserCard> UserCardList = Entity.UserCard.Where(n => n.UId == BasicUsers.Id && n.Type == 1).ToList();
                if (UserCardList.Count < 1)
                {
                    return(View("MyBankNull"));
                }
                ViewBag.UserCardList = UserCardList;
                ViewBag.Act          = act;
                return(View("MyBank"));
            }
            ViewBag.FastConfig = Entity.FastConfig.FirstOrNew();

            ViewBag.Code = BasicUsers.FastCode();

            FastConfig FastConfig = Entity.FastConfig.FirstOrNew();

            //===========================================================
            //这里要处理商户入驻
            BusFastPay.AddMer(FastUser, FastConfig, this.Entity);
            //===========================================================
            return(View());
        }
        public string SetBank(int bankid)
        {
            if (!IsLokFu)
            {
                return("请在钱包中打开链接!");
            }
            if (BasicUsers == null)//用户令牌不存在
            {
                return("您未登录或已在其它手机登录!");
            }
            if (BasicUsers.Id.IsNullOrEmpty())//用户令牌不存在
            {
                return("您未登录或已在其它手机登录!");
            }
            if (BasicUsers.State != 1)//用户被锁定
            {
                return("您的帐户被锁定!");
            }
            if (BasicUsers.CardStae != 2)//未实名认证
            {
                return("您未实名认证!");
            }
            FastUser FastUser = Entity.FastUser.FirstOrDefault(n => n.UId == BasicUsers.Id);

            if (FastUser == null)
            {
                return("用户信息有误!");
            }
            UserCard UserCard = Entity.UserCard.FirstOrDefault(n => n.UId == BasicUsers.Id && n.Type == 1 && n.Id == bankid && n.State == 1);

            if (UserCard == null)
            {
                return("银行卡信息有误!");
            }
            if (FastUser.Card == UserCard.Card)
            {
                return("没有变更!");
            }
            FastUser.Card = UserCard.Card;
            FastUser.Bank = UserCard.Bank;
            FastUser.Bin  = UserCard.Bin;
            Entity.SaveChanges();
            //这里要增加所有通道的商户注册及绑卡操作
            //=============================================================
            IList <FastPayWay>  FastPayWayList  = Entity.FastPayWay.OrderBy(n => n.Sort).ToList();
            IList <FastUserPay> FastUserPayList = Entity.FastUserPay.Where(n => n.UId == FastUser.UId).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 == "HFPay")
                    {
                        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();
            //=============================================================
            return("ok");
        }
        public ActionResult Index(Users Users, string SetCashType = "D0")
        {
            if (!Users.Id.IsNullOrEmpty())
            {
                Users = Entity.Users.FirstOrNew(n => n.Id == Users.Id);
            }
            //if (!IsLokFu && !IsAlipayBrowser && !IsWeiXinBrowser)
            //{
            //    ViewBag.ErrorMsg = "请使用微信或支付宝扫码!";
            //    return View("Error");
            //}
            if (Users == null)
            {
                ViewBag.ErrorMsg = "商户信息异常!";
                return(View("Error"));
            }
            if (Users.Id.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "商户信息异常!";
                return(View("Error"));
            }
            if (Users.State != 1)//用户被锁定
            {
                ViewBag.ErrorMsg = "商户状态异常!";
                return(View("Error"));
            }
            if (Users.CardStae != 2)//未实名认证
            {
                ViewBag.ErrorMsg = "商户未认证,不能收款!";
                return(View("Error"));
            }
            ViewBag.Users = Users;
            FastUser FastUser = Entity.FastUser.FirstOrDefault(n => n.UId == Users.Id);

            if (FastUser == null)
            {
                ViewBag.ErrorMsg = "商户未开通!";
                return(View("Error"));
            }
            ViewBag.FastUser = FastUser;
            FastConfig FastConfig = Entity.FastConfig.FirstOrNew();

            //===========================================================
            //处理有哪些通道
            IList <FastPayWay> FastPayWayList = Entity.FastPayWay.Where(n => n.State == 1 && n.ManE == 0).OrderBy(n => n.Sort).ToList();

            if (!SetCashType.IsNullOrEmpty())
            {
                FastPayWayList = FastPayWayList.Where(n => n.GroupType == SetCashType).ToList();
            }
            if (FastPayWayList == null)
            {
                ViewBag.ErrorMsg = "暂无可用通道!";
                return(View("Error"));
            }
            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)
            {
                ViewBag.ErrorMsg = "暂无可用通道!";
                return(View("Error"));
            }
            IList <FastPayWay> WxList   = PayWayList.Where(n => n.HasWeiXin == 1).ToList();
            IList <FastPayWay> AliList  = PayWayList.Where(n => n.HasAliPay == 1).ToList();
            IList <FastPayWay> BankList = PayWayList.Where(n => n.HasBank == 1).ToList();
            IList <FastPayWay> List     = new List <FastPayWay>();

            if (WxList.Count > 0)
            {
                FastPayWay Wx = new FastPayWay();
                Wx.Id        = 2;
                Wx.GroupType = "weixin";
                Wx.DllName   = "微信支付";
                Wx.SNum      = WxList.OrderBy(n => n.SNum).FirstOrDefault().SNum;
                Wx.ENum      = WxList.OrderByDescending(n => n.ENum).FirstOrDefault().ENum;
                List.Add(Wx);
            }
            if (AliList.Count > 0)
            {
                FastPayWay Ali = new FastPayWay();
                Ali.Id        = 1;
                Ali.GroupType = "alipay";
                Ali.DllName   = "支付宝支付";
                Ali.SNum      = AliList.OrderBy(n => n.SNum2).FirstOrDefault().SNum2;
                Ali.ENum      = AliList.OrderByDescending(n => n.ENum2).FirstOrDefault().ENum2;
                List.Add(Ali);
            }
            if (BankList.Count > 0)
            {
                //收银台暂不开放银联
                //FastPayWay Bank = new FastPayWay();
                //Bank.Id = 3;
                //Bank.GroupType = "bank";
                //Bank.DllName = "银行卡支付";
                //Bank.SNum = BankList.OrderBy(n => n.BankSNum).FirstOrDefault().BankSNum;
                //Bank.ENum = BankList.OrderByDescending(n => n.BankENum).FirstOrDefault().BankENum;
                //List.Add(Bank);
            }
            ViewBag.FastPayWayList = List;
            //===========================================================
            //这里要处理商户入驻
            BusFastPay.AddMer(FastUser, FastConfig, this.Entity);
            //===========================================================
            //处理自选商户
            //Users.SetPayName = Users.NeekName;
            //Users.CanOpenMer = 0;
            return(View());
        }
        /// <summary>
        /// 同步重新出款用户结算状态
        /// </summary>
        public ActionResult ResubmitSyncUserState(string STNum)
        {
            var FastOrderChange = Entity.FastOrderChange.FirstOrDefault(o => o.STNum == STNum);

            if (FastOrderChange == null)
            {
                ViewBag.ErrorMsg = "重新出款单不存在";
                return(View("Error"));
            }
            if (FastOrderChange.State != 2)
            {
                ViewBag.ErrorMsg = "只有用户结算失败才能使用该功能";
                return(View("Error"));
            }
            FastOrder FastOrder = Entity.FastOrder.FirstOrDefault(o => o.TNum == FastOrderChange.TNum);

            if (FastOrder == null)
            {
                ViewBag.ErrorMsg = "订单不存在";
                return(View("Error"));
            }
            string OldUserState = FastOrder.GetUserClearingState();

            FastPayWay  FastPayWay  = Entity.FastPayWay.FirstOrDefault(n => n.Id == FastOrder.PayWay);
            FastUserPay FastUserPay = Entity.FastUserPay.FirstOrDefault(n => n.PayWay == FastOrder.PayWay && n.UId == FastOrder.UId && n.CardState == 1);

            if (FastPayWay != null)
            {
                string[] PayConfigArr = FastPayWay.QueryArray.Split(',');
                if (FastPayWay.DllName == "HFPay")
                {
                    string TNum = FastOrderChange.STNum;
                    #region
                    string HFCash_Url = "https://api.zhifujiekou.com/api/qcashgateway";

                    //不需要
                    string PayPath   = ConfigurationManager.AppSettings["PayPath"].ToString();
                    string NoticeUrl = PayPath + "/PayCenter/HFCash/FastNotice.html";

                    //提交结算中心
                    string merId  = PayConfigArr[0];                               //商户号
                    string merKey = PayConfigArr[1];                               //商户密钥

                    string orderId = TNum;                                         //商户流水号

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

                    FastUser FastUser   = Entity.FastUser.FirstOrNew(n => n.UId == FastOrder.UId);
                    string   UserCardId = FastUser.CardId;
                    string   PostJson   = "{\"action\":\"QCash\",\"txnamt\":\"" + OrderMoney + "\",\"merid\":\"" + merId + "\",\"orderid\":\"" + orderId + "\",\"backurl\":\"" + NoticeUrl + "\",\"bin\":\"" + FastOrder.Bin + "\",\"accno\":\"" + FastOrder.Card + "\",\"accname\":\"" + FastOrder.CardName + "\",\"cardno\":\"" + UserCardId + "\"}";

                    //传送数据Base64
                    string DataBase64 = LokFuEncode.Base64Encode(PostJson, "utf-8");
                    //获得签名
                    string Sign = (DataBase64 + merKey).GetMD5();
                    //传送数据UrlEnCode
                    DataBase64 = HttpUtility.UrlEncode(DataBase64);
                    //组装Post数据
                    string PostData = string.Format("req={0}&sign={1}", DataBase64, Sign);
                    //Post数据,获得结果
                    string Ret = Utils.PostRequest(HFCash_Url, PostData, "utf-8");

                    JObject JS = new JObject();
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(Ret);
                    }
                    catch (Exception)
                    {
                        Utils.WriteLog("处理代付[" + FastOrder.TNum + "]!" + Ret, "CashPay");
                        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.UserState = 0;//提交的时候报错,可重新提交
                            JS = null;
                            Utils.WriteLog("[CashPay]:JSON[" + Ret + "]" + Ex.ToString(), "FastOrder");
                            ViewBag.ErrorMsg = "返回数据错误";
                            return(View("Error"));
                        }
                        if (JS != null)
                        {
                            string respcode = JS["respcode"].ToString();
                            if (respcode == "00")
                            {
                                string resultcode = JS["resultcode"].ToString();
                                if (resultcode == "0000")
                                {
                                    FastOrder.UserState   = 1;
                                    FastOrderChange.State = 1;
                                }
                                else if (resultcode == "2002" || resultcode == "2003")
                                {
                                    FastOrder.UserState   = 2;
                                    FastOrderChange.State = 2;
                                }
                                else
                                {
                                    FastOrder.UserState   = 3;
                                    FastOrderChange.State = 3;
                                }
                                //======================================
                                PayLog PayLog = new PayLog();
                                PayLog.PId     = FastPayWay.Id;
                                PayLog.OId     = TNum;
                                PayLog.TId     = "";
                                PayLog.Amount  = 0;
                                PayLog.Way     = "FASTDF";
                                PayLog.AddTime = DateTime.Now;
                                PayLog.Data    = Ret;
                                PayLog.State   = 1;
                                Entity.PayLog.AddObject(PayLog);
                                //======================================
                                FastOrderChange.Data = Ret;
                                Entity.FastOrderChange.AddObject(FastOrderChange);
                                Entity.SaveChanges();
                            }
                        }
                    }
                    #endregion
                }
            }
            if (FastOrder.UserState == 1)
            {
                ViewBag.Msg = "订单已成功重新出款";
                return(View("Succeed"));
            }
            else
            {
                string NewUserState = FastOrder.GetUserClearingState();
                ViewBag.ErrorMsg = "用户结算状态从" + OldUserState + "->" + NewUserState;
                return(View("Error"));
            }
        }
        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("[UserCardDelete]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            UserCard UserCard = new UserCard();

            UserCard = JsonToObject.ConvertJsonToModel(UserCard, json);
            //获取用户信息
            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;
            }
            if (baseUsers.MiBao != 1)//未设置支付密码
            {
                DataObj.OutError("2008");
                return;
            }

            UserCard = Entity.UserCard.FirstOrDefault(n => n.Id == UserCard.Id && n.UId == baseUsers.Id && n.State == 1);
            if (UserCard == null)//不存在
            {
                DataObj.OutError("1001");
                return;
            }
            if (UserCard.Type == 1)
            {
                //借记卡需要判断是否用于一户一码
                FastUser FastUser = Entity.FastUser.FirstOrDefault(o => o.UId == baseUsers.Id);
                if (FastUser != null)
                {
                    if (!FastUser.Card.IsNullOrEmpty())
                    {
                        if (FastUser.Card == UserCard.Card)
                        {
                            DataObj.OutError("1105");
                            return;
                        }
                    }
                }
            }
            if (UserCard.Type == 2)
            {
                //借记卡需要判断是否用还款任务
                //任务正在使用的银行卡不能删除
                JobOrders JobOrders = Entity.JobOrders.Where(o => o.UId == baseUsers.Id && (o.State == 2 || o.State == 3) && o.UserCardId == UserCard.Id).FirstOrDefault();
                if (JobOrders != null)
                {
                    DataObj.Msg = "您的还款任务正在使用本银行卡,暂不能删除";
                    DataObj.OutError("7004");
                    return;
                }
                //24小时内有还款失败
                DateTime T24     = DateTime.Now.AddHours(-24);
                JobItem  JobItem = Entity.JobItem.Where(o => o.UId == baseUsers.Id && o.State == 4 && o.UserCardId == UserCard.Id && o.RunTime > T24).FirstOrDefault();
                if (JobItem != null)
                {
                    DataObj.Msg = "最近1天您本银行卡有执行失败的还款任务,请隔1天再解除绑卡。";
                    DataObj.OutError("7004");
                    return;
                }
                //这里需要增加处理,是否开通授权,是的话需要把授权设置为0
                //这里无法取得是哪个通道,系统每张卡只能绑定一个通道,所以只要把正常的关掉就可以了-Lin
                Entity.ExecuteStoreCommand("Update UserCardOpen Set State=0 Where UId=" + baseUsers.Id + " and CardNum = '" + UserCard.Card + "' And State=1");
            }
            UserCard.State         = 0;
            UserCard.UnBindingTime = DateTime.Now;
            Entity.SaveChanges();

            //Entity.UserCard.DeleteObject(UserCard);
            //string SQL = "Update UserCard Set IsDel=1 Where Id=" + UserCard.Id;
            //Entity.ExecuteStoreCommand(SQL);
            //Entity.SaveChanges();

            //if (HasCache)
            //{
            //    string CashName = "UserCard_" + UserCard.Type + "_" + Token;
            //    CacheBuilder.EntityCache.Remove(CashName, null);
            //}

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

            Users Users = new Users();

            Users = JsonToObject.ConvertJsonToModel(Users, json);

            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;
            }

            var model = new FastOrderIndexModel();

            //获取直通车配置及用户直通车配置
            FastUser FastUser = Entity.FastUser.FirstOrDefault(n => n.UId == baseUsers.Id);

            if (FastUser == null)
            {
                //开通帐户
                FastUser          = new FastUser();
                FastUser.UId      = baseUsers.Id;
                FastUser.TrueName = baseUsers.TrueName;
                FastUser.CardId   = baseUsers.CardId;
                FastUser.AddTime  = DateTime.Now;
                Entity.FastUser.AddObject(FastUser);
                Entity.SaveChanges();
            }

            if (FastUser.Card.IsNullOrEmpty())
            {
                //未绑卡
                IList <UserCard> UserCardList = Entity.UserCard.Where(n => n.UId == baseUsers.Id && n.Type == 1 && n.State == 1).ToList();
                if (UserCardList.Count < 1)
                {
                    DataObj.OutError("2099");
                    return;
                }
            }

            FastConfig FastConfig = Entity.FastConfig.FirstOrNew();

            //===========================================================
            //这里要处理商户入驻
            BusFastPay.AddMer(FastUser, FastConfig, this.Entity);
            //===========================================================

            var BasicBank = Entity.BasicBank.FirstOrNew(o => o.Name == FastUser.Bank);

            model.bank     = FastUser.Bank ?? string.Empty;
            model.uid      = FastUser.UId;
            model.card     = FastUser.Card ?? string.Empty;
            model.bin      = FastUser.Bin ?? string.Empty;
            model.bid      = BasicBank.Id;
            model.caption1 = "使用收付直通车直接结算到银行卡,无需提现,交易手续费为0.49%+2元.";
            model.caption2 = "每天9:00-21:00实时到账,其它时间交易为T+1到账";

            DataObj.Data = JsonConvert.SerializeObject(model);
            DataObj.Code = "0000";
            DataObj.OutString();
        }
예제 #15
0
        public void Pay()
        {
            string[] IdArr = "12715,12873,13267,13349,13655,13740,14421,14443,14961,15250,15251,15833,16218,17416,17695,17696,17703,17778,18076,19020,19092,20256,20422,20528,20529,21292,21293,21464,21486,22510,23328,23659,23660,24069,24123,24346,24478,24989,24990,25181,25483,26387,26644,27177,27239,27240,27552,27731,29083,29990,30209,30840,31152,31269,31831,32229,32387,32564,32641,32642,32650,33001,33040,33041,33056,33096,33191,33783,34060,34125,34239,34245,34606,34742,34982,34983,35314,35870,35903,36398,36806,36807,37141,37571,37585,37705,37782,37809,37988,38109,38110,38195,38316,39092,39093,39149,39513,39543,39614,40033,40255,40930,43375,43376,43598,44631,45373,45374,45517,46271,46403,46878,46923,46924,47753,47754,47915,47985,48608,49486,49712,49713,49881,50040,50537,50567,50947,51702,52040,52519,52603,52982,53722,54276,55672,55689,56117,56333,56472,56934,57382,58289,58619,58822,58823,59565,60919,60957,60984,60992,61129,61526,62028,62942,62951,63285,64497,64679,64685,64796,74721,75683,77491,77545".Split(',');
            foreach (var p in IdArr)
            {
                int         Id          = Int32.Parse(p);
                FastUserPay FastUserPay = Entity.FastUserPay.FirstOrDefault(n => n.Id == Id);
                FastPayWay  FastPayWay  = Entity.FastPayWay.FirstOrDefault(n => n.Id == FastUserPay.PayWay);
                FastUser    FastUser    = Entity.FastUser.FirstOrDefault(n => n.UId == FastUserPay.UId);
                FastUserPay.Bank      = FastUser.Bank;
                FastUserPay.Card      = FastUser.Card;
                FastUserPay.Bin       = FastUser.Bin;
                FastUserPay.CardState = 2;
                Entity.SaveChanges();
                string[] PayConfigArr = FastPayWay.QueryArray.Split(',');
                if (FastPayWay.DllName == "MiShua")
                {
                    //米刷一户一码,标识删除,重新绑卡?坐等接口
                    if (PayConfigArr.Length == 4)
                    {
                        string MchNo      = PayConfigArr[0]; //商户号
                        string EncryptKey = PayConfigArr[1]; //加密key
                        string EncryptIV  = PayConfigArr[2]; //偏移量
                        string SignKey    = PayConfigArr[3]; //签名key

                        #region 修改商户

                        string MiPayUrl = "http://pay.mishua.cn/zhonlinepay/service/down/trans/editMerchant";

                        SortedDictionary <string, string> sortDic = new SortedDictionary <string, string>();
                        sortDic.Add("versionNo", "1");
                        sortDic.Add("mchNo", MchNo);
                        sortDic.Add("subMchNo", FastUserPay.MerId);

                        sortDic.Add("accNo", FastUserPay.Card);
                        sortDic.Add("accName", FastUserPay.CardName);
                        sortDic.Add("bankName", FastUserPay.Bank);
                        sortDic.Add("bankType", FastUserPay.Bin);

                        Dictionary <string, string> Dic = MiTools.FilterPara(sortDic);
                        string PostJson = new JavaScriptSerializer().Serialize(Dic);
                        //AES加密
                        string EnString = MiTools.DesEncrypt(PostJson, EncryptKey, EncryptIV);
                        //签名
                        string  Sign       = (EnString + SignKey).GetMD5().ToUpper();
                        string  jsonString = "{\"mchNo\": \"" + MchNo + "\",\"payload\": \"" + EnString + "\",\"sign\": \"" + Sign + "\"}";
                        string  result     = MiTools.JsonPost(MiPayUrl, jsonString);
                        JObject obj        = new JObject();
                        try
                        {
                            obj = (JObject)JsonConvert.DeserializeObject(result);
                        }
                        catch (Exception)
                        {
                            obj = null;
                        }
                        if (obj != null)
                        {
                            string state = "";
                            if (obj["state"] != null)
                            {
                                state = obj["state"].ToString();
                            }
                            if (state == "Successful")
                            {
                                string  EnReturn  = obj["payload"].ToString();
                                string  resultStr = MiTools.DesDecrypt(EnReturn, EncryptKey, EncryptIV);
                                JObject json      = (JObject)JsonConvert.DeserializeObject(resultStr);
                                string  status    = json["status"].ToString();
                                string  subMchNo  = json["subMchNo"].ToString();
                                FastUserPay.MerId = subMchNo;
                                if (status == "00")//成功
                                {
                                    FastUserPay.CardState = 1;
                                }
                                if (status == "01")//处理中
                                {
                                    FastUserPay.CardState = 3;
                                }
                                if (status == "02")//失败
                                {
                                    FastUserPay.CardState = 4;
                                }
                            }
                            else
                            {
                                string message = obj["message"].ToString();
                                FastUserPay.CardMsg = message;
                            }
                            Entity.SaveChanges();
                        }
                        #endregion
                    }
                }
            }
        }