Пример #1
0
        static void Main(string[] args)
        {
            var exampleToRun = ExamplesEnumeration.InterfaceConstraint;

            switch (exampleToRun)
            {
            case ExamplesEnumeration.StandartConstaint:
                Account <int> account = new Account <int>(5);
                account.ShowSum();
                break;

            case ExamplesEnumeration.CustomConstraint:
                //AdvancedSum sum = new AdvancedSum() { Quantity = 5, Currency = "eur" };
                CustomSum sum = new CustomSum()
                {
                    Quantity = 5
                };
                CustomAccount <CustomSum> customAccount = new CustomAccount <CustomSum>(sum);
                customAccount.ShowSum();
                break;

            case ExamplesEnumeration.InterfaceConstraint:
                //SpecialSum specialSum = new SpecialSum() { Quantity = 5.2 };
                CustomSum specialSum = new CustomSum()
                {
                    Quantity = 5
                };
                InterfaceAccount <CustomSum, int> interfaceAccount = new InterfaceAccount <CustomSum, int>(specialSum);
                interfaceAccount.ShowData();
                break;
            }

            Console.Read();
        }
Пример #2
0
        /// <summary>
        /// 获取接口用户信息
        /// </summary>
        /// <param name="InterfaceAccount">商户信息实体</param>
        /// <returns>InterfaceAccount</returns>
        public InterfaceAccount GetInterfaceAccount(InterfaceAccount model)
        {
            #region sql
            string wherestr = string.Empty;

            if (!string.IsNullOrWhiteSpace(model.MerchantCode))
            {
                wherestr += " AND MerchantCode = @0 ";
            }
            if (!string.IsNullOrWhiteSpace(model.ReapayMerchantNo))
            {
                wherestr += " AND ReapayMerchantNo = @1 ";
            }
            if (!string.IsNullOrWhiteSpace(model.MerchantPwd))
            {
                wherestr += " AND MerchantPwd = @2 ";
            }

            string sql = string.Format(@"
SELECT  *
FROM    [dbo].[InterfaceAccount]
WHERE   1 = 1
        {0} ", wherestr);
            #endregion

            var interfaceAccount = CgtDB.GetInstance().SingleOrDefault <InterfaceAccount>(sql,
                                                                                          model.MerchantCode,
                                                                                          model.ReapayMerchantNo,
                                                                                          model.MerchantPwd);

            return(interfaceAccount);
        }
Пример #3
0
        /// <summary>
        /// 业务逻辑
        /// </summary>
        protected override void ExecuteMethod()
        {
            Random rd           = new Random();
            var    MerchantCode = ChineseSpellHelp.GetChineseSpell(this.Parameter.MerchantName) + rd.Next(100, 999);
            var    MerchantPwd  = Encrpty.MD5Pwd(this.Parameter.MerchantPwd);

            registeredMerchantProcessor.InitData(this.Parameter.ReapayMerchantNo, this.Parameter.MerchantPwd,
                                                 MerchantCode, this.Parameter.MerchantName, this.Parameter.Contact, "",
                                                 "", this.Parameter.ReapayMerchantNo, this.Parameter.ReapalMerchantId, this.Parameter.Phone, "", this.Parameter.ReapayMerchantNo, this.Parameter.ReapalMerchantPwd.Trim());
            var result = registeredMerchantProcessor.Execute();

            if (!result.Success)
            {
                throw new Exception(result.Message);
            }
            InterfaceAccount _InterfaceAccount = new InterfaceAccount()
            {
                Contact          = this.Parameter.Contact,
                CreateTime       = DateTime.Now,
                CreateUserID     = 0,
                MerchantCode     = MerchantCode,
                MerchantName     = this.Parameter.MerchantName,
                MerchantPwd      = MerchantPwd,
                Phone            = this.Parameter.Phone,
                ReapalMerchantId = this.Parameter.ReapalMerchantId,
                ReapayMerchantNo = this.Parameter.ReapayMerchantNo,
                Status           = 0,
                UpdateTime       = DateTime.Now,
                UserKey          = Guid.NewGuid().ToString().Replace("-", ""),
                CertAddress      = "",
                UpdateUserID     = 0,
                IsCheckPrice     = 0
            };

            interfaceAccountRep.Insert(_InterfaceAccount);

            //生成证书
            var interfaceAccountmodel = ServiceCommon.GenerateUserCer(_InterfaceAccount);

            _InterfaceAccount.CertAddress  = interfaceAccountmodel.CertAddress;
            _InterfaceAccount.CertPassword = interfaceAccountmodel.CertPassword;
            int i = interfaceAccountRep.Update(_InterfaceAccount);

            if (i <= 0)
            {
                throw new System.Exception("更新数据库失败");
            }
        }
Пример #4
0
        /// <summary>
        /// 验证
        /// </summary>
        protected virtual void Validate()
        {
            //lock (lockobject) {
            var interfaceAccount = new InterfaceAccount()
            {
                MerchantCode = model.MerchantId
            };
            var _interfaceAccount = interfaceAccountRep.GetInterfaceAccount(interfaceAccount);
            //获取userRSA地址
            var    aesAddress = _interfaceAccount.CertAddress.Split('|')[1];
            string AesKey     = "";

            try {
                AesKey = Encrpty.RSADecrypt(model.EncryptKey, aesAddress, _interfaceAccount.CertPassword);
            }
            catch (Exception ex) {
                LoggerFactory.Instance.Logger_Debug(model.EncryptKey + "|" + aesAddress + "|" + _interfaceAccount.CertPassword + "|" + ex.Message, "RSADecryptError");
                var exstr = new RSADecryptException();
                throw new RSADecryptException(Common.ServiceCommon.GetExMessage(exstr.ErrorCode, "RSA解密失败!"));
            }
            //解密data
            var json = Encrpty.AESDecrypt(model.Data, AesKey);

            // 反序列化Json为参数对象
            this.Parameter = JsonConvert.DeserializeObject <P>(json);
            string MySign = GetMySign(_interfaceAccount.UserKey);

            //验证sign
            if (!this.Parameter.Sign.Equals(MySign))
            {
                var ex = new ApiSignException();
                throw new ApiSignException(Common.ServiceCommon.GetExMessage(ex.ErrorCode, "签名验证失败!"));
            }

            //验证数据
            if (!this.Parameter.IsValid)
            {
                var ex = new ValidationException();
                throw new ValidationException(Common.ServiceCommon.GetExMessage(ex.ErrorCode, this.Parameter.GetRuleViolationMessages()));
            }
            //}
        }
Пример #5
0
        /// <summary>
        /// 通过用户接口编号生成证书
        /// </summary>
        /// <returns></returns>
        public static InterfaceAccount GenerateUserCer(InterfaceAccount model)
        {
            #region 获取配置
            Random ran             = new Random();
            string certificateName = JsonConfig.JsonRead("cerName", "UserCenter") + model.ID + "_" + ran.Next(10, 1000) + "_" + DateTime.Now.Second;;
            string certificateTool = JsonConfig.JsonRead("cerTools", "UserCenter");
            string certificateAdd  = JsonConfig.JsonRead("cerAdderss", "UserCenter") + model.MerchantName + @"\";
            string certificatePass = JsonConfig.JsonRead("cerPassword", "UserCenter");
            #endregion

            #region 生成证书
            if (!Directory.Exists(certificateAdd))
            {
                Directory.CreateDirectory(certificateAdd);
            }
            certificateAdd += certificateName;
            CertificateHelper.CreateCertWithPrivateKey(certificateName, certificateTool);
            CertificateHelper.ExportToCerFile(certificateName, certificateAdd + ".cer");                        //公钥
            CertificateHelper.ExportToPfxFile(certificateName, certificateAdd + ".pfx", certificatePass, true); //私钥
            #endregion
            model.CertAddress  = certificateAdd + ".cer|" + certificateAdd + ".pfx";
            model.CertPassword = certificatePass;
            return(model);
        }
Пример #6
0
        /// <summary>
        /// 业务逻辑
        /// </summary>
        protected override void ExecuteMethod()
        {
            var rescount  = 0;
            var EOrderIds = new List <string>();

            EOrderIds = Parameter.EOrderIds.Split(',').ToList();
            if (!EOrderIds.Any())
            {
                throw new AggregateException("差旅订单号不存在或错误!");
            }
            foreach (var EOrderId in EOrderIds)
            {
                //获取对应订单号数据
                var enterpriseOrder = enterpriseOrderRep.GetEnterpriseOrder(EOrderId);
                if (enterpriseOrder == null)
                {
                    throw new AggregateException("差旅订单不存在!");
                }
                //判断是否返现
                if (enterpriseOrder.BackStatus == 1)
                {
                    throw new AggregateException("此订单已返现,无法审核!");
                }
                //判断分销是否存在
                var userAccount = new UserAccount()
                {
                    PayCenterCode = enterpriseOrder.PayCenterCode
                };
                var userAccountInfo = userAccountRep.GetUserAccount(userAccount);
                if (userAccountInfo == null)
                {
                    throw new AggregateException("分销不存在!");
                }
                //判断代理是否存在
                var interfaceAccount = new InterfaceAccount()
                {
                    MerchantCode = userAccountInfo.MerchantCode
                };
                var interfaceAccountlist = interfaceAccountRep.GetInterfaceAccount(interfaceAccount);
                if (interfaceAccountlist == null)
                {
                    throw new AggregateException("代理CODE不存在!");
                }
                //订单实体赋值
                var person = new Person()
                {
                    PersonName = enterpriseOrder.PassengerName,
                    CardType   = 0,
                    IdNumber   = enterpriseOrder.PassengerNo,
                    PersonType = 0,
                    TicketId   = enterpriseOrder.TicketNo,
                    BrithDay   = DateTime.Now
                };
                var PayModel = new PayRemoneyImportModel()
                {
                    AirCompanyCode = enterpriseOrder.Airline,
                    AirFee         = 50,
                    ArriveCode     = enterpriseOrder.ReachCity,
                    ArriveTime     = (DateTime)enterpriseOrder.DepartureTime,
                    Cabin          = "Y",
                    CallBackUrl    = "",
                    CompanyCode    = interfaceAccountlist.MerchantCode,
                    DepartCode     = enterpriseOrder.DepartureCity,
                    DepartureTime  = (DateTime)enterpriseOrder.DepartureTime,
                    EnterpriseID   = enterpriseOrder.EnterpriseWhiteListID.ToString(),
                    FlightNo       = enterpriseOrder.FlightNo,
                    FuelFee        = 0,
                    Ip             = "1.1.1.1",
                    IsRemoney      = 1,
                    IsValid        = true,
                    Mac            = "127.1.1.1",
                    OfficeNo       = "PEK474",
                    OrderPrice     = (decimal)enterpriseOrder.TicketAmount,
                    PassWord       = "******",
                    PayAccount     = enterpriseOrder.CashBackEmial,
                    PlateCode      = enterpriseOrder.OrderId,
                    PNR            = enterpriseOrder.Pnr,
                    Rebate         = 0,
                    RemoneyAccount = enterpriseOrder.CashBackEmial,
                    SomeRebate     = 0,
                    StartDate      = (DateTime)enterpriseOrder.DepartureTime,
                    TicketPrice    = (decimal)enterpriseOrder.TicketAmount,
                    TicketTime     = (DateTime)enterpriseOrder.TicketTime,
                    TicketType     = 0,
                    TimelyUrl      = "",
                    TimesTamp      = DateTime.Now.ToString(),
                    UserKey        = interfaceAccountlist.UserKey,
                    person         = person,
                };
                if (Parameter.ReviewState == 1)
                {
                    //调用返现
                    var orderPay = SubmitTravelPayRemoney(PayModel, userAccountInfo, interfaceAccountlist.CertAddress.Split('|')[0], interfaceAccountlist.CertPassword, interfaceAccountlist.MerchantCode, interfaceAccountlist.UserKey, JsonConfig.JsonRead("CgtPayApiUrl", "CgtPayApi"));
                    if (orderPay.Status != 100)
                    {
                        throw new AggregateException(orderPay.Message);
                    }
                }
                //修改订单审核状态
                var res = enterpriseOrderRiskRep.UpdateEnterpriseOrderRiskReviewState(EOrderId, Parameter.ReviewState, Parameter.RefuseReason, Parameter.ReviewUserId);
                if (res > 0)
                {
                    rescount++;
                }
            }
            this.Result.Data = rescount;
        }
Пример #7
0
        /// <summary>
        /// 修改商户启用禁用状态
        /// </summary>
        /// <param name="payCentCode"></param>
        /// <returns></returns>
        public int UpdateInterfaceAccountStatus(InterfaceAccount model)
        {
            string sql = @"set [Status]=@0 where MerchantCode=@1";

            return(CgtDB.GetInstance().Update <InterfaceAccount>(sql, model.Status, model.MerchantCode));
        }
Пример #8
0
 public int Update(InterfaceAccount model)
 {
     return(CgtDB.GetInstance().Update(model));
 }
Пример #9
0
 public void Insert(InterfaceAccount model)
 {
     CgtDB.GetInstance().Insert(model);
 }