public ActionResult Delete(FastPayWay FastPayWay)
 {
     if (FastPayWay.Id != 0)
     {
         FastPayWay = Entity.FastPayWay.FirstOrDefault(n => n.Id == FastPayWay.Id);
     }
     if (FastPayWay == null)
     {
         ViewBag.ErrorMsg = "数据不存在";
         return(View("Error"));
     }
     try
     {
         Entity.FastPayWay.DeleteObject(FastPayWay);
         Entity.SaveChanges();
         APIExtensions.ClearCacheAll();
         ViewBag.Msg = "删除成功";
         return(View("Succeed"));
     }
     catch
     {
         ViewBag.Msg = "删除失败";
         return(View("Error"));
     }
 }
        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 (FastOrder == 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"));
            }
            FastUserPay FastUserPay = Entity.FastUserPay.FirstOrDefault(n => n.PayWay == FastOrder.PayWay && n.UId == FastOrder.UId && n.MerState == 1);

            if (FastUserPay == null)
            {
                ViewBag.ErrorMsg = "商户通道异常";
                return(View("Error"));
            }

            string paywaycode = PayConfigArr[2];                                   //绑定通道
            string OrderMoney = (FastOrder.Amoney * 100).ToString("F0");           //金额,以分为单
            string ReturnUrl  = PayPath + "/PayCenter/HFJSPay/FastResult.html";    //支付成功跳转页
            string BackUrl    = NoticePath + "/PayCenter/HFJSPay/FastNotice.html"; //后台通过地址

            string Data = "{\"txnamt\":\"" + OrderMoney + "\",\"merid\":\"" + FastUserPay.MerId + "\",\"paywaycode\":\"" + paywaycode + "\",\"orderid\":\"" + FastOrder.TNum + "\",\"backurl\":\"" + BackUrl + "\",\"fronturl\":\"" + ReturnUrl + "\"}";

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

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

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

            Response.Redirect(GoUrl);

            return(View("Null"));
        }
        public void ChangeStatus(FastPayWay FastPayWay, string InfoList, string Clomn, string Value)
        {
            if (string.IsNullOrEmpty(InfoList))
            {
                InfoList = FastPayWay.Id.ToString();
            }
            int Ret = Entity.ChangeEntity <FastPayWay>(InfoList, Clomn, Value);

            Entity.SaveChanges();
            Response.Write(Ret);
        }
        public string SetManE(int Id)
        {
            FastPayWay baseFastPayWay = Entity.FastPayWay.FirstOrDefault(n => n.Id == Id);

            if (baseFastPayWay == null)
            {
                return("2");
            }
            baseFastPayWay.ManE = (byte)(1 - baseFastPayWay.ManE);
            Entity.SaveChanges();
            return(baseFastPayWay.ManE.ToString());
        }
        public ActionResult SaveFastPayWay(FastPayWay FastPayWay)
        {
            FastPayWay.Cost  = FastPayWay.Cost / 100;
            FastPayWay.Cost2 = FastPayWay.Cost2 / 100;
            FastPayWay.Cost3 = FastPayWay.Cost3 / 100;

            FastPayWay.BankCost  = FastPayWay.BankCost / 100;
            FastPayWay.BankCost2 = FastPayWay.BankCost2 / 100;
            FastPayWay.BankCost3 = FastPayWay.BankCost3 / 100;

            FastPayWay.InCost  = FastPayWay.InCost / 100;
            FastPayWay.InCost2 = FastPayWay.InCost2 / 100;
            FastPayWay.InCost3 = FastPayWay.InCost3 / 100;
            if (FastPayWay.Cost < 0 || FastPayWay.BankCost < 0 || FastPayWay.Cost >= 1)
            {
                return(Content("<script>alert('费率设置有误!');window.history.go(-1);</script>"));
            }
            FastPayWay baseFastPayWay = ct.FastPayWay.FirstOrDefault(n => n.Id == FastPayWay.Id);

            if (baseFastPayWay != null)//修改直通车通道
            {
                baseFastPayWay.Title      = FastPayWay.Title;
                baseFastPayWay.ShowName   = FastPayWay.ShowName;
                baseFastPayWay.NeekReg    = FastPayWay.NeekReg;
                baseFastPayWay.NeekCard   = FastPayWay.NeekCard;
                baseFastPayWay.TimeType   = FastPayWay.TimeType;
                baseFastPayWay.STime      = FastPayWay.STime;
                baseFastPayWay.ETime      = FastPayWay.ETime;
                baseFastPayWay.InCost3    = FastPayWay.InCost3;
                baseFastPayWay.BankCost3  = FastPayWay.BankCost3;
                baseFastPayWay.MinCost3   = FastPayWay.MinCost3;
                baseFastPayWay.MaxCost3   = FastPayWay.MaxCost3;
                baseFastPayWay.BankSNum   = FastPayWay.BankSNum;
                baseFastPayWay.BankENum   = FastPayWay.BankENum;
                baseFastPayWay.Cash       = FastPayWay.Cash;
                baseFastPayWay.Sort       = FastPayWay.Sort;
                baseFastPayWay.State      = FastPayWay.State;
                baseFastPayWay.QueryArray = FastPayWay.QueryArray;
                baseFastPayWay.Type       = FastPayWay.Type;
            }
            else//添加直通车通道
            {
                FastPayWay.DllName     = "HFJSPay";
                FastPayWay.AddTime     = DateTime.Now;
                FastPayWay.GroupType   = "D0";
                FastPayWay.Version     = "V1.0.0";
                FastPayWay.CanOpenBank = 1;
                ct.FastPayWay.Add(FastPayWay);
            }
            ct.SaveChanges();

            return(Content("<script>alert('操作成功!');history.go(-1);</script>"));
        }
        public void Execute(IJobExecutionContext context)
        {
            string JobName = "FastMer";
            string CanRun  = ConfigurationManager.AppSettings["Run" + JobName].ToString();

            if (CanRun == "true")
            {
                if (!IsRun)
                {
                    LokFuEntity Entity = new LokFuEntity();
                    IsRun = true;
                    try
                    {
                        Log.Write(JobName + "任务开始执行!");
                        //-------------------------------------------------------
                        #region 任务主体
                        DateTime            STime = DateTime.Now.AddDays(-2);
                        DateTime            ETime = DateTime.Now.AddSeconds(-30);
                        IList <FastUserPay> List  = Entity.FastUserPay.Where(n => n.MerState == 3 && n.CardState == 3 && n.BusiState == 3 && n.AddTime > STime && n.AddTime < ETime).ToList();
                        foreach (var p in List)
                        {
                            FastPayWay FastPayWay   = Entity.FastPayWay.FirstOrDefault(n => n.Id == p.PayWay);
                            string[]   PayConfigArr = FastPayWay.QueryArray.Split(',');
                            if (FastPayWay.DllName == "HFJSPay")
                            {
                                #region 结算系统
                                //不需要

                                #endregion
                            }
                            Log.WriteLog("查询商户[" + p.MerId + "]!", JobName);
                        }
                        #endregion
                        //-------------------------------------------------------
                        Log.Write(JobName + "任务执行结束![共计" + List.Count + "条]");
                    }
                    catch (Exception Ex)
                    {
                        Log.Write(JobName + "任务执行过程出错!", Ex);
                    }
                    IsRun = false;
                }
                else
                {
                    Log.Write(JobName + "任务还在执行中!");
                }
            }
        }
 //测试页面
 public ActionResult IsRemove(FastPayWay FastPayWay)
 {
     if (FastPayWay.Id != 0)
     {
         FastPayWay = Entity.FastPayWay.FirstOrDefault(n => n.Id == FastPayWay.Id);
     }
     if (FastPayWay == null)
     {
         ViewBag.ErrorMsg = "数据不存在";
         return(View("Error"));
     }
     ViewBag.FastPayWay = FastPayWay;
     if (Request.UrlReferrer != null)
     {
         Session["Url"] = Request.UrlReferrer.ToString();
     }
     return(View());
 }
 public ActionResult Edit(FastPayWay FastPayWay)
 {
     if (FastPayWay.Id != 0)
     {
         FastPayWay = Entity.FastPayWay.FirstOrDefault(n => n.Id == FastPayWay.Id);
     }
     //var a = "yklm123456";
     //var b = a.GetMD5();
     if (FastPayWay == null)
     {
         ViewBag.ErrorMsg = "数据不存在";
         return(View("Error"));
     }
     ViewBag.FastPayWay = FastPayWay;
     if (Request.UrlReferrer != null)
     {
         Session["Url"] = Request.UrlReferrer.ToString();
     }
     return(View());
 }
        public ActionResult Index(FastPayWay FastPayWay, EFPagingInfo <FastPayWay> p)
        {
            if (!FastPayWay.Title.IsNullOrEmpty())
            {
                p.SqlWhere.Add(f => f.Title.Contains(FastPayWay.Title));
            }
            if (!FastPayWay.State.IsNullOrEmpty())
            {
                p.SqlWhere.Add(f => f.State == FastPayWay.State);
            }
            p.PageSize = 9999;
            p.OrderByList.Add("State", "DESC");
            IPageOfItems <FastPayWay> FastPayWayList = Entity.Selects <FastPayWay>(p);

            ViewBag.FastPayWayList = FastPayWayList.OrderByDescending(o => o.State).ThenBy(o => o.Sort).ToList();
            ViewBag.FastPayWay     = FastPayWay;
            ViewBag.Save           = this.checkPower("Save");
            ViewBag.SetManE        = this.checkPower("SetManE");
            ViewBag.Remove         = this.checkPower("Remove");
            return(View());
        }
        /// <summary>
        /// 一户一码模式绑卡类交易入口
        /// </summary>
        /// <param name="Id"></param>
        /// <param name="sign"></param>
        public void Pay(int Id, string sign)
        {
            if (Id.IsNullOrEmpty() || sign.IsNullOrEmpty())
            {
                Response.Write("Some Error[00]");
                return;
            }
            if (((Id * 100 + 99) + "Pay").GetMD5().Substring(8, 8) != sign)
            {
                Response.Write("Some Error[01]");
                return;
            }
            FastOrder FastOrder = Entity.FastOrder.FirstOrDefault(n => n.Id == Id);

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

            if (FastPayWay == null)
            {
                Response.Write("Some Error[03]");
                return;
            }
            if (FastPayWay.DllName == "HFPay" || FastPayWay.DllName == "HFJSPay")
            {
                //不需要绑卡,去支付
                Response.Redirect("/paycenter/" + FastPayWay.DllName.ToLower() + "/index.html?etnum=" + HttpUtility.UrlEncode(LokFuEncode.LokFuAPIEncode(FastOrder.TNum, FastPayWay.DllName)));
            }
            else
            {
                //跳出绑卡
                Response.Redirect("/paycenter/cardpay/index.html?etnum=" + HttpUtility.UrlEncode(LokFuEncode.LokFuAPIEncode(FastOrder.TNum, "CardPay")));
            }
        }
