public void Add(BasicCardBin BasicCardBin)
 {
     BasicCardBin = Request.ConvertRequestToModel <BasicCardBin>(BasicCardBin, BasicCardBin);
     Entity.BasicCardBin.AddObject(BasicCardBin);
     Entity.SaveChanges();
     BaseRedirect();
 }
        public ActionResult Index(BasicCardBin BasicCardBin, EFPagingInfo <BasicCardBin> p, int IsFirst = 0)
        {
            if (!BasicCardBin.BankCode.IsNullOrEmpty())
            {
                p.SqlWhere.Add(f => f.BankCode == BasicCardBin.BankCode);
            }
            if (!BasicCardBin.BIN.IsNullOrEmpty())
            {
                p.SqlWhere.Add(f => f.BIN == BasicCardBin.BIN);
            }
            if (!BasicCardBin.BankName.IsNullOrEmpty())
            {
                p.SqlWhere.Add(f => f.BankName == BasicCardBin.BankName);
            }
            p.OrderByList.Add("Id", "DESC");
            IPageOfItems <BasicCardBin> BasicCardBinList;

            if (IsFirst == 0)
            {
                BasicCardBinList = new PageOfItems <BasicCardBin>(new List <BasicCardBin>(), 0, 10, 0, new Hashtable());
            }
            else
            {
                BasicCardBinList = Entity.Selects <BasicCardBin>(p);
            }
            ViewBag.BasicCardBinList = BasicCardBinList;
            ViewBag.BasicCardBin     = BasicCardBin;
            ViewBag.Add    = this.checkPower("Add");
            ViewBag.Edit   = this.checkPower("Edit");
            ViewBag.Delete = this.checkPower("Delete");
            ViewBag.Save   = this.checkPower("Save");
            return(View());
        }
        public void ChangeStatus(BasicCardBin BasicCardBin, string InfoList, string Clomn, string Value)
        {
            if (string.IsNullOrEmpty(InfoList))
            {
                InfoList = BasicCardBin.Id.ToString();
            }
            int Ret = Entity.ChangeEntity <BasicCardBin>(InfoList, Clomn, Value);

            Entity.SaveChanges();
            Response.Write(Ret);
        }
        public void Delete(BasicCardBin BasicCardBin, string InfoList, int?IsDel)
        {
            if (string.IsNullOrEmpty(InfoList))
            {
                InfoList = BasicCardBin.Id.ToString();
            }
            int Ret = Entity.MoveToDeleteEntity <BasicCardBin>(InfoList, IsDel, AdminUser.UserName);

            Entity.SaveChanges();
            Response.Write(Ret);
        }
        public void Save(BasicCardBin BasicCardBin)
        {
            BasicCardBin baseBasicCardBin = Entity.BasicCardBin.FirstOrDefault(n => n.Id == BasicCardBin.Id);

            if (baseBasicCardBin == null)
            {
                Response.Write("数据不存在");
                return;
            }
            baseBasicCardBin = Request.ConvertRequestToModel <BasicCardBin>(baseBasicCardBin, BasicCardBin);
            Entity.SaveChanges();
            BaseRedirect();
        }
 public ActionResult Edit(BasicCardBin BasicCardBin)
 {
     if (BasicCardBin.Id != 0)
     {
         BasicCardBin = Entity.BasicCardBin.FirstOrDefault(n => n.Id == BasicCardBin.Id);
     }
     if (BasicCardBin == null)
     {
         ViewBag.ErrorMsg = "数据不存在";
         return(View("Error"));
     }
     ViewBag.BasicCardBin = BasicCardBin;
     if (Request.UrlReferrer != null)
     {
         Session["Url"] = Request.UrlReferrer.ToString();
     }
     return(View());
 }
Пример #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("[CreditCardAdd]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            UserCard UserCard = new UserCard();

            UserCard      = JsonToObject.ConvertJsonToModel(UserCard, json);
            DataObj.Data  = "";
            UserCard.Card = UserCard.Card.Replace(" ", "");
            if (!UserCard.Card.IsNullOrEmpty() && UserCard.Card.Length >= 6)
            {
                string       wei6         = UserCard.Card.Substring(0, 6);
                BasicCardBin BasicCardBin = Entity.BasicCardBin.FirstOrDefault(o => o.BIN == wei6);
                if (BasicCardBin != null)
                {
                    BasicCardBin.Card = UserCard.Card;
                    BasicCardBin.Cols = "BankName,CardType,Card";
                    DataObj.Data      = BasicCardBin.OutJson();
                }
            }
            DataObj.Code = "0000";
            DataObj.OutString();
        }
