Ejemplo n.º 1
0
        /// <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());
            }
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        //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("");
            }
        }
Ejemplo n.º 5
0
 public CheckTicketProcessor(string uuid)
 {
     _Hashcode = CheckTicketHashcode;
     _uuid     = uuid;
     _outstyle = "4";
     _Key      = CheckTicketKey;
     _sign     = Encrpty.MD5Encrypt(_Hashcode + _outstyle + _uuid + _Key + DateTime.Now.ToString("yyyyMMdd")).ToLower();
 }
Ejemplo n.º 6
0
 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();
 }
Ejemplo n.º 7
0
        /// <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());
        }
Ejemplo n.º 8
0
        /// <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());
        }
Ejemplo n.º 9
0
        /// <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);
        }
Ejemplo n.º 10
0
        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();
        }
Ejemplo n.º 11
0
        /// <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);
        }
Ejemplo n.º 12
0
        /// <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("更新数据库失败");
            }
        }
Ejemplo n.º 13
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("更新数据库失败");
            }
        }
Ejemplo n.º 14
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()));
            }
            //}
        }
Ejemplo n.º 15
0
        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));
        }
Ejemplo n.º 16
0
 /// <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);
 }