Esempio n. 1
0
        public string BankBind(int cid = 0, int UserId = 0, string mobile = "", string bankcard = "", string bankcode = "", int typeid = 0, string cvn2 = "", string expiresYear = "", string expiresMouth = "", string OpeningBank = "", string OpeningSerialBank = "", int BankID = 0)
        {
            Logs.WriteLog($"Action:User,Cmd:BankBind,UserId:{UserId},mobile:{mobile},bankcard:{bankcard},bankcode:{bankcode},typeid:{typeid},cvn2:{cvn2},expiresYear:{expiresYear},expiresMouth:{expiresMouth},OpeningBank:{OpeningBank},OpeningSerialBank:{OpeningSerialBank}", "d:\\Log\\ITOrm", "BankBind");
            userEventDao.UserBankBind(cid, UserId, Ip.GetClientIp(), mobile, bankcard, bankcode, typeid, cvn2, expiresYear, expiresMouth, OpeningBank, OpeningSerialBank, BankID);

            var version = TQuery.GetString("version");

            if (cid == 3 && version == "1.0.0")
            {
                string temp = expiresYear;
                expiresYear  = expiresMouth;
                expiresMouth = temp;
            }
            #region 验证
            if (!TypeParse.IsMobile(mobile))
            {
                return(ApiReturnStr.getError(-100, "预留手机号格式验证失败"));
            }
            if (!(bankcard.Length > 13 && bankcard.Length < 21))
            {
                return(ApiReturnStr.getError(-100, "银行卡参数错误"));
            }
            if (string.IsNullOrEmpty(bankcode))
            {
                return(ApiReturnStr.getError(-100, "银行编号不能为空"));
            }
            Users user = userDao.Single(UserId);
            if (user == null || user.UserId <= 0)
            {
                return(ApiReturnStr.getError(-100, "用户不存在"));
            }
            if (user.IsRealState != 1)
            {
                return(ApiReturnStr.getError(-100, "用户未实名认证,无法绑卡"));
            }
            if (typeid == 1)//如果是结算卡
            {
                if (string.IsNullOrEmpty(cvn2) || string.IsNullOrEmpty(expiresYear) || string.IsNullOrEmpty(expiresMouth))
                {
                    return(ApiReturnStr.getError(-100, "支付卡参数有误"));
                }

                if (BankID == 0)
                {
                    UserBankCard ubc = userBankCardDao.Single(" UserId=@UserId and BankCard=@bankcard and TypeId=1  ", new { UserId, bankcard });
                    if (ubc != null && ubc.ID > 0)
                    {
                        return(ApiReturnStr.getError(-100, "该支付卡已经绑定过,不能重复绑定"));
                    }
                }
            }
            else
            {
                UserBankCard ubc = userBankCardDao.Single(" UserId=@UserId and TypeId=0 and  State=1 ", new { UserId });
                if (ubc != null && ubc.ID > 0)
                {
                    return(ApiReturnStr.getApiData(-100, "结算卡只能绑定一张"));
                }
            }
            UserBankCard model = null;
            if (BankID > 0)
            {
                model = userBankCardDao.Single(BankID);
                if (model == null)
                {
                    return(ApiReturnStr.getApiData(-100, "BankID记录不存在"));
                }
                if (model.State == 1)
                {
                    return(ApiReturnStr.getApiData(-100, "该银行卡已通过验证,不可修改信息"));
                }
            }
            else
            {
                model = new UserBankCard();
            }
            #endregion

            #region 绑卡
            var result = BankCardBindHelper.Bind(typeid, user.RealName, user.IdCard, bankcard, mobile, cvn2, expiresYear, expiresMouth);

            model.BankCard          = result.bankCard;
            model.BankCode          = bankcode;
            model.BankName          = bankDao.QueryBankName(bankcode);
            model.CVN2              = cvn2;
            model.ExpiresYear       = expiresYear;
            model.ExpiresMouth      = expiresMouth;
            model.UTime             = DateTime.Now;
            model.Mobile            = mobile;
            model.TypeId            = typeid;
            model.OpeningBank       = OpeningBank;
            model.OpeningSerialBank = OpeningSerialBank;
            model.State             = 0;// result.backState ? 1 : 0;//默认为0
            model.RelationId        = ",0,";
            bool flag = false;
            if (BankID == 0)
            {
                model.UserId   = UserId;
                model.IP       = Ip.GetClientIp();
                model.CTime    = DateTime.Now;
                model.Platform = cid;
                int num = userBankCardDao.Insert(model);
                flag = num > 0;
                return(ApiReturnStr.getError(flag ? 0 : -100, flag ? "绑定成功" : "绑定失败"));
            }
            else
            {
                var list = bankTreatyApplyDao.GetQuery(" State=2 And UbkID=@BankID", new { BankID });
                if (list != null && list.Count > 0)
                {
                    foreach (var item in list)
                    {
                        MasgetDepository.TreatyModify(BankID, cvn2, expiresYear, expiresMouth, cid, (Logic.ChannelType)item.ChannelType);
                    }
                }
                flag = userBankCardDao.Update(model);
                return(ApiReturnStr.getError(flag ? 0 : -100, flag ? "修改成功" : "修改失败"));
            }

            #endregion
        }
