Example #1
0
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            //将当前日志组件传递到其他中间件
            this.HttpContext.Items.Add("__requestLogger", this.Logger);

            string path = context.HttpContext.Request.Path.Value.ToLower();

            if (!path.Contains("/test/") && !WhitelistActions.Contains(path))
            {
                WebParams webParams = new WebParams(context.HttpContext.Request);

                #region 安全检查、passport验证

                string passport = webParams["passport"];

                if (string.IsNullOrEmpty(passport))
                {
                    context.Result = this.FuncResult(new APIReturn(10009, "缺少passport参数"));
                }
                else if (passport != DC2Conf.Passport)
                {
                    context.Result = this.FuncResult(new APIReturn(10750, "passport参数错误"));
                }

                #endregion
            }
        }
Example #2
0
        static void TestParams()
        {
            WebParams wp    = new WebParams();
            int       count = wp["count1"].ToInt();

            Console.WriteLine(count);
        }
Example #3
0
        public IActionResult get_wx_order()
        {
            APIReturn apiReturn = null;
            WebParams ciac      = new WebParams(Request);

            ciac.Add("action", "wxpayms_getordid");
            CallResult cr = WebHttpClient.InvokeHttp("if2017", "dk", "wxpayms_getordid", HttpMethod.Get, ciac);

            if ((cr.Code != 0) || string.IsNullOrEmpty(cr.Message))
            {
                return(this.FuncResult(new APIReturn(10000, cr.Message)));
            }
            string[] msgs = cr.Message.Split(',');
            if ((int.Parse(msgs[0]) != 0) || (msgs.Length != 9))
            {
                return(this.FuncResult(new APIReturn(10000, string.Format($"{cr.Code}:{cr.Message}"))));
            }
            if (ciac["image"] == "image")
            {
                MemoryStream ms = new MemoryStream();
                GetQRCode(msgs[8], ms);
                ArraySegment <byte> data = new ArraySegment <byte>();
                ms.TryGetBuffer(out data);
                string str15 = Convert.ToBase64String(data.Array);
                msgs[8] = str15;
            }
            Hashtable ht = new Hashtable();

            ht["orderid"] = msgs[1];
            ht["code"]    = msgs[8];
            apiReturn     = new APIReturn(0, "", ht);
            return(this.FuncResult(apiReturn));
        }
Example #4
0
        public MondidoPage()
        {
            InitializeComponent();
            WebParams data = new WebParams();

            //Your account settings, fetch it from https://admin.mondido.com/en/settings#api
            var merchantId  = "233";
            var secret      = "$2a$10$gU.z.9QNc8VSGYqcJSOhv.";        ///Shh, should be stored in your backend!
            var paymentRef  = Guid.NewGuid().ToString();
            var customerRef = "123";
            var amount      = "10.00";
            var currency    = "eur";


            //Find out what to send in the documentation
            //https://doc.mondido.com/hosted#outgoing
            data.Add("payment_ref", paymentRef);
            data.Add("customer_ref", customerRef);
            data.Add("amount", amount);
            data.Add("currency", currency);
            data.Add("merchant_id", merchantId);
            data.Add("success_url", "https://api.mondido.com/success");       // need to be a working URL for IOS
            data.Add("error_url", "https://api.mondido.com/fail");            // need to be a working URL for IOS
            data.Add("test", "true");
            data.Add("authorize", "false");
            data.Add("store_card", "false");

            var device = @"{model: '" + CrossDeviceInfo.Current.Model + "', platform: '" + CrossDeviceInfo.Current.Platform + "', version: '" + CrossDeviceInfo.Current.Version + "', id: '" + CrossDeviceInfo.Current.Id + "'}";

            string metadataStr = @"{ customer: {name: 'Tester', email: '*****@*****.**'}, device: " + device + "}";
            var    metadata    = JObject.Parse(metadataStr);

            data.Add("metadata", System.Net.WebUtility.UrlEncode(metadata.ToString()));

            string itemsStr = "[{artno: '" + Guid.NewGuid().ToString() + "', description: 'An item', amount: '10.00', vat: '25.00', qty: '1' }]";
            var    items    = JArray.Parse(itemsStr);

            data.Add("items", System.Net.WebUtility.UrlEncode(items.ToString()));


            // The hash *should* be generated in your backend for security reasons.
            // Recipe: MD5(merchant_id + payment_ref + customer_ref + amount + currency + test + secret)
            var hash = (merchantId + paymentRef + customerRef + amount + currency + "test" + secret);

            data.Add("hash", hash.ToMD5());

            //Init the payment object
            payment = new Mondido.Base.Payment(
                browser,
                data,
                OnSuccess,
                OnFail
                );

            //execute the payment
            payment.ExecuteHostedPayment();
        }