Exemple #11
0
        public void GoPay(string etnum, int BankId)
        {
            if (etnum.IsNullOrEmpty() || BankId.IsNullOrEmpty())
            {
                Response.Write("Some Error[00]");
                return;
            }
            string    tnum      = LokFuEncode.LokFuAPIDecode(etnum, DllName);
            FastOrder FastOrder = Entity.FastOrder.FirstOrDefault(n => n.TNum == tnum);

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

            if (FastOrder == null)
            {
                Response.Write("Some Error[03]");
                return;
            }
            Response.Redirect("/paycenter/" + FastPayWay.DllName.ToLower() + "/gopay.html?etnum=" + HttpUtility.UrlEncode(LokFuEncode.LokFuAPIEncode(FastOrder.TNum + "|" + BankId, FastPayWay.DllName)));
        }
Exemple #12
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);
        }
Exemple #13
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();
        }
        public void FastNotice()
        {
            string Resp    = Request.Form["resp"];
            string Sign    = Request.Form["sign"];
            string SignStr = Resp;

            Resp = LokFuEncode.Base64Decode(Resp, "utf-8");
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Resp);
            }
            catch (Exception Ex)
            {
                Response.Write(Ex.ToString());
                return;
            }
            if (json == null)
            {
                Response.Write("Json Null");
                return;
            }
            string resultcode = json["resultcode"].ToString(); //交易结果码
            string resultmsg  = json["resultmsg"].ToString();  //交易结果信息
            string queryid    = json["queryid"].ToString();    //交易流水号
            string txnamt     = json["txnamt"].ToString();     //交易金额\
            string merid      = json["merid"].ToString();      //交易金额
            string orderid    = json["orderid"].ToString();    //交易金额

            FastOrder FastOrder = Entity.FastOrder.FirstOrDefault(n => n.TNum == orderid);

            if (FastOrder == null)
            {
                Response.Write("E1");
                return;
            }
            if (FastOrder.PayState == 1)
            {
                Response.Write("P1");
                return;
            }
            FastPayWay FastPayWay = Entity.FastPayWay.FirstOrDefault(n => n.Id == FastOrder.PayWay);

            if (FastPayWay == null)
            {
                Response.Write("E3");
                return;
            }
            if (FastPayWay.State != 1)
            {
                Response.Write("E4");
                return;
            }
            if (FastPayWay.DllName != "HFPay")
            {
                Response.Write("E5");
                return;
            }
            string[] PayConfigArr = FastPayWay.QueryArray.Split(',');
            if (PayConfigArr.Length != 3)
            {
                Response.Write("E53");
                return;
            }
            string MerId  = PayConfigArr[0];
            string MerKey = PayConfigArr[1];

            string MD5Str = SignStr + MerKey;
            string sign   = MD5Str.GetMD5();
            //================================================
            //这里记录日志
            PayLog PayLog = new PayLog();

            PayLog.PId     = (int)FastOrder.PayWay;
            PayLog.OId     = FastOrder.TNum;
            PayLog.TId     = FastOrder.Trade;
            PayLog.Amount  = decimal.Parse(txnamt) / 100;
            PayLog.Way     = "POST";
            PayLog.AddTime = DateTime.Now;
            PayLog.Data    = Request.Form.ToString();
            PayLog.State   = 1;
            Entity.PayLog.AddObject(PayLog);
            Entity.SaveChanges();
            //================================================
            if (Sign != sign)
            {
                Response.Write("E4");
                return;
            }
            if (MerId != merid)
            {
                Response.Write("E5");
                return;
            }
            if (resultcode != "0000" && resultcode != "1002")
            {
                Response.Write("E6");
                return;
            }
            int factmoney = int.Parse(txnamt);

            if (((int)(FastOrder.Amoney * 100)) != factmoney)
            {
                Response.Write("E7");
                return;
            }
            FastOrder.Trade = queryid;
            Entity.SaveChanges();

            FastOrder         = FastOrder.PaySuccess(Entity);
            ViewBag.FastOrder = FastOrder;

            Response.Write("0000");
        }
