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(); }
/// <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); }
/// <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("更新数据库失败"); } }
/// <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())); } //} }
/// <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); }
/// <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; }
/// <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)); }
public int Update(InterfaceAccount model) { return(CgtDB.GetInstance().Update(model)); }
public void Insert(InterfaceAccount model) { CgtDB.GetInstance().Insert(model); }