Example #5
0
        /// <summary>
        ///  获取路由数据
        /// </summary>
        /// <param name="httpContext"></param>
        /// <returns></returns>

        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            RouteData data = new RouteData(this, new WebRouteHandler());
            string    url  = httpContext.Request.RawUrl;

            // 获取 controller 和 action
            string[] paths = url.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
            if (paths == null || paths.Length < 2)
            {
                // 转到默认页
                return(null);
            }
            List <KeyValuePair <string, object> > args = null;

            // 获取调用参数
            if (httpContext.Request.HttpMethod.ToUpper() == "POST" || url.IndexOf('?') > 0)
            {
                WebParams wp = new WebParams();
                args = new List <KeyValuePair <string, object> >(wp.Count);
                foreach (string k in wp.Keys)
                {
                    KeyValuePair <string, object> kv = new KeyValuePair <string, object>(k, wp[k]);
                    args.Add(kv);
                }
            }
            else if (paths.Length > 2)
            {
                // 如果参数是以  / 线进行分隔进行传递
                int len = paths.Length;
                args = new List <KeyValuePair <string, object> >(len);
                int index = 1;
                for (int i = 2; i < len; i++)
                {
                    KeyValuePair <string, object> kv = new KeyValuePair <string, object>(index.ToString(), paths[i]);
                    args.Add(kv);
                    index++;
                }
            }

            // 创建调用路径
            data.Values.Add("controller", paths[0]);
            data.Values.Add("action", paths[1]);
            data.Values.Add("args", args);

            return(data);
        }
Example #6
0
        public static string GetRequestID(HttpContext context)
        {
            if (context.Items.ContainsKey(RequestIDKey))
            {
                return(context.Items[RequestIDKey].ToString());
            }
            WebParams webParams = new WebParams(context.Request);

            if (webParams.ContainsKey(RequestIDKey))
            {
                return(webParams[RequestIDKey]);
            }
            if (context.Request.Headers.ContainsKey(RequestIDKey))
            {
                return(context.Request.Headers[RequestIDKey].ToString());
            }

            string requestID = Guid.NewGuid().ToString("N");

            context.Items.Add(RequestIDKey, requestID);
            return(requestID);
        }
        public Task CreateValueProviderAsync(ValueProviderFactoryContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var       request    = context.ActionContext.HttpContext.Request;
            WebParams webParams  = new WebParams(request);
            string    encryptKey = "__encryptdata";

            string encryptData = request.Query.ContainsKey(encryptKey) ? request.Query[encryptKey].ToString() : string.Empty;

            if (encryptData.IsNullOrEmpty() && request.HasFormContentType)
            {
                encryptData = request.Form[encryptKey];
            }

            bool      isEncryptDatas   = webParams.ContainsKey(encryptKey);
            bool      isDecryptSucceed = false;
            Exception decryptException = null;
            IDictionary <string, string> dicDecryptDatas = new Dictionary <string, string>();

            if (encryptData.IsNotNullOrEmpty())
            {
                try
                {
                    //生成密钥
                    //string rsaKey = RSAEncrypt.GenerateKey();
                    string rsaKey = IFConfigReader.RSAPrivateKey;
                    //通过密钥创建对象
                    RSAEncrypt privateRSA = new RSAEncrypt(rsaKey);
                    //解密
                    string decryptData = privateRSA.Decrypt(encryptData);

                    //导出公钥
                    //string publicKey = privateRSA.ExportParameters(false);
                    //通过公钥加密
                    //RSAEncrypt publicRSA = new RSAEncrypt(publicKey);

                    foreach (var item in decryptData.Split('&'))
                    {
                        string[] values = item.Split('=');
                        dicDecryptDatas.Add(values[0], values[1]);
                    }
                    isDecryptSucceed = true;
                }
                catch (Exception ex)
                {
                    decryptException = ex;
                    isDecryptSucceed = false;
                }
                if (dicDecryptDatas.Count() > 0)
                {
                    AddResultsToHttpContext(context, isEncryptDatas, isDecryptSucceed, decryptException, dicDecryptDatas);
                    return(AddValueProviderAsync(context, dicDecryptDatas));
                }
            }

            AddResultsToHttpContext(context, isEncryptDatas, isDecryptSucceed, decryptException, dicDecryptDatas);
            return(TaskCache.CompletedTask);
        }