Пример #8
0
        public ActionResult AddCard(string etnum, string Card = "", string Mobile = "", string code = "")
        {
            string    tnum      = LokFuEncode.LokFuAPIDecode(etnum, DllName);
            FastOrder FastOrder = Entity.FastOrder.FirstOrDefault(n => n.TNum == tnum);

            if (FastOrder == null)
            {
                ViewBag.ErrorMsg = "订单有误!";
                return(View("Error"));
            }
            Users Users = Entity.Users.FirstOrDefault(n => n.Id == FastOrder.UId);

            if (Users == null)
            {
                ViewBag.ErrorMsg = "商户信息有误!";
                return(View("Error"));
            }

            ViewBag.FastOrder = FastOrder;
            ViewBag.Users     = Users;
            ViewBag.etnum     = etnum;

            if (!Card.IsNullOrEmpty() && !Mobile.IsNullOrEmpty() && !code.IsNullOrEmpty())
            {
                if (Card.Length > 20)
                {
                    ViewBag.ErrorMsg = "卡号长度超限!";
                    return(View("Error"));
                }
                if (Mobile.Length > 20)
                {
                    ViewBag.ErrorMsg = "手机号码长度超限!";
                    return(View("Error"));
                }
                if (code.ToUpper() != Session.GetCheckCode())
                {
                    ViewBag.ErrorMsg = "验证码错误!";
                    return(View("Error"));
                }
                Session.ClearCheckCode();
                //绑卡前验证是否有鉴权权限
                UsersPayCard UsersPayCard = Entity.UsersPayCard.FirstOrDefault(n => n.Card == Card && n.Mobile == Mobile && n.UId == FastOrder.UId);
                if (UsersPayCard == null)//不存在则绑卡
                {
                    UserBlackList UserBlackList = Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == Card && UBL.State == 3);
                    if (UserBlackList != null)
                    {
                        ViewBag.ErrorMsg = "暂不支持该银行卡绑卡";
                        return(View("Error"));
                    }

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

                    string data       = "{\"action\":\"authuser\",\"merid\":\"" + HaoFu_Auth_MerId + "\",\"orderid\":\"" + FastOrder.TNum + "\",\"bankaccount\":\"" + Card + "\",\"accountname\":\"" + Users.TrueName + "\",\"identitycode\":\"" + Users.CardId + "\",\"mobile\":\"" + Mobile + "\"}";
                    string DataBase64 = LokFuEncode.Base64Encode(data, "utf-8");
                    string Sign       = (DataBase64 + HaoFu_Auth_MerKey).GetMD5();

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

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

                    JObject JS = new JObject();
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(CONTENT);
                    }
                    catch (Exception)
                    {
                        ViewBag.ErrorMsg = "请求银联鉴权失败!【00】";
                        return(View("Error"));
                    }
                    string resp = JS["resp"].ToString();
                    CONTENT = LokFuEncode.Base64Decode(resp, "utf-8");
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(CONTENT);
                    }
                    catch (Exception)
                    {
                        ViewBag.ErrorMsg = "请求银联鉴权失败!【01】";
                        return(View("Error"));
                    }
                    string ret_code = JS["respcode"].ToString();

                    if (ret_code == "0000")
                    {
                        string BankNumLeft = Card.Substring(0, 6);
                        //获取卡Bin
                        BasicCardBin BasicCardBin = Entity.BasicCardBin.FirstOrDefault(n => n.BIN == BankNumLeft);
                        string       bankName     = "银联卡";
                        byte         CardType     = 0;
                        if (BasicCardBin != null)
                        {
                            bankName = BasicCardBin.BankName;
                            CardType = (byte)BasicCardBin.CardType;
                        }
                        else
                        {
                        }
                        UsersPayCard         = new UsersPayCard();
                        UsersPayCard.UId     = FastOrder.UId;
                        UsersPayCard.Type    = CardType;
                        UsersPayCard.Bank    = bankName;
                        UsersPayCard.Name    = Users.TrueName;
                        UsersPayCard.Card    = Card;
                        UsersPayCard.Mobile  = Mobile;
                        UsersPayCard.State   = 1;
                        UsersPayCard.AddTime = DateTime.Now;
                        Entity.UsersPayCard.AddObject(UsersPayCard);
                        Entity.SaveChanges();
                        Response.Redirect("GoPay.html?BankId=" + UsersPayCard.Id + "&etnum=" + HttpUtility.UrlEncode(etnum));
                    }
                    else
                    {
                        string ret_msg = JS["respmsg"].ToString();
                        ViewBag.ErrorMsg = "银行卡认证失败!";
                        return(View("Error"));
                    }
                }
                else
                {
                    if (UsersPayCard.State == 0)
                    {
                        UsersPayCard.State = 1;
                        Entity.SaveChanges();
                    }
                    Response.Redirect("GoPay.html?BankId=" + UsersPayCard.Id + "&etnum=" + HttpUtility.UrlEncode(etnum));
                }
            }
            return(View());
        }
        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");
            }
        }