Exemple #15
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);
 }
        /// <summary>
        /// 补单
        /// </summary>
        /// <returns></returns>
        public ActionResult OrdersRepair(FastOrder FastOrder)
        {
            if (!FastOrder.Id.IsNullOrEmpty())
            {
                FastOrder = Entity.FastOrder.FirstOrDefault(n => n.Id == FastOrder.Id);
            }
            if (FastOrder == null)
            {
                ViewBag.ErrorMsg = "订单不存在";
                return(View("Error"));
            }
            if (FastOrder.PayState != 0)
            {
                ViewBag.ErrorMsg = "不符合补单规则";
                return(View("Error"));
            }
            if (FastOrder.State == 0)
            {
                FastOrder.State = 1;
                Entity.SaveChanges();
            }
            if (this.Request.QueryString["Confirm"] == "true")
            {
                OrdersPayOnly ConfirmOrdersPayOnly = Entity.OrdersPayOnly.Where(o => o.TNum == FastOrder.TNum).FirstOrDefault();
                Entity.OrdersPayOnly.DeleteObject(ConfirmOrdersPayOnly);
                Entity.SaveChanges();
            }
            OrdersPayOnly OrdersPayOnly = Entity.OrdersPayOnly.Where(o => o.TNum == FastOrder.TNum).FirstOrDefault();

            if (OrdersPayOnly != null)
            {
                ViewBag.Msg = "入账流程未完成,是否先结束流程?";
                return(View("Confirm"));
            }
            FastPayWay FastPayWay = Entity.FastPayWay.FirstOrNew(n => n.Id == FastOrder.PayWay);

            if (FastPayWay.State.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "支付通道已关闭";
                return(View("Error"));
            }
            //补单查询
            Users     Users     = Entity.Users.FirstOrDefault(o => o.Id == FastOrder.UId);
            Equipment Equipment = Entity.Equipment.FirstOrDefault(e => e.No == Users.ENo);

            if (Equipment == null)
            {
                ViewBag.ErrorMsg = "支付通道已关闭";
                return(View("Error"));
            }
            string  keys      = Equipment.Keys;
            string  dataJosn  = "{\"token\":\"" + Users.Token + "\",\"tnum\":\"" + FastOrder.TNum + "\"}";
            string  data_data = HttpUtility.UrlEncode(LokFuEncode.LokFuAPIEncode(dataJosn, keys));
            string  Url       = ConfigurationManager.AppSettings["ApiPath"].ToString() + "/API/FastOrderQuery/";
            string  PostData  = string.Format("data={0}&eno={1}&code=0000", data_data, Users.ENo);
            string  result    = Utils.PostRequest(Url, PostData, "utf-8");
            JObject JS        = new JObject();

            try
            {
                JS = (JObject)JsonConvert.DeserializeObject(result);
                string statename = "";
                //返回成功
                if (JS["code"].ToString() == "0000")
                {
                    string ret_data = JS["data"].ToString();
                    result = LokFuEncode.LokFuAPIDecode(ret_data, keys);
                    JS     = (JObject)JsonConvert.DeserializeObject(result);

                    if (JS["state"].ToString() == "0" || JS["state"].ToString() == "1")
                    {
                        if (JS["state"].ToString() == "0")
                        {
                            statename = "取消交易";
                        }
                        else
                        {
                            statename = "待支付";
                        }
                        ViewBag.ErrorMsg = "补单失败!状态:" + statename;
                        return(View("Error"));
                    }
                    else
                    {
                        if (JS["state"].ToString() == "2")
                        {
                            statename = "待结算";
                        }
                        else
                        {
                            statename = "已结算";
                        }

                        ViewBag.Msg = "补单成功!状态:" + statename;
                        return(View("Succeed"));
                    }
                }
                else
                {
                    ViewBag.ErrorMsg = JS["msg"].ToString();
                    return(View("Error"));
                }
            }
            catch (Exception)
            {
                ViewBag.ErrorMsg = "补单失败!";
                return(View("Error"));
            }
        }