Example #8
0
        public IActionResult func_reg(RegModel regModel)
        {
            string acct          = regModel.email;
            string pass          = regModel.pass ?? string.Empty;
            string encrypt       = regModel.encrypt ?? string.Empty;
            bool   passisencrypt = regModel.encrypt == "True" || regModel.encrypt == "true";
            string tname         = regModel.tname ?? string.Empty;
            string mobile        = regModel.mobile ?? string.Empty;
            string idcard        = regModel.idcard ?? string.Empty;
            string gatesrc       = regModel.gatesrc ?? "urs";
            string pstype        = regModel.pstype ?? "game";
            int    qq            = regModel.qq;
            string ipstr         = regModel.ip ?? string.Empty;
            string regip         = ipstr;
            bool   hasip         = !string.IsNullOrWhiteSpace(ipstr) && ipstr.Length > 7;
            int    ip            = ip2long(ipstr);

            string          ipkey        = string.Format("check-reg-ip-{0}", ip);
            object          obj          = UrsHelper.Cache_GetObj(ipkey);
            List <DateTime> li_ipreglist = new List <DateTime>();

            if (obj != null && obj is List <DateTime> )
            {
                li_ipreglist = (List <DateTime>)obj;
                int regcount = 0;
                for (int i = li_ipreglist.Count - 1; i >= 0; i--)
                {
                    DateTime d = li_ipreglist[i];
                    if (Math.Abs((DateTime.Now - d).TotalSeconds) > 900)
                    {
                        li_ipreglist.RemoveAt(i);
                    }
                    else
                    {
                        regcount++;
                    }
                }
                if (regcount >= 101)//放得较宽,以防如3G网之类的可能有问题
                {
                    this.FuncResult(new APIReturn(10320, "注册频繁"));
                }
            }

            string vcode = regModel.vcode;

            if (regModel.ismodenopass)
            {
                pass          = "******";
                passisencrypt = true;
            }
            string passmd5 = passisencrypt ? pass : UrsHelper.MD5(pass);

            if (passmd5 == "0ab7dea79b1de3d0816f8b5cbbb36367")
            {
                //Operator.CHT_ExtData["ismodenopass"] = true;
                regModel.ismodenopass = true;
            }

            WebParams webParans = new WebParams(this.Request);
            var       dicValues = webParans.Where(e => e.Key.StartsWith("extarg_")).ToDictionary(e => e.Key, e => e.Value);
            Hashtable cht_args  = new Hashtable(dicValues);

            if (qq <= 0)
            {
                qq = 0;
            }
            string friendname = UrsHelper.Lib_Friend_GetName(acct);

            if (friendname.Length > 0)
            {
                this.FuncResult(new APIReturn(10350, string.Format("{0}帐号不能在这里进行注册操作", friendname)));
            }

            string[] acctspt = acct.Split('@');
            string   domain  = acctspt[1].ToLower();

            if (domain.EndsWith("2980.com") && domain != "2980.com" ||
                domain == "2925.com" ||
                acct.ToLower().IndexOf("@henhaoji.com") != -1 ||
                acct.ToLower().IndexOf("@duoyi.com") != -1)
            {
                this.FuncResult(new APIReturn(10355, "该类邮箱不支持注册,请选用其他邮箱"));
            }
            if (friendname != string.Empty)
            {
                this.FuncResult(new APIReturn(10326, string.Format("{0}帐号无需注册,可直接登录", friendname)));
            }
            if (!isemail(acct))
            {
                this.FuncResult(new APIReturn(10302, "帐号格式错误"));
            }
            if (!isvpass(pass, passisencrypt))
            {
                this.FuncResult(new APIReturn(10305, "密码格式错误"));
            }
            if (!string.IsNullOrWhiteSpace(idcard) && idcard.Length > 0 && !isidcard(idcard))
            {
                this.FuncResult(new APIReturn(10711, "身份证格式错误"));
            }
            if (!string.IsNullOrWhiteSpace(tname) && tname.Length > 0 && !isvname(tname))
            {
                this.FuncResult(new APIReturn(10720, "姓名格式错误"));
            }
            if (!string.IsNullOrWhiteSpace(mobile) && mobile.Length >= 1 && !IsMobile(mobile))
            {
                this.FuncResult(new APIReturn(10701, "手机号格式错误"));
            }
            if (regModel.qq.ToString().Length >= 5 && (qq <= 0))
            {
                this.FuncResult(new APIReturn(10730, "QQ号格式错误"));
            }
            if (passisencrypt)
            {
                if (pass.Length != 32)
                {
                    this.FuncResult(new APIReturn(10000, $"参数错误pass={pass}"));
                }
                pass = UrsHelper.MD5(pass.Substring(7, 16)).Substring(3, 16);
            }
            return(func_exec_reg(regModel, false, ip, acct, pass, passisencrypt, tname, idcard, mobile, qq, gatesrc, pstype, cht_args.ToJson(), regip));
        }