Esempio n. 2
0
        /// <summary>
        /// 子商户注册
        /// </summary>
        /// <param name="cid"></param>
        /// <param name="UserId"></param>
        /// <param name="IdCard">身份证号码</param>
        /// <param name="RealName">真实姓名</param>
        /// <param name="BankName">银行名称</param>
        /// <param name="BankAccountNumber">银行卡号码</param>
        /// <param name="AreaCode">地区编码</param>
        /// <param name="BankCardPhoto">银行卡照片</param>
        /// <param name="IdCardPhoto">身份证照片</param>
        /// <param name="IdCardBackPhoto">身份证背面照片</param>
        /// <param name="PersonPhoto">三合一照片</param>
        /// <returns></returns>
        public string Register(int cid = 0, int UserId = 0, string IdCard = "", string RealName = "", string BankName = "", string BankAccountNumber = "", string AreaCode = "", int BankCardPhoto = 0, int IdCardPhoto = 0, int IdCardBackPhoto = 0, int PersonPhoto = 0)
        {
            //Thread.Sleep(3000);
            //return ApiReturnStr.getError(-100, "注册失败,测试终点");

            Logs.WriteLog($"Register,cid:{cid},UserId:{UserId},IdCard:{IdCard},RealName:{RealName},BankName:{BankName},BankAccountNumber:{BankAccountNumber},AreaCode:{AreaCode},BankCardPhoto:{BankCardPhoto},IdCardPhoto:{IdCardPhoto},IdCardBackPhoto:{IdCardBackPhoto},PersonPhoto:{PersonPhoto}", "d:\\Log\\Yeepay", "Register");
            if (UserId == 100103)
            {
                Thread.Sleep(3000);
                Users m = userDao.Single(UserId);
                m.IsRealState = 1;
                m.RealName    = "啊啊啊";
                userDao.Update(m);
                return(ApiReturnStr.getError(0, "开户成功"));
            }
            #region 参数验证
            if (UserId <= 0)
            {
                return(ApiReturnStr.getError(-100, "UserId参数错误"));
            }
            if (!RegexHelper.IsMatch(RealName, @"^\s*[\u4e00-\u9fa5]{1,}[\u4e00-\u9fa5.·]{0,15}[\u4e00-\u9fa5]{1,}\s*$"))
            {
                return(ApiReturnStr.getError(-100, "请输入真实的姓名!"));
            }
            if (!TypeParse.IsIdentity(IdCard))
            {
                return(ApiReturnStr.getError(-100, "身份证号格式错误!"));
            }
            if (!TypeParse.IsChinese(BankName))
            {
                return(ApiReturnStr.getError(-100, "银行卡开户行有误"));
            }
            if (string.IsNullOrEmpty(BankAccountNumber) || !(BankAccountNumber.Length > 13 && BankAccountNumber.Length < 21))
            {
                return(ApiReturnStr.getError(-100, "银行卡卡号有误"));
            }
            if (!BankCardBindHelper.ValidateBank(BankName, BankAccountNumber))
            {
                return(ApiReturnStr.getError(-100, "银行卡卡bin识别失败"));
            }
            if (string.IsNullOrEmpty(AreaCode) || AreaCode.Length != 4)
            {
                return(ApiReturnStr.getError(-100, "请选择地区码"));
            }
            if (BankCardPhoto == 0)
            {
                return(ApiReturnStr.getError(-100, "银行卡正面照未上传"));
            }
            if (IdCardPhoto == 0)
            {
                return(ApiReturnStr.getError(-100, "身份证正面照未上传"));
            }
            if (IdCardBackPhoto == 0)
            {
                return(ApiReturnStr.getError(-100, "身份证背面照未上传"));
            }
            if (PersonPhoto == 0)
            {
                PersonPhoto = IdCardPhoto;                 //取消手持三合一
            }
            var user = userDao.Single(" IdCard=@IdCard  and IsRealState=1", new { IdCard });
            if (user != null && user.UserId > 0)
            {
                return(ApiReturnStr.getError(-100, "该身份证号码已认证"));
            }

            var model = userDao.Single(UserId);
            if (model == null || model.UserId <= 0)
            {
                return(ApiReturnStr.getError(-100, "用户不存在"));
            }

            var cnt = yeepayLogDao.Count(string.Format("typeId={0} and UserId={1} and DateDiff(dd,CTime,getdate())=0 ", (int)YeepayType.子商户注册, UserId));
            if (cnt > 4)
            {
                return(ApiReturnStr.getError(-100, "当日开户次数超过5次,请次日再操作!"));
            }
            #endregion

            #region 组装子商户报文实体
            reqRegisterModel yeepayRegModel = new reqRegisterModel();
            yeepayRegModel.signedName        = RealName;
            yeepayRegModel.idCard            = IdCard;
            yeepayRegModel.bankAccountNumber = BankAccountNumber;
            yeepayRegModel.bankName          = BankName.ConvertBank();//转换易宝可识别的银行
            yeepayRegModel.areaCode          = AreaCode;

            #endregion
            //易宝子商户注册
            var result = YeepayDepository.Register(yeepayRegModel, UserId, cid, BankCardPhoto, IdCardPhoto, IdCardBackPhoto, PersonPhoto);
            //事件日志
            userEventDao.RealNameAuthentication(cid, UserId, Ip.GetClientIp(), IdCard, RealName, result.backState == 0 ? 1 : 0, TQuery.GetString("version"));
            return(ApiReturnStr.getError(result.backState, result.backState == 0 ? "开户成功" : result.message));
        }
Esempio n. 3
0
        public string ValidateBank()
        {
            var s = BankCardBindHelper.ValidateBank("招商银行1", "370286001882411");

            return(s.ToString());
        }