Exemple #17
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("[CardReg]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            Card Card = new Card();

            Card = JsonToObject.ConvertJsonToModel(Card, json);

            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Card.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;
            }
            Card = Entity.Card.FirstOrDefault(n => n.Code == Card.Code && n.PasWd == Card.PasWd && n.Auto == 1);
            if (Card == null)
            {
                DataObj.OutError("5003");
                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("5003");
                return;
            }
            if (Card.AId.IsNullOrEmpty())
            {
                DataObj.OutError("5002");
                return;
            }
            if (Card.AdminId.IsNullOrEmpty())
            {
                DataObj.OutError("5002");
                return;
            }
            Card.State        = 2;//使用中
            Card.PUId         = baseUsers.Id;
            baseUsers.Agent   = Card.AId;
            baseUsers.CardNum = Card.Code;
            baseUsers.IsVip   = 1;

            //修改到app费率
            IList <UserPay> UserPayList = Entity.UserPay.Where(o => o.UId == baseUsers.Id).ToList();

            foreach (var temp in UserPayList)
            {
                if (temp.Cost > 0.005)
                {
                    temp.Cost = 0.005;
                }
            }
            // Entity.SaveChanges();


            //修改用户通道费率

            FastUserPay FastUserPay = Entity.FastUserPay.FirstOrDefault(o => o.UId == baseUsers.Id && o.BusiState == 1 && o.MerState == 1 && o.CardState == 1);

            if (FastUserPay != null)
            {
                FastPayWay         FastPayWay         = Entity.FastPayWay.FirstOrNew(o => o.State == 1);
                FastConfig         FastConfig         = Entity.FastConfig.FirstOrNew();
                decimal            Cost               = 0.005M;              //费率
                decimal            Cash               = FastConfig.UserCash; //手续费
                string[]           PayConfigArr       = FastPayWay.QueryArray.Split(',');
                string             Code               = PayConfigArr[0];
                string             CodeKey            = PayConfigArr[1];
                string             PayWayCode         = PayConfigArr[2];
                userspayopenbModel userspayopenbModel = new userspayopenbModel()
                {
                    merid      = FastUserPay.MerId,
                    paywaycode = PayWayCode,
                    code       = Code,
                    bankcost   = Cost,
                    //surcharge = 0,
                    cash        = Cash,
                    bankcostmin = 1.2M,
                    bankcostmax = 9999999
                };
                fastuserResult fastuserResult = HFJSTools.userspayedit(userspayopenbModel, CodeKey);
                if (fastuserResult.respcode == "00")
                {
                    if (fastuserResult.state == 1)
                    {
                        FastUserPay.BusiState = 1;
                        FastUserPay.BusiMsg   = fastuserResult.respcode + "升级Vip[" + fastuserResult.respmsg + "]";
                        FastUserPay.UserCost3 = 0.005M;
                    }
                    else
                    {
                        FastUserPay.BusiState = 4;
                        FastUserPay.BusiMsg   = fastuserResult.respcode + "升级Vip[" + fastuserResult.respmsg + "]";
                    }
                }
                else
                {
                    FastUserPay.BusiState = 4;
                    FastUserPay.BusiMsg   = fastuserResult.respcode + "升级Vip[" + fastuserResult.respmsg + "]";
                }
            }
            Entity.SaveChanges();
            DataObj.Data = baseUsers.ToString();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
        public ActionResult GoPay(int shopid = 0, decimal Amount = 0, byte payway = 0)
        {
            if (shopid.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "商户信息有误,请核实!";
                return(View("Error"));
            }
            if (Amount.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "付款金额有误,请核实!";
                return(View("Error"));
            }
            if (payway.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "请选择支付方式!";
                return(View("Error"));
            }
            if (payway == 3 && shopid != 26)
            {
                ViewBag.ErrorMsg = "暂不开放!";
                return(View("Error"));
            }
            Users Users = Entity.Users.FirstOrNew(n => n.Id == shopid && n.State == 1 && n.CardStae == 2);

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

            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
            {
                ViewBag.ErrorMsg = "支付方式有误!";
                return(View("Error"));
            }
            if (FastPayWayList.Count < 1)
            {
                ViewBag.ErrorMsg = "当前没有可用的渠道!";
                return(View("Error"));
            }
            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)
            {
                ViewBag.ErrorMsg = "请在可交易时间内进行交易!";
                return(View("Error"));
            }
            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);
                if (temp != null)
                {
                    FastPayWay  = p;
                    FastUserPay = temp;
                    break;
                }
            }
            if (FastUserPay == null)
            {
                ViewBag.ErrorMsg = "渠道未开通!";
                return(View("Error"));
            }
            if (FastPayWay == null)
            {
                ViewBag.ErrorMsg = "通道未开通!";
                return(View("Error"));
            }
            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;
            }
            //=======================生成订单===========================
            SysAgent         SysAgent     = Entity.SysAgent.FirstOrNew(n => n.Id == Users.Agent);
            IList <SysAgent> SysAgentList = SysAgent.GetAgentsById(Entity);
            SysAgent         TopAgent     = SysAgentList.FirstOrNew(n => n.Tier == 1);

            FastOrder FastOrder = new FastOrder();

            FastOrder.ComeWay = 2;
            FastOrder.UId     = Users.Id;
            FastOrder.Agent   = SysAgent.Id;

            FastOrder.PayId = string.Empty;

            FastOrder.OType    = payway;
            FastOrder.PayWay   = FastPayWay.Id;
            FastOrder.CashType = FastPayWay.GroupType;
            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)
            {
                ViewBag.ErrorMsg = "结算金额出现负数!";
                return(View("Error"));
            }

            FastOrder.UserRate = UserCost;

            FastOrder.AgentRate = AgentCost;
            FastOrder.SysRate   = BankCost;

            FastOrder.UserCash = FastUserPay.UserCash;
            FastOrder.SysCash  = FastPayWay.Cash;

            //计算手续费差
            decimal PayGet = Amount * (UserCost - AgentCost);

            PayGet = PayGet.Floor();
            //一级代理利润
            decimal AgentPayGet = PayGet * (decimal)TopAgent.PayGet;

            AgentPayGet = AgentPayGet.Floor();

            FastOrder.AgentPayGet = AgentPayGet;

            string  AgentPath = "|";
            string  Split     = "|";
            decimal MyGet     = PayGet;

            foreach (var p in SysAgentList)
            {
                AgentPath += p.Id + "|";
                MyGet      = MyGet * (decimal)p.PayGet;//各级代理分润
                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;
            }
            //用户手续费(含代付手续费)-代付分润-银行手续费-银行代付成本
            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);
            //=======================分润记录===========================
            MyGet = PayGet;
            foreach (var p in SysAgentList)
            {
                MyGet = MyGet * (decimal)p.PayGet;//各级代理分润
                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);
            }
            Entity.SaveChanges();
            //RespObj.queryId = Orders.TNum;
            string[] PayConfigArr = FastPayWay.QueryArray.Split(',');
            //=======================请求接口开始===========================
            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
            }
            ViewBag.FastOrder = FastOrder;
            if (IsAlipayBrowser)
            {
                if (!FastOrder.PayId.IsNullOrEmpty())
                {
                    Response.Redirect(FastOrder.PayId);
                    return(View("Null"));
                }
            }
            return(View());
        }
