Esempio n. 1
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);
 }
Esempio n. 2
0
        public static FastUser AddMer(FastUser FastUser, FastPayWay FastPayWay, FastConfig FastConfig, LokFuEntity Entity)
        {
            if (FastUser.Card.IsNullOrEmpty())
            {
                //未绑定银行卡
                return(FastUser);
            }
            FastUserPay FastUserPay = Entity.FastUserPay.FirstOrDefault(n => n.UId == FastUser.UId && n.PayWay == FastPayWay.Id);

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


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

                    #endregion
                }
                #endregion
            }
            return(FastUser);
        }
        public void Post()
        {
            string Data = DataObj.GetData();

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

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

            UserCard = JsonToObject.ConvertJsonToModel(UserCard, json);

            UserTrack UserTrack = new UserTrack();

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

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

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

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

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

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

                Result = true;

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

            #endregion
            if (Result)
            {
                DataObj.OutError("0000");
            }
            else
            {
                DataObj.Msg = RetMsg;
                DataObj.OutError("1010");
            }
        }
Esempio n. 4
0
        public void Post()
        {
            string Data = DataObj.GetData();

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

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

            UserCard = JsonToObject.ConvertJsonToModel(UserCard, json);

            UserTrack UserTrack = new UserTrack();

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

            string Token = UserCard.Token;

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

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

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

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

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

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

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