/// <summary> /// 向服务器发送post请求 返回服务器数据 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="reqName">接口名 /xxx/init</param> /// <param name="formFields">The form fields.</param> /// <param name="OnError">The on error.</param> /// <returns>T.</returns> public static T Post <T>(string reqName, Dictionary <string, string> formFields, Action <ResultModel> OnError = null) { try { if (formFields == null) { formFields = new Dictionary <string, string>(); } formFields["timestamp"] = StringHelper.GetTimeStamp(); //获取签名 formFields["signature"] = SignatureHelper.BuildSign(formFields, ApiConst.SecretKey); byte[] request_body = Encoding.UTF8.GetBytes(PrepareRequestBody(formFields)); var request = CreateRequest(ApiConst.Url + reqName, request_body); using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { return(GetResponse <T>(response, OnError)); } } catch (Exception ex) { log.Error(reqName + " " + ex.ToString()); ResultModel result = new ResultModel(); result.resultMsg = "连接服务器失败"; result.resultCode = 500; OnError?.Invoke(result); return(default(T)); } }
/// <summary> /// Ons the excute. /// </summary> /// <param name="filterContext">The context.</param> /// <returns>ApiRequestStatusCode.</returns> public ApiStatusCode onExcute(ActionExecutingContext filterContext) { ctx = filterContext.HttpContext; Dictionary <string, object> prams = GetParams(filterContext.HttpContext.Request); string requestSign = string.Empty; if (prams.ContainsKey("sign")) { requestSign = prams["sign"].ToString(); } if (string.IsNullOrEmpty(requestSign)) { return(ApiStatusCode.未授权); } Dictionary <string, string> paramters = new Dictionary <string, string>(); foreach (var item in prams) { if (item.Key != "sign" && !string.IsNullOrEmpty(item.Value.ToString())) { paramters.Add(item.Key.ToLower(), filterContext.HttpContext.Server.UrlDecode(item.Value.ToString())); } } string currentSign = SignatureHelper.BuildSign(paramters, ConstConfig.SECRET_KEY); if (!requestSign.Equals(currentSign)) { return(ApiStatusCode.未授权); } return(ApiStatusCode.OK); }
/// <summary> /// 获取优惠券信息 /// </summary> private void GetCouponInfo() { int uid = GetFormValue("userid", 0); int cpid = GetFormValue("cpid", 0); string requestSign = GetFormValue("sign", ""); Dictionary <string, string> paramters = new Dictionary <string, string>(); paramters.Add("userid", uid.ToString()); paramters.Add("cpid", cpid.ToString()); string currentSign = SignatureHelper.BuildSign(paramters, ConstConfig.SECRET_KEY); if (!requestSign.Equals(currentSign)) { json = JsonHelper.JsonSerializer(new ResultModel(ApiStatusCode.未授权)); } else { // CashCouponModel model = CouponLogic.GetModel(cpid, true); CashCouponLogModel model = CouponLogic.GetCashCouponLogIDByUserID(uid, cpid); if (model != null) { Dictionary <string, object> data = new Dictionary <string, object>(); data["time"] = model.StartTime.ToString("yyyy.MM.dd") + "-" + model.EndTime.ToString("yyyy.MM.dd"); data["money"] = model.Money; data["remark"] = model.Remark; data["url"] = "http://" + ctx.Request.Url.Host + string.Format("/app/getcoupon.html?userid={0}&cpid={1}&sign={2}", uid, cpid, currentSign); json = JsonHelper.JsonSerializer(new ResultModel(ApiStatusCode.OK, data)); } else { json = JsonHelper.JsonSerializer(new ResultModel(ApiStatusCode.现金券已领完)); } } }
/// <summary> /// 初始化浏览器 /// </summary> public void InitBrowser(string url, EventHandler <FrameLoadEndEventArgs> loadEnd) { if (browser == null) { CefSettings cfs = new CefSettings(); Dictionary <string, string> formFields = new Dictionary <string, string>(); formFields["token"] = MyUserInfo.LoginToken; //获取签名 string signature = SignatureHelper.BuildSign(formFields, ApiConst.SecretKey); string param = string.Format("hottecexe:token={0}&signature={1};", MyUserInfo.LoginToken, signature); cfs.UserAgent = param + "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"; Cef.Initialize(cfs, true, true); BrowserSettings settings = new BrowserSettings() { LocalStorage = CefState.Enabled, Javascript = CefState.Enabled, Plugins = CefState.Enabled, ImageLoading = CefState.Enabled, ImageShrinkStandaloneToFit = CefState.Enabled, WebGl = CefState.Enabled }; browser = new ChromiumWebBrowser(url); browser.BrowserSettings = settings; browser.RegisterJsObject("hotJs", new MyUserInfo(), false); browser.FrameLoadEnd += (s, e) => { loadEnd(s, e); }; browser.Dock = DockStyle.Fill; browser.LifeSpanHandler = new LifeSpanHandler(); browser.MenuHandler = new MenuHandler(); } else { browser.Load(url); } }
/// <summary> /// 获取Sign /// </summary> /// <param name="couponid">The couponid.</param> /// <returns>System.String.</returns> public string GetSign(int couponid) { Dictionary <string, string> paramters = new Dictionary <string, string>(); paramters.Add("couponid", couponid.ToString()); paramters.Add("userid", UserId.ToString()); return(SignatureHelper.BuildSign(paramters, ConstConfig.SECRET_KEY)); }
/// <summary> /// 设置userAgent /// </summary> public void SetUserAgent() { try { CefSettings cfs = new CefSettings(); Dictionary <string, string> formFields = new Dictionary <string, string>(); //formFields["taobaoName"] = MyUserInfo.TaobaoName; formFields["token"] = MyUserInfo.LoginToken; //获取签名 string signature = SignatureHelper.BuildSign(formFields, ApiConst.SecretKey); string param = string.Format("hottecexe:token={0}&signature={1};", MyUserInfo.LoginToken, signature); cfs.UserAgent = param + "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"; Cef.Initialize(cfs, true, true); } catch (Exception ex) { log.Error(ex); } }
/// <summary> /// 登录成功事件回调 /// </summary> /// <param name="jsons">The jsons.</param> private void Lw_LoginSuccessHandle(CookieCollection cookies) { try { loginSuccess = true; loginWindowsHide(); AddBrowser(); MyUserInfo.cookies = cookies; MyUserInfo.TaobaoName = lw.GetTaobaoName(); MyUserInfo.cookieJson = lw.GetCurrentCookiesToString(); Dictionary <string, string> formFields = new Dictionary <string, string>(); formFields["taobaoName"] = MyUserInfo.TaobaoName; formFields["token"] = MyUserInfo.LoginToken; //获取签名 string signature = SignatureHelper.BuildSign(formFields, ApiConst.SecretKey); string param = string.Format("token={0}&signature={1}&taobaoName={2}", MyUserInfo.LoginToken, signature, MyUserInfo.TaobaoName); loginForm.InitBrowser(ApiConst.Url + "/widePlace/login?" + param); if (loginTaobaoSuccessThread != null) { loginTaobaoSuccessThread.Abort(); loginTaobaoSuccessThread = null; } loginTaobaoSuccessThread = new System.Threading.Thread(() => { bindTaobao(MyUserInfo.cookieJson); }) { IsBackground = true }; loginTaobaoSuccessThread.Start(); } catch (Exception ex) { log.Error(ex); } }
/// <summary> /// 领取优惠券 /// </summary> private void CouponGet() { try { int uid = GetFormValue("userid", 0); int cpid = GetFormValue("cpid", 0); string username = GetFormValue("username", ""); string usermobile = GetFormValue("usermobile", ""); string requestSign = GetFormValue("sign", ""); Dictionary <string, string> paramters = new Dictionary <string, string>(); paramters.Add("userid", uid.ToString()); paramters.Add("cpid", cpid.ToString()); string currentSign = SignatureHelper.BuildSign(paramters, ConstConfig.SECRET_KEY); if (!requestSign.Equals(currentSign)) { json = JsonHelper.JsonSerializer(new ResultModel(ApiStatusCode.未授权)); } else { if (!RegexHelper.IsValidMobileNo(usermobile)) { json = JsonHelper.JsonSerializer(new ResultModel(ApiStatusCode.无效手机号)); return; } // lock (objCouponGetLocked) { CashCouponLogModel logModel = CouponLogic.GetCashCouponLogIDByUserID(uid, cpid); if (logModel != null) { using (TransactionScope scope = new TransactionScope()) { bool flag = CouponLogic.UpdateUserCashCouponGetLog(new CashCouponLogModel() { UserId = uid, ID = logModel.ID, Name = username, Mobile = usermobile }); if (flag) { Dictionary <string, object> dict = new Dictionary <string, object>(); dict["couponNo"] = logModel.CouponNo; json = JsonHelper.JsonSerializer(new ResultModel(ApiStatusCode.OK, dict)); CouponLogic.DeleteUserCashCoupon(logModel.CouponNo, logModel.CouponId, uid); var user = UserLogic.GetModel(uid); if (user != null) { CashCouponModel model = CouponLogic.GetModel(cpid, true); //添加优惠券领取操作日志 LogLogic.AddCouponLog(new LogBaseModel() { objId = model.CouponId, UserId = user.UserId, ShopId = logModel.ShopId, OperationType = 1,//0创建 1领取 2使用 Money = logModel.Money }); } try { var shopData = ShopLogic.GetShopModel(logModel.ShopId); if (shopData != null) { string errmsg = ""; string content = string.Format("您收到一张新的{0}元现金券,现金券使用码:{1},您可在{2}前到门店消费使用。门店地址:{3}", logModel.Money, logModel.CouponNo, logModel.StartTime.ToString("yyyy.MM.dd") + "-" + logModel.EndTime.ToString("yyyy.MM.dd"), shopData.ShopProv + shopData.ShopCity + shopData.ShopAddress + shopData.ShopName ); if (!string.IsNullOrEmpty(usermobile) && RegexHelper.IsValidMobileNo(usermobile)) { SmsLogic.send(1, usermobile, content, out errmsg); } } } catch (Exception ex) { LogHelper.Log(string.Format("Message:{0},StackTrace:{1}", ex.Message, ex.StackTrace), LogHelperTag.ERROR); } } else { json = JsonHelper.JsonSerializer(new ResultModel(ApiStatusCode.SERVICEERROR)); } scope.Complete(); } } else { json = JsonHelper.JsonSerializer(new ResultModel(ApiStatusCode.现金券已领完)); } } } } catch (Exception ex) { LogHelper.Log(string.Format("Message:{0},StackTrace:{1}", ex.Message, ex.StackTrace), LogHelperTag.ERROR); json = JsonHelper.JsonSerializer(new ResultModel(ApiStatusCode.SERVICEERROR)); } }