Exemple #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("[FastPayWay]:", "【Data】" + Data, Ex);
                json = null;
            }
            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;
            }

            IList <FastPayWay> FastPayWayList = Entity.FastPayWay.Where(n => n.State == 1 && n.ManE == 0).OrderBy(n => n.Sort).ToList();

            if (FastPayWayList == null)
            {
                DataObj.OutError("2079");
                return;
            }
            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;
            }
            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.GroupType = "WeiXin";
                Wx.SNum      = WxList.OrderBy(n => n.SNum2).FirstOrDefault().SNum2;
                Wx.ENum      = WxList.OrderByDescending(n => n.ENum2).FirstOrDefault().ENum2;
                List.Add(Wx);
            }
            if (AliList.Count > 0)
            {
                FastPayWay Ali = new FastPayWay();
                Ali.GroupType = "AliPay";
                Ali.SNum      = AliList.OrderBy(n => n.SNum).FirstOrDefault().SNum;
                Ali.ENum      = AliList.OrderByDescending(n => n.ENum).FirstOrDefault().ENum;
                List.Add(Ali);
            }
            //if (BankList.Count > 0)
            //{
            //    FastPayWay Bank = new FastPayWay();
            //    Bank.GroupType = "Bank";
            //    Bank.SNum = BankList.OrderBy(n => n.BankSNum).FirstOrDefault().BankSNum;
            //    Bank.ENum = BankList.OrderByDescending(n => n.BankENum).FirstOrDefault().BankENum;
            //    List.Add(Bank);
            //}
            DataObj.Data = List.EntityToJson();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
        /// <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 Execute(IJobExecutionContext context)
        {
            string JobName = "FastQuery";
            string CanRun  = ConfigurationManager.AppSettings["Run" + JobName].ToString();

            if (CanRun == "true")
            {
                if (!IsRun)
                {
                    LokFuEntity Entity = new LokFuEntity();
                    IsRun = true;
                    try
                    {
                        Log.Write(JobName + "任务开始执行!");
                        //-------------------------------------------------------
                        #region 任务主体
                        //查询所有已支付但未代付订单
                        DateTime          STime = DateTime.Now.AddDays(-1);
                        DateTime          ETime = DateTime.Now.AddSeconds(-30);
                        IList <FastOrder> List  = Entity.FastOrder.Where(n => n.State == 1 && n.PayState == 1 && n.UserState == 3 && n.UserTime <ETime && n.UserTime> STime).ToList();
                        //UserState 0未付 1已付 2失败 3结果未明 4付起中
                        foreach (var p in List)
                        {
                            FastPayWay  FastPayWay  = Entity.FastPayWay.FirstOrDefault(n => n.Id == p.PayWay && n.State == 1);
                            FastUserPay FastUserPay = Entity.FastUserPay.FirstOrDefault(n => n.PayWay == p.PayWay && n.UId == p.UId);
                            if (FastPayWay != null)
                            {
                                string[] PayConfigArr = FastPayWay.QueryArray.Split(',');
                                if (FastPayWay.DllName == "HFPay")
                                {
                                    #region 查代付结果
                                    if (PayConfigArr.Length == 3)
                                    {
                                        string HF_Url     = "https://api.zhifujiekou.com/api/qcashquery";
                                        string MerId      = PayConfigArr[0];
                                        string MerKey     = PayConfigArr[1];
                                        string orderId    = p.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  Ret      = Utils.PostRequest(HF_Url, PostData, "utf-8");
                                        JObject JS       = new JObject();
                                        try
                                        {
                                            JS = (JObject)JsonConvert.DeserializeObject(Ret);
                                        }
                                        catch (Exception)
                                        {
                                            JS = null;
                                        }
                                        if (JS != null)
                                        {
                                            if (JS["resp"] != null)
                                            {
                                                string resp = JS["resp"].ToString();
                                                Ret = LokFuEncode.Base64Decode(resp, "utf-8");
                                                try
                                                {
                                                    JS = (JObject)JsonConvert.DeserializeObject(Ret);
                                                }
                                                catch (Exception)
                                                {
                                                    JS = null;
                                                }
                                                if (JS != null)
                                                {
                                                    string respcode = JS["respcode"].ToString();
                                                    if (respcode == "00")
                                                    {
                                                        string resultcode = JS["resultcode"].ToString();
                                                        if (resultcode == "0000")
                                                        {
                                                            p.UserState = 1;
                                                        }
                                                        else if (resultcode == "2002" || resultcode == "2003")
                                                        {
                                                            p.UserState = 2;
                                                        }
                                                        else
                                                        {
                                                        }
                                                        Entity.SaveChanges();
                                                    }
                                                }
                                            }
                                        }
                                        //================================================
                                        PayLog PayLog = new PayLog();
                                        PayLog.PId     = FastPayWay.Id;
                                        PayLog.OId     = p.TNum;
                                        PayLog.TId     = "";
                                        PayLog.Amount  = 0;
                                        PayLog.Way     = "FASTDFQ";
                                        PayLog.AddTime = DateTime.Now;
                                        PayLog.Data    = Ret;
                                        PayLog.State   = 1;
                                        Entity.PayLog.AddObject(PayLog);
                                        //================================================
                                        Entity.SaveChanges();
                                    }
                                    #endregion
                                }
                                if (FastPayWay.DllName == "HFJSPay")
                                {
                                    #region 结算系统
                                    //不需要
                                    fastordersqueryModel fastordersqueryModel = new fastordersqueryModel()
                                    {
                                        merid   = FastUserPay.MerId,
                                        orderid = "",
                                        queryid = p.TNum
                                    };
                                    fastordersqueryResult fastordersqueryResult = HFJSTools.fastordersquery(fastordersqueryModel, FastUserPay.MerKey);
                                    //================================================
                                    //记录通知信息
                                    PayLog PayLog = new PayLog();
                                    PayLog.PId     = p.PayWay.Value;
                                    PayLog.OId     = p.TNum;
                                    PayLog.TId     = fastordersqueryResult.queryid;
                                    PayLog.Amount  = p.Amoney;
                                    PayLog.Way     = "FASTDFQ";
                                    PayLog.AddTime = DateTime.Now;
                                    PayLog.Data    = HFJSTools.MyObjectToJson(fastordersqueryResult);
                                    PayLog.State   = 1;
                                    Entity.PayLog.AddObject(PayLog);
                                    Entity.SaveChanges();
                                    //================================================
                                    if (fastordersqueryResult.respcode == "00")
                                    {
                                        if (fastordersqueryResult.resultcode == "0000")
                                        {
                                            p.UserState = 1;
                                            Entity.SaveChanges();
                                        }
                                        if (fastordersqueryResult.resultcode == "1003")
                                        {
                                            p.UserState = 2;
                                            Entity.SaveChanges();
                                        }
                                    }
                                    else
                                    {
                                        string resp_desc = fastordersqueryResult.respmsg;
                                        Utils.WriteLog("HFJS[Query][" + p.TNum + "]:" + resp_desc, "JobHFJS");
                                    }
                                    #endregion
                                }
                            }
                            Log.WriteLog("查询代付[" + p.TNum + "]!", JobName);
                        }
                        #endregion
                        //-------------------------------------------------------
                        Log.Write(JobName + "任务执行结束![共计" + List.Count + "条]");
                    }
                    catch (Exception Ex)
                    {
                        Log.Write(JobName + "任务执行过程出错!", Ex);
                    }
                    IsRun = false;
                }
                else
                {
                    Log.Write(JobName + "任务还在执行中!");
                }
            }
        }
        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());
        }
        public string PayState(string code)
        {
            string    TNum      = LokFuEncode.Base64Decode(code);
            FastOrder FastOrder = Entity.FastOrder.FirstOrDefault(n => n.TNum == TNum);

            if (FastOrder == null)
            {
                return("E1");
            }
            if (FastOrder.PayState == 1)
            {
                return("S");
            }
            if (FastOrder.State != 1)
            {
                return("E0");
            }
            FastPayWay FastPayWay = Entity.FastPayWay.FirstOrNew(n => n.Id == FastOrder.PayWay);

            if (FastPayWay == null)
            {
                return("E2");
            }
            string[] PayConfigArr = FastPayWay.QueryArray.Split(new char[] { ',' });//接口信息
            if (FastPayWay.DllName == "HFPay")
            {
                #region 结算中心
                if (PayConfigArr.Length == 3)
                {
                    string HF_Url     = "https://api.zhifujiekou.com/api/query";
                    string MerId      = PayConfigArr[0];
                    string MerKey     = PayConfigArr[1];
                    string orderId    = FastOrder.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  Ret      = Utils.PostRequest(HF_Url, PostData, "utf-8");
                    JObject JS       = new JObject();
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(Ret);
                    }
                    catch (Exception)
                    {
                        JS = null;
                    }
                    if (JS != null)
                    {
                        if (JS["resp"] != null)
                        {
                            string resp = JS["resp"].ToString();
                            Ret = LokFuEncode.Base64Decode(resp, "utf-8");
                            try
                            {
                                JS = (JObject)JsonConvert.DeserializeObject(Ret);
                            }
                            catch (Exception)
                            {
                                JS = null;
                            }
                            if (JS != null)
                            {
                                string respcode = JS["respcode"].ToString();
                                if (respcode == "00")
                                {
                                    string resultcode = JS["resultcode"].ToString();
                                    if (resultcode == "0000" || resultcode == "1002" || resultcode == "1004")
                                    {
                                        string queryid = JS["queryid"].ToString();
                                        FastOrder.Trade = queryid;
                                        Entity.SaveChanges();
                                        string txnamt    = JS["txnamt"].ToString();
                                        int    factmoney = int.Parse(txnamt);
                                        if (((int)(FastOrder.Amoney * 100)) == factmoney)
                                        {
                                            FastOrder = FastOrder.PaySuccess(Entity);
                                        }
                                    }
                                }
                                //================================================
                                //这里记录日志
                                PayLog PayLog = new PayLog();
                                PayLog.PId     = (int)FastOrder.PayWay;
                                PayLog.OId     = FastOrder.TNum;
                                PayLog.TId     = FastOrder.Trade;
                                PayLog.Amount  = FastOrder.Amoney;
                                PayLog.Way     = "Query";
                                PayLog.AddTime = DateTime.Now;
                                PayLog.Data    = Ret;
                                PayLog.State   = 1;
                                Entity.PayLog.AddObject(PayLog);
                                Entity.SaveChanges();
                                //================================================
                            }
                        }
                    }
                }
                #endregion
            }
            if (FastOrder.PayState == 1)
            {
                return("S");
            }
            if (FastOrder.State == 0)
            {
                return("E100");
            }
            return("G");
        }
        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");
        }