Example #9
0
        public IActionResult dk_proxy()
        {
            WebParams ciac       = new WebParams(Request);
            string    runtest    = ciac["runtest"];
            string    account    = ciac["hd_account"];
            string    gate       = ciac["hd_product"];
            string    gatetarget = ciac["gatetarget"];
            int       way        = ciac["hd_way"].ToInt();
            int       port       = ciac["hd_port"].ToInt();
            string    money      = ciac["hd_money"];
            int       amount     = ciac["hd_amount"].ToInt();
            string    ctype      = ciac["hd_buy_type"];
            int       server     = ciac["server"].ToInt();
            int       userid     = ciac["userid"].ToInt();
            int       reason     = ciac["reason"].ToInt();
            string    gateid     = ciac["hd_gateid"];

            object[] args     = new object[] { account, gate, way, port, money, ctype, server, userid, amount, reason, gatetarget };
            string   s        = string.Format("account={0}&gate={1}&way={2}&port={3}&money={4}&ctype={5}&server={6}&userid={7}&amount={8}&reason={9}&gatetarget={10}", args);
            string   df_token = ciac["df_token"];

            if (df_token.Length == 32)
            {
                string   rolename  = ciac["df_rname"];
                string   ursnumber = ciac["df_ursnumber"];
                int      payuser   = ciac["df_payuser"].ToInt();
                int      showid    = ciac["showid"].ToInt();
                object[] objArray2 = new object[] { s, df_token, ursnumber, rolename, payuser, showid };
                s = string.Format("{0}&df_token={1}&df_ursnumber={2}&df_rname={3}&df_payuser={4}&showid={5}", objArray2);
            }
            string urlbase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(s));
            string url       = "http://pay.duoyi.com/";

            switch (way)
            {
            case (int)EWAY.神州付:
                url = string.Format("http://{1}/sales/ecard/szf/szfs2.aspx?args={0}", urlbase64, DKDomain);
                break;

            case (int)EWAY.支付宝:
                url = string.Format("http://{1}/sales/ecard/alipay/alipays2.aspx?args={0}", urlbase64, DKDomain);
                break;

            case (int)EWAY.微信:
                url = string.Format("http://{1}/sales/ecard/wxpayms/wxpays2.aspx?args={0}", urlbase64, DKDomain);
                break;
            }
            if ((way == (int)EWAY.微信) && (runtest == "true"))
            {
                url = string.Format("http://{1}/sales/ecard/wxpayms/wxpays2.aspx?args={0}", urlbase64, "runtest.dk.duoyi.com");
            }
            if (way == (int)EWAY.银联)
            {
                url = string.Format("http://{2}/sales/ecard/cnpay/cnp_s2.aspx?gateid={1}&args={0}", urlbase64, gateid, DKDomain);
            }
            if (way == (int)EWAY.JCard)
            {
                url = string.Format("http://{1}/sales/ecard/jcard/jcard_s2.aspx?args={0}", urlbase64, DKDomain);
            }
            return(FuncResult(new APIReturn(0, url)));
        }
