/// <summary> /// 验证 /// </summary> protected void Validate() { //var _interfaceAccount = interfaceAccountRep.GetInterfaceAccount(new InterfaceAccount() { MerchantCode = model.MerchantId }); var _interfaceAccount = interfaceAccount.GetModel(i => i.MerchantCode == model.MerchantId).FirstOrDefault(); if (_interfaceAccount == null) { throw new MerchantException("MerchantCode"); } var aesAddress = _interfaceAccount.CertAddress.Split('|')[1]; if (PlatformID.Win32NT != Environment.OSVersion.Platform) { //aesAddress = "/home/dev/" + aesAddress.Substring(3).Replace('\\', '/'); aesAddress = "/app/CGT.Api/" + aesAddress.Substring(15).Replace('\\', '/'); } //解密data var json = Encrpty.AESDecrypt(model.Data, Encrpty.RSADecrypt(model.EncryptKey, aesAddress, _interfaceAccount.CertPassword)); // 反序列化Json为参数对象 this.Parameter = JsonConvert.DeserializeObject <P>(json); //验证sign if (!this.Parameter.Sign.Equals(GetMySign(_interfaceAccount.UserKey))) { throw new ApiSignException("Sign"); } //验证数据 if (!this.Parameter.IsValid) { throw new ValidationException("IsValid", this.Parameter.GetRuleViolationMessages()); } }
/// <summary> /// 数据加密密 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="model"></param> /// <returns>RequestBaseModel</returns> public PayRequestBaseModel apiResult <T>(T model, string Path, string Pwd, string MerchantId, string UserKey) where T : RequestBase, new() { PayRequestBaseModel baseModel = new PayRequestBaseModel(); string certAdd = @"" + Path; model.UserKey = UserKey; baseModel.MerchantId = MerchantId; string certPwd = Pwd; model.Ip = "127.0.0.1"; model.Mac = "F4-6D-04-35-B5-A1"; model.TimesTamp = DateTime.Now.ToString("yyyy-MM-dd HH:ss:dd"); string jsonData = JsonConvert.SerializeObject(model); model.Sign = Encrpty.MD5Encrypt(jsonData + model.UserKey); string aesKey = Cryptor.GenerateAESKey(); string d = Encrpty.AESEecrypt(JsonConvert.SerializeObject(model), aesKey); aesKey = Encrpty.RSAEcrypt(aesKey, certAdd); baseModel.Data = d; baseModel.EncryptKey = aesKey; return(baseModel); }
/// <summary> /// 返回信息 /// </summary> /// <param name="response"></param> /// <returns></returns> private ExecResult <TResult> ParseResponse(string response) { var result = new ExecResult <TResult>(); var view = JsonConvert.DeserializeObject <ResponseSignView>(response); if (!string.IsNullOrWhiteSpace(view.data)) { var signresponse = Encrpty.AESDecrypt(view.data, JsonConfig.JsonRead("aesKey", "Installment")); var responseView = JsonConvert.DeserializeObject <ResponseView>(signresponse); if (responseView.result == "100" || responseView.result == "200") { Collection.DDD.Logger.LoggerFactory.Instance.Logger_Info(string.Format("response:{0},data:{1}", response, responseView.data), "InstallmentService"); result.Result = JsonConvert.DeserializeObject <TResult>(responseView.data); } else { result.Success = false; result.Message = responseView.errorMessage; } } else { result.Success = false; result.Message = view.sign; } return(result); }
//private byte[] _key = ASCIIEncoding.ASCII.GetBytes("12345678"); //private byte[] _iv = ASCIIEncoding.ASCII.GetBytes("12345678"); //private static readonly ICrypto Cryptor = new DESCrypto(); //public NodeEncrpty nodeServices { get; set; } //public Common() { // IServiceCollection services = new ServiceCollection(); // var path = Directory.GetParent(Directory.GetCurrentDirectory()); // services.AddNodeServices(options => { // options.ProjectPath = path + @"\NodeEncrpty"; // options.WatchFileExtensions = new[] { ".js" }; // }); // services.AddSingleton<NodeEncrpty>(); // IServiceProvider serviceProvider = services.BuildServiceProvider(); // nodeServices = serviceProvider.GetService<NodeEncrpty>(); // nodeServices.nodeServices = serviceProvider.GetService<INodeServices>(); //} /// <summary> /// 发送请求 /// </summary> /// <param name="client">tcp连接</param> /// <param name="response">请求信息</param> public static string SendRequest(TcpClient client, string request) { try { if (!client.Connected) { return(""); } // 报文数据加密 var messageData = MessageEncoding.GetBytes(Encrpty.EncryptDES(request, Des_Key, Des_Iv)); // 处理报文内容长度标识 var lengthData = MessageEncoding.GetBytes(NumberPackger.Package(messageData.Length)); // 获取到基础连接的流; 这里需要特别注意,不能这里用完后,就马上关闭或释放该流 var stream = client.GetStream(); // 先发送报文长度标识 stream.Write(lengthData, 0, lengthData.Length); // 发送报文正文内容 stream.Write(messageData, 0, messageData.Length); //byte[] bytes = new byte[1024]; //int bytesRead = stream.Read(bytes, 0, bytes.Length); //return Encoding.ASCII.GetString(bytes, 0, bytesRead); return(ReceiveResponse(client)); } catch (Exception ex) { CGT.DDD.Logger.LoggerFactory.Instance.Logger_Error(ex, "SuspendedServiceErorr"); return(""); } }
public CheckTicketProcessor(string uuid) { _Hashcode = CheckTicketHashcode; _uuid = uuid; _outstyle = "4"; _Key = CheckTicketKey; _sign = Encrpty.MD5Encrypt(_Hashcode + _outstyle + _uuid + _Key + DateTime.Now.ToString("yyyyMMdd")).ToLower(); }
public void Init(CheckTicketRequestView param) { param.CompanyId = Convert.ToInt32(JsonConfig.JsonRead("CheckTicketForACompanyId", "CheckTicketForA")); param.RequestTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); _param = JsonConvert.SerializeObject(param); _key = JsonConfig.JsonRead("CheckTicketForAKey", "CheckTicketForA"); _sign = Encrpty.MD5Encrypt(_param + _key).ToUpper(); }
/// <summary> /// sign加密 /// </summary> /// <param name="contents"></param> /// <returns></returns> public string Sign(Dictionary <string, object> contents) { var sortedContents = string.Join("&", from key in contents.Keys where key != "sign" && !key.Equals("sign_type") orderby key select key.ToLower() + "=" + (contents[key] ?? string.Empty)); return(Encrpty.MD5Encrypt(sortedContents.Trim('&') + "cgt").ToLower()); }
/// <summary> /// 执行操作form提交数据 /// </summary> /// <returns></returns> public string ExecuteForm(RequestTradePay pay) { var UrlNotify = JsonConfig.JsonRead("bg_ret_url", "Dingshuapay"); Encoding utf8 = Encoding.UTF8; string checkstr = JsonConfig.JsonRead("version", "Dingshuapay") + JsonConfig.JsonRead("cust_id", "Dingshuapay") + pay.OrderId + pay.AcctIdcard + pay.Subject + JsonConfig.JsonRead("gate_id", "Dingshuapay") + pay.TransAmt + pay.CardId + pay.MobileNo + pay.AcctName + pay.AcctIdcard + pay.BankNum + pay.AcctCardno + pay.TradeRate + pay.DrawFee + pay.RetUrl + this.UrlEncode(UrlNotify, utf8, true) + pay.MerPriv + pay.Extension + JsonConfig.JsonRead("userkey", "Dingshuapay"); string check_value = Encrpty.MD5Encrypt(checkstr); StringBuilder sbHtml = new StringBuilder(); sbHtml.Append("<form action='" + JsonConfig.JsonRead("DingshuapayUrl", "Dingshuapay") + "' method='post' name='merRecvRequest' >"); sbHtml.Append("<input type='hidden' name='version' value='" + JsonConfig.JsonRead("version", "Dingshuapay") + "'/>"); sbHtml.Append("<input type='hidden' name='cust_id' value='" + JsonConfig.JsonRead("cust_id", "Dingshuapay") + "'/>"); sbHtml.Append("<input type='hidden' name='ord_id' value='" + pay.OrderId + "'/>"); sbHtml.Append("<input type='hidden' name='sub_mer_id' value='" + pay.AcctIdcard + "'/>"); sbHtml.Append("<input type='hidden' name='subject' value='" + pay.Subject + "'/>"); sbHtml.Append("<input type='hidden' name='gate_id' value='" + JsonConfig.JsonRead("gate_id", "Dingshuapay") + "'/>"); sbHtml.Append("<input type='hidden' name='trans_amt' value='" + pay.TransAmt + "'/>"); sbHtml.Append("<input type='hidden' name='card_id' value='" + pay.CardId + "'/>"); sbHtml.Append("<input type='hidden' name='mobile_no' value='" + pay.MobileNo + "'/>"); sbHtml.Append("<input type='hidden' name='acct_name' value='" + pay.AcctName + "'/>"); sbHtml.Append("<input type='hidden' name='acct_idcard' value='" + pay.AcctIdcard + "'/>"); sbHtml.Append("<input type='hidden' name='bank_num' value='" + pay.BankNum + "'/>"); sbHtml.Append("<input type='hidden' name='acct_cardno' value='" + pay.AcctCardno + "'/>"); sbHtml.Append("<input type='hidden' name='trade_rate' value='" + pay.TradeRate + "'/>"); sbHtml.Append("<input type='hidden' name='draw_fee' value='" + pay.DrawFee + "'/>"); sbHtml.Append("<input type='hidden' name='ret_url' value='" + pay.RetUrl + "'/>"); sbHtml.Append("<input type='hidden' name='bg_ret_url' value='" + this.UrlEncode(UrlNotify, utf8, true) + "'/>"); sbHtml.Append("<input type='hidden' name='mer_priv' value='" + pay.MerPriv + "'/>"); sbHtml.Append("<input type='hidden' name='extension' value='" + pay.Extension + "'/>"); sbHtml.Append("<input type='hidden' name='check_value' value='" + check_value + "'/>"); sbHtml.Append("</form>"); sbHtml.Append("<script>document.forms['merRecvRequest'].submit();</script> "); //CGT.DDD.Logger.LoggerFactory.Instance.Logger_Info(string.Format(@"提交参数:{0},提交加密参数:{1}", json, sbHtml.ToString()), "ReapalRecharge"); return(sbHtml.ToString()); }
/// <summary> /// 获取MySign /// </summary> private string GetMySign(string userkey) { string MySign = Encrpty.MD5Encrypt(string.Format(@"AgentId={0}&TimesTamp={1}&Ip={2}&Mac={3}{4}" , this.Parameter.AgentId , this.Parameter.TimesTamp , this.Parameter.Ip , this.Parameter.Mac , userkey)); return(MySign); }
public PreRegistrationProcessor(List <PreRegistrationRequestView> lstticket) { _Hashcode = CheckTicketHashcode; _NotifyURL = CheckTicketNotifyURL; _uuid = ""; _lstticket = lstticket; _Key = CheckTicketKey; string str = _Hashcode + _NotifyURL + _uuid + _Key + DateTime.Now.ToString("yyyyMMdd"); _sign = Encrpty.MD5Encrypt(str).ToLower(); }
/// <summary> /// 获取MySign /// </summary> private string GetMySign(string userkey) { //MySign =(MerchantId = 12345 & TimesTamp = 2017 - 01 - 25 10:21:49 & Ip=167.0.12.31 & MAC = aaaa)+UserKey的值 string MySign = Encrpty.MD5Encrypt(string.Format(@"MerchantId={0}&TimesTamp={1}&Ip={2}&Mac={3}{4}" , model.MerchantId , this.Parameter.TimesTamp , this.Parameter.Ip , this.Parameter.Mac , userkey)); return(MySign); }
/// <summary> /// 业务逻辑 /// </summary> protected override void ExecuteMethod() { var MerchantPwd = Encrpty.MD5Pwd(this.Parameter.MerchantPwd); var user = new UserAccount() { UserName = this.Parameter.ReapayMerchantNo, Email = this.Parameter.ReapayMerchantNo, UserPwd = MerchantPwd, RealName = this.Parameter.Contact, Phone = this.Parameter.Phone, Ip = "127.0.0.1", Status = 2, ReapalMerchantId = this.Parameter.ReapalMerchantId, CreateTime = DateTime.Now, UserType = 3, PartnerCode = "00", Vip = 0, IsOnVip = 0, TicketDelayEmail = this.Parameter.ReapayMerchantNo, MerchantCode = this.Parameter.MerchantCode, UserCompanyName = this.Parameter.MerchantName, IdNumber = "", BankCardNumber = "", LCCReceivesEmail = "", BillLateFee = 0, GraceCount = 0, OverdueCount = 0 }; userAccountRep.Insert(user); user.PayCenterCode = this.Parameter.MerchantCode + user.UserId.ToString(); var interfaceUser = interfaceAccountRep.GetInterfaceAccount(new InterfaceAccount() { MerchantCode = this.Parameter.MerchantCode }); updateMerchantProcessor.InitData(interfaceUser.ReapayMerchantNo, interfaceUser.MerchantCode, this.Parameter.ReapayMerchantNo, this.Parameter.ReapalMerchantId, this.Parameter.MerchantName, user.PayCenterCode); var result = updateMerchantProcessor.Execute(); if (!result.Success) { throw new Exception(result.Message); } user.Status = 0; int returnVal = userAccountRep.Update(user); if (returnVal <= 0) { throw new Exception("更新数据库失败"); } }
/// <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())); } //} }
private string PrepareRequest() { var encoding = Encoding.GetEncoding(ParameterEncodingName); var parametersJson = PrepareRequestCore(); var md5Str = Encrpty.MD5Encrypt(parametersJson + JsonConfig.JsonRead("md5Key", "Installment")); var aesStr = Encrpty.AESEecrypt(parametersJson, JsonConfig.JsonRead("aesKey", "Installment")); Collection.DDD.Logger.LoggerFactory.Instance.Logger_Info(string.Format("提交参数:{0}", parametersJson), "InstallmentService"); var request = new RequestView() { data = aesStr, midPlatform = JsonConfig.JsonRead("md5Key", "midPlatform"), sign = md5Str, version = JsonConfig.JsonRead("md5Key", "version") }; return(JsonConvert.SerializeObject(request)); }
/// <summary> /// 接收请求数据 /// </summary> /// <param name="client">tcp连接</param> /// <remarks> /// 该方法会一直阻塞,直到接收到数据 /// </remarks> private static string ReceiveResponse(TcpClient client) { try { while (true) { if (client.Available > 0) { // 先获取报文长度标识 var lengthData = ReceiveData(client, NumberPackger.Bits); // 处理报文内容长度标识 var messageLength = NumberPackger.Unpackage(lengthData); var ReceiveDataStr = ReceiveData(client, messageLength); // 通过报文长度标识,再获取报文正文内容 return(Encrpty.DecryptDES(ReceiveDataStr, Des_Key, Des_Iv)); } } } catch (Exception ex) { CGT.DDD.Logger.LoggerFactory.Instance.Logger_Error(ex, "SuspendedServiceErorr"); } return(null); }