Exemple #25
0
        private List <FinFlowMode> FlowQuery(DateTime STime, DateTime ETime)
        {
            var FastPayWayList  = this.Entity.FastPayWay.ToList();
            var PayConfigList   = this.Entity.PayConfig.ToList();
            var FinFlowModeList = new List <FinFlowMode>();
            var args_FO         = new DbParameter[]
            {
                new SqlParameter {
                    ParameterName = "STime", Value = STime.ToString("yyyy-MM-dd HH:mm:ss")
                },
                new SqlParameter {
                    ParameterName = "ETime", Value = ETime.ToString("yyyy-MM-dd HH:mm:ss.fff")
                }
            };
            var args_VO = new DbParameter[]
            {
                new SqlParameter {
                    ParameterName = "STime", Value = STime.ToString("yyyy-MM-dd HH:mm:ss")
                },
                new SqlParameter {
                    ParameterName = "ETime", Value = ETime.ToString("yyyy-MM-dd HH:mm:ss.fff")
                }
            };
            var args_UC = new DbParameter[]
            {
                new SqlParameter {
                    ParameterName = "STime", Value = STime.ToString("yyyy-MM-dd HH:mm:ss")
                },
                new SqlParameter {
                    ParameterName = "ETime", Value = ETime.ToString("yyyy-MM-dd HH:mm:ss.fff")
                }
            };
            string FastOrderSQL =
                @";with a as (Select 
                        PayWay,COUNT(1) as PayCounts,
                        Sum(Amoney) AS Amoney ,
                        Sum(PayMoney) AS PayMoney,
                        Sum(Poundage) AS Poundage,
                        Sum(HFGet) AS Profit,
                        SUM(ROUND(sysrate*amoney,2,1)) AS Cost,
                        Sum(SysCash) as SysCash,
                        Sum(AgentPayGet) AS AgentPayGet 
                        From FastOrder (nolock)
                        Where PayTime > @STime AND PayTime <= @ETime
                        GROUP BY PayWay ) ,
                        c as (select PayWay,ISNULL(COUNT(PayState),0) NoPayCounts from FastOrder  where AddTime  > @STime AND AddTime <= @ETime and PayState  = 0 GROUP BY PayWay )                           
                        select  b.id as payway,isnull(a.PayCounts,0) as PayCounts,isnull(c.NoPayCounts,0) as NoPayCounts,
                        isnull(a.amoney,0) amoney,
                        isnull(a.paymoney,0) paymoney,
                        isnull(a.Poundage,0) Poundage,
                        isnull(a.Profit,0) Profit,
                        isnull(a.Cost,0) Cost,
                        isnull(a.SysCash,0) SysCash,
                        isnull(a.AgentPayGet,0) AgentPayGet,
                        1 AS FlowType,'FastOrder' AS OrderType 
                        from FastPayWay b 
                        left join a on a.PayWay  = b.Id 
                        left join c on c.PayWay  = b.Id 
                        where  b.State = 1 or PayCounts is not null order by b.State desc,PayCounts desc";

            var FinFlowMode_FO = this.Entity.ExecuteStoreQuery <FinFlowMode>(FastOrderSQL, args_FO).ToList();

            FinFlowMode_FO.ForEach(o => {
                FastPayWay FastPayWay = FastPayWayList.FirstOrNew(x => x.Id == o.PayWay);
                o.PayWayName          = FastPayWay.ShowName + "(" + FastPayWay.Title + ")";
            });
            FinFlowModeList.AddRange(FinFlowMode_FO);

            return(FinFlowModeList);
        }
        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"));
        }