Example #10
0
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            ip = context.HttpContext.Request.Host.Host;
            //将当前日志组件传递到其他中间件
            this.HttpContext.Items.Add("__requestLogger", Logger);

            HttpRequest request   = context.HttpContext.Request;
            WebParams   webParams = new WebParams(request);

            string path = request.Path.Value.ToLower();

            if (!path.Contains("/test/") && !WhitelistActions.Contains(path))
            {
                #region 签名验证

                if (context.Result == null)
                {
                    string signKey            = IFConfigReader.SignKey;
                    NameValueCollection param = new NameValueCollection();
                    foreach (var webParam in webParams)
                    {
                        param.Add(webParam.Key, webParam.Value.ToString());
                    }
                    string uriString = $"{request.Scheme}://{request.Host}{request.Path}";
                    Uri    uri       = new Uri(uriString);
                    if (!UrlValidator.ValidatorSign(uri, param, signKey))
                    {
                        APIReturn apiResult = new APIReturn(-93, "签名验证失败");
                        context.Result = this.FuncResult(apiResult);
                    }
                }

                #endregion

                #region 时间戳验证

                string stampKey = "timestamp";
                if (context.Result == null && webParams.ContainsKey(stampKey))
                {
                    long     timeStamp = webParams[stampKey].ToLong();
                    DateTime urlTime   = DateTimeHelper.StampToDateTime(timeStamp);
                    if (urlTime.AddMinutes(3) < DateTime.Now)
                    {
                        APIReturn apiResult = new APIReturn(-92, "URL已失效");
                        context.Result = this.FuncResult(apiResult);
                    }
                }

                #endregion

                #region 加密验证

                /*  暂不启用加密验证
                 *
                 * if (context.Result == null)
                 * {
                 *  if (!this.ReqData.IsEncryptDatas || !this.ReqData.IsDecryptSucceed)
                 *  {
                 *      APIReturn apiResult = new APIReturn(-91, "解密参数失败" + (this.ReqData.DecryptException != null ? $"({this.ReqData.DecryptException.Message})" : string.Empty));
                 *      context.Result = this.FuncResult(apiResult);
                 *  }
                 * }
                 *
                 */

                #endregion
            }
        }
Example #11
0
 /// <summary>
 /// Fail callback
 /// </summary>
 /// <param name="p">List of paramas comping from the URL</param>
 void OnFail(WebParams p)
 {
     DisplayAlert("Failed", "Payment is failed!", "Ok");
     payment.ExecuteHostedPayment();             //try again
 }
Example #12
0
 /// <summary>
 /// Success callback.
 /// </summary>
 /// <param name="p">List of paramas comping from the URL</param>
 void OnSuccess(WebParams p)
 {
     browser.IsVisible = false;
     DisplayAlert("Success", "Payment is done!", "Thanks");
     //continue with your business here
 }