Exemple #27
0
        public void Post()
        {
            string Data = DataObj.GetData();

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

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[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();
        }
        public ActionResult FastResult()
        {
            string Resp    = Request.QueryString["resp"];
            string Sign    = Request.QueryString["sign"];
            string SignStr = Resp;

            Resp = LokFuEncode.Base64Decode(Resp, "utf-8");
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Resp);
            }
            catch (Exception Ex)
            {
                ViewBag.ErrorMsg = Ex.ToString();
                return(View("Error"));
            }
            if (json == null)
            {
                ViewBag.ErrorMsg = "数据处理出错";
                return(View("Error"));
            }

            string resultcode = json["resultcode"].ToString(); //交易结果码
            string resultmsg  = json["resultmsg"].ToString();  //交易结果信息
            string queryid    = json["queryid"].ToString();    //交易流水号
            string txnamt     = json["txnamt"].ToString();     //交易金额
            string merid      = json["merid"].ToString();      //商户号
            string orderid    = json["orderid"].ToString();    //交易单号

            FastOrder FastOrder = Entity.FastOrder.FirstOrDefault(n => n.TNum == orderid);

            if (FastOrder == null)
            {
                ViewBag.ErrorMsg = "交易不存在!";
                return(View("Error"));
            }
            if (FastOrder.State != 1)
            {
                ViewBag.ErrorMsg = "交易异常!";
                return(View("Error"));
            }
            FastPayWay FastPayWay = Entity.FastPayWay.FirstOrDefault(n => n.Id == FastOrder.PayWay);

            if (FastPayWay == null)
            {
                ViewBag.ErrorMsg = "支付通道不存在!";
                return(View("Error"));
            }
            if (FastPayWay.State != 1)
            {
                ViewBag.ErrorMsg = "支付通道已关闭!";
                return(View("Error"));
            }
            if (FastPayWay.DllName != "HFPay")
            {
                ViewBag.ErrorMsg = "支付通道异常!";
                return(View("Error"));
            }
            string[] PayConfigArr = FastPayWay.QueryArray.Split(',');
            if (PayConfigArr.Length != 3)
            {
                ViewBag.ErrorMsg = "支付通道配置异常!";
                return(View("Error"));
            }
            string MerId  = PayConfigArr[0];
            string MerKey = PayConfigArr[1];

            string MD5Str = SignStr + MerKey;
            string sign   = MD5Str.GetMD5();
            //================================================
            //这里记录日志
            PayLog PayLog = new PayLog();

            PayLog.PId     = (int)FastOrder.PayWay;
            PayLog.OId     = FastOrder.TNum;
            PayLog.TId     = FastOrder.Trade;
            PayLog.Amount  = decimal.Parse(txnamt) / 100;
            PayLog.Way     = "POST";
            PayLog.AddTime = DateTime.Now;
            PayLog.Data    = Request.Form.ToString();
            PayLog.State   = 1;
            Entity.PayLog.AddObject(PayLog);
            Entity.SaveChanges();
            //================================================
            if (Sign != sign)
            {
                ViewBag.ErrorMsg = "签名错误!";
                return(View("Error"));
            }
            if (MerId != merid)
            {
                ViewBag.ErrorMsg = "商户号不一置!";
                return(View("Error"));
            }
            if (resultcode != "0000" && resultcode != "1002")
            {
                ViewBag.ErrorMsg = "支付失败![" + resultcode + "]" + resultmsg;
                return(View("Error"));
            }
            int factmoney = int.Parse(txnamt);

            if (((int)(FastOrder.Amoney * 100)) != factmoney)
            {
                ViewBag.ErrorMsg = "支付金额与交易金额不符!";
                return(View("Error"));
            }
            FastOrder.Trade = queryid;
            Entity.SaveChanges();

            FastOrder         = FastOrder.PaySuccess(Entity);
            ViewBag.FastOrder = FastOrder;
            return(View("FastSuccess"));
        }
        public ActionResult Save(FastPayWay FastPayWay, string[] queryArray, int STimeHH, int STimemm, int ETimeHH, int ETimemm)
        {
            FastPayWay.Cost  = FastPayWay.Cost / 1000;
            FastPayWay.Cost2 = FastPayWay.Cost2 / 1000;
            FastPayWay.Cost3 = FastPayWay.Cost3 / 1000;

            FastPayWay.BankCost  = FastPayWay.BankCost / 1000;
            FastPayWay.BankCost2 = FastPayWay.BankCost2 / 1000;
            FastPayWay.BankCost3 = FastPayWay.BankCost3 / 1000;

            FastPayWay.InCost  = FastPayWay.InCost / 1000;
            FastPayWay.InCost2 = FastPayWay.InCost2 / 1000;
            FastPayWay.InCost3 = FastPayWay.InCost3 / 1000;
            if (FastPayWay.Cost < 0 || FastPayWay.BankCost < 0 || FastPayWay.Cost >= 1)
            {
                ViewBag.ErrorMsg = "费率设置有误";
                return(View("Error"));
            }
            FastPayWay baseFastPayWay = Entity.FastPayWay.FirstOrDefault(n => n.Id == FastPayWay.Id);

            if (baseFastPayWay != null)//修改直通车通道
            {
                //如果是微信支付配置的子商户号没有填写的话,去掉这个元素
                if (baseFastPayWay.DllName == "WeiXin")
                {
                    if (queryArray[4].IsNullOrEmpty())
                    {
                        var temp = new ArrayList(queryArray);
                        temp.RemoveAt(4);
                        queryArray = (string[])temp.ToArray(typeof(string));
                    }
                }
                if (queryArray != null)
                {
                    baseFastPayWay.QueryArray = string.Join(",", queryArray);
                }
                baseFastPayWay           = Request.ConvertRequestToModel <FastPayWay>(baseFastPayWay, FastPayWay);
                baseFastPayWay.HasAliPay = FastPayWay.HasAliPay;
                baseFastPayWay.HasBank   = FastPayWay.HasBank;
                baseFastPayWay.HasWeiXin = FastPayWay.HasWeiXin;
                DateTime STime = DateTime.Parse("1990-01-01 " + STimeHH + ":" + STimemm + ":00");
                DateTime ETime = DateTime.Parse("1990-01-01 " + ETimeHH + ":" + ETimemm + ":" + (ETimeHH == 23 && ETimemm == 59 ? "59" : "00"));
                baseFastPayWay.STime = STime;
                baseFastPayWay.ETime = ETime;
            }
            else//添加直通车通道
            {
                FastPayWay.Title       = "测试名称";
                FastPayWay.DllName     = "HFJSPay";
                FastPayWay.AddTime     = DateTime.Now;
                FastPayWay.GroupType   = "D0";
                FastPayWay.Version     = "V1.0.0";
                FastPayWay.CanOpenBank = 1;
                DateTime STime = DateTime.Parse("1990-01-01 " + STimeHH + ":" + STimemm + ":00");
                DateTime ETime = DateTime.Parse("1990-01-01 " + ETimeHH + ":" + ETimemm + ":" + (ETimeHH == 23 && ETimemm == 59 ? "59" : "00"));
                FastPayWay.STime = STime;
                FastPayWay.ETime = ETime;

                Entity.FastPayWay.AddObject(FastPayWay);
            }
            Entity.SaveChanges();

            APIExtensions.ClearCacheAll();
            ViewBag.Msg = "操作成功";
            return(View("Succeed"));
        }
        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("[FastOrderQueryController]:", "【Data】" + Data, Ex);
                json = null;
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }

            FastOrder InFastOrder = new FastOrder();

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

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

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

            FastOrder FastOrder = Entity.FastOrder.FirstOrDefault(n => n.TNum == InFastOrder.TNum && n.UId == baseUsers.Id);

            if (FastOrder == null)
            {
                DataObj.OutError("1000");
                return;
            }
            if (FastOrder.State == 1 && FastOrder.PayState == 0)
            {
                FastPayWay FastPayWay = Entity.FastPayWay.FirstOrNew(n => n.Id == FastOrder.PayWay);
                if (FastPayWay == null)
                {
                    DataObj.OutError("2079");
                    return;
                }
                string[] PayConfigArr = FastPayWay.QueryArray.Split(new char[] { ',' });//接口信息
                if (FastPayWay.DllName == "HFPay")
                {
                    #region 结算中心
                    if (PayConfigArr.Length == 3)
                    {
                        string HF_Url     = "https://api.zhifujiekou.com/api/query";
                        string MerId      = PayConfigArr[0];
                        string MerKey     = PayConfigArr[1];
                        string orderId    = FastOrder.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  Ret      = Utils.PostRequest(HF_Url, PostData, "utf-8");
                        JObject JS       = new JObject();
                        try
                        {
                            JS = (JObject)JsonConvert.DeserializeObject(Ret);
                        }
                        catch (Exception)
                        {
                            JS = null;
                        }
                        if (JS != null)
                        {
                            if (JS["resp"] != null)
                            {
                                string resp = JS["resp"].ToString();
                                Ret = LokFuEncode.Base64Decode(resp, "utf-8");
                                try
                                {
                                    JS = (JObject)JsonConvert.DeserializeObject(Ret);
                                }
                                catch (Exception)
                                {
                                    JS = null;
                                }
                                if (JS != null)
                                {
                                    string respcode = JS["respcode"].ToString();
                                    if (respcode == "00")
                                    {
                                        string resultcode = JS["resultcode"].ToString();
                                        if (resultcode == "0000" || resultcode == "1002" || resultcode == "1004")
                                        {
                                            string queryid = JS["queryid"].ToString();
                                            FastOrder.Trade = queryid;
                                            Entity.SaveChanges();
                                            string txnamt    = JS["txnamt"].ToString();
                                            int    factmoney = int.Parse(txnamt);
                                            if (((int)(FastOrder.Amoney * 100)) == factmoney)
                                            {
                                                FastOrder = FastOrder.PaySuccess(Entity);
                                            }
                                        }
                                    }
                                    //================================================
                                    //这里记录日志
                                    PayLog PayLog = new PayLog();
                                    PayLog.PId     = (int)FastOrder.PayWay;
                                    PayLog.OId     = FastOrder.TNum;
                                    PayLog.TId     = FastOrder.Trade;
                                    PayLog.Amount  = FastOrder.Amoney;
                                    PayLog.Way     = "Query";
                                    PayLog.AddTime = DateTime.Now;
                                    PayLog.Data    = Ret;
                                    PayLog.State   = 1;
                                    Entity.PayLog.AddObject(PayLog);
                                    Entity.SaveChanges();
                                    //================================================
                                }
                            }
                        }
                    }
                    #endregion
                }
                if (FastPayWay.DllName == "HFJSPay")
                {
                    #region 结算中心
                    if (PayConfigArr.Length == 3)
                    {
                        FastUserPay          FastUserPay          = Entity.FastUserPay.FirstOrDefault(n => n.PayWay == FastOrder.PayWay && n.UId == baseUsers.Id && n.MerState == 1);
                        fastordersqueryModel fastordersqueryModel = new fastordersqueryModel()
                        {
                            merid   = FastUserPay.MerId,
                            orderid = "",
                            queryid = FastOrder.TNum
                        };
                        fastordersqueryResult fastordersqueryResult = HFJSTools.fastordersquery(fastordersqueryModel, FastUserPay.MerKey);
                        //================================================
                        //记录通知信息
                        PayLog PayLog = new PayLog();
                        PayLog.PId     = FastOrder.PayWay.Value;
                        PayLog.OId     = FastOrder.TNum;
                        PayLog.TId     = fastordersqueryResult.queryid;
                        PayLog.Amount  = FastOrder.Amoney;
                        PayLog.Way     = "Query";
                        PayLog.AddTime = DateTime.Now;
                        PayLog.Data    = HFJSTools.MyObjectToJson(fastordersqueryResult);
                        PayLog.State   = 1;
                        Entity.PayLog.AddObject(PayLog);
                        Entity.SaveChanges();
                        //================================================
                        if (fastordersqueryResult.respcode == "00")
                        {
                            if (fastordersqueryResult.resultcode == "0000" || fastordersqueryResult.resultcode == "1002")
                            {
                                FastOrder.Trade = fastordersqueryResult.queryid;
                                Entity.SaveChanges();
                                FastOrder = FastOrder.PaySuccess(Entity);
                                if (FastOrder.PayState == 1)
                                {
                                    if (fastordersqueryResult.resultcode == "0000")
                                    {
                                        FastOrder.UserState = 1;
                                    }
                                    if (fastordersqueryResult.resultcode == "1002")
                                    {
                                        FastOrder.UserState = 3;
                                    }
                                    FastOrder.UserTime = DateTime.Now;
                                    Entity.SaveChanges();
                                }
                            }
                            else if (fastordersqueryResult.resultcode == "1004")
                            {
                                FastOrder.State = 0;
                                Entity.SaveChanges();
                            }
                            else
                            {
                            }
                            Entity.SaveChanges();
                        }
                        else
                        {
                            string resp_desc = fastordersqueryResult.respmsg;
                            Utils.WriteLog("HFJS[Query][" + FastOrder.TNum + "]:" + resp_desc, "JobHFJS");
                        }
                    }
                    #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;
            }
            FastOrder.Cols = "TNum,PayId,Amoney,Poundage,State";
            DataObj.Data   = FastOrder.OutJson();
            DataObj.Code   = "0000";
            DataObj.OutString();
        }