using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Reflection; using System.Web; namespace dccdc.Common { public class Global { public static HttpApplicationState MyApplication { get; set; } public static string getParmValue(string name) { return new BLL.Common().getParm_Value(name, "", ""); } //public const string appid = "wxb79cf945835c07e3"; //public const string secret = "e7ff8220aaae27b4dc88862bdf0a0087"; public static Models.WeiXin.AccessToken getAccessToken { get { HttpContext hc = HttpContext.Current; if (MyApplication["AccessToken"] == null) { var token = _getAccessToken(); MyApplication["AccessToken"] = token; MyApplication["access_token_expires_in"] = DateTime.Now.AddSeconds(7000); return token; } else { DateTime dt = (DateTime)MyApplication["access_token_expires_in"]; if (dt >= DateTime.Now) return MyApplication["AccessToken"] as Models.WeiXin.AccessToken; else { var token = _getAccessToken(); MyApplication["AccessToken"] = token; MyApplication["access_token_expires_in"] = DateTime.Now.AddSeconds(7000); return token; } } } } /// /// 微信AppID /// public static string AppId { get { var hc = HttpContext.Current; if (MyApplication["AppId"] != null) return (string)MyApplication["AppId"]; var appid = new BLL.Common().getParm_Value("appid", "wxfde2d6cb809cb42c", "appid"); //var appid = new BLL.Common().getParm_Value("appid", "wxb79cf945835c07e3", "appid"); MyApplication["AppId"] = appid; return appid; } } /// /// 微信App秘钥 /// public static string Appsecret { get { var hc = HttpContext.Current; if (MyApplication["Appsecret"] != null) return (string)MyApplication["Appsecret"]; //var appsecret = new BLL.Common().getParm_Value("appsecret", "e7ff8220aaae27b4dc88862bdf0a0087", "appsecret"); var appsecret = new BLL.Common().getParm_Value("appsecret", "6176304e5d22281fb1f49a8d364bcce2", "appsecret"); MyApplication["Appsecret"] = appsecret; return appsecret; } } /// /// 疫苗微信App秘钥 /// public static string YMAppsecret { get { var hc = HttpContext.Current; if (MyApplication["YMAppsecret"] != null) return (string)MyApplication["YMAppsecret"]; var appsecret = new BLL.Common().getParm_Value("ymappsecret", "f271039e68a914fd1cd92cf00f79e20f", "疫苗appsecret"); MyApplication["YMAppsecret"] = appsecret; return appsecret; } } /// /// 公众号原始ID /// public static string MyId { get { var hc = HttpContext.Current; if (MyApplication["MyId"] != null) return (string)MyApplication["MyId"]; var appid = new BLL.Common().getParm_Value("myid", "gh_7a3845c111a0", "myid"); MyApplication["MyId"] = appid; return appid; } } public static string QYYMYY { get { return new BLL.Common().getParm_Value("QYYMYY", "false", "启用疫苗预约"); } } //gh_fdc67998c8e4 /// /// /// /// 疫苗公众号原始ID /// /// public static string YMMyId { get { var hc = HttpContext.Current; if (MyApplication["YMMyId"] != null) return (string)MyApplication["YMMyId"]; var appid = new BLL.Common().getParm_Value("YMMyId", "gh_fdc67998c8e4", "YMMyId"); MyApplication["YMMyId"] = appid; return appid; } } /// /// 商户秘钥 /// public static string Secret { get { var hc = HttpContext.Current; if (MyApplication["Secret"] != null) return (string)MyApplication["Secret"]; //var secret = new BLL.Common().getParm_Value("secret", "e7ff8220aaae27b4dc88862bdf0a0087", "secret"); var secret = new BLL.Common().getParm_Value("secret", "6176304e5d22281fb1f49a8d364bcce2", "secret"); MyApplication["Secret"] = secret; return secret; } } public static string jsapi_ticket { get { HttpContext hc = HttpContext.Current; if (MyApplication["jsapi_ticket"] == null || MyApplication["AccessToken"] == null) { var token = _getjsapi_ticket(); MyApplication["jsapi_ticket"] = token; MyApplication["jsapi_ticket_expires_in"] = DateTime.Now.AddSeconds(7000); return token; } else { DateTime dt = (DateTime)MyApplication["jsapi_ticket_expires_in"]; if (dt >= DateTime.Now) return MyApplication["jsapi_ticket"].ToString(); else { var token = _getjsapi_ticket(); MyApplication["jsapi_ticket"] = token; MyApplication["jsapi_ticket_expires_in"] = DateTime.Now.AddSeconds(7000); return token; } } } } public static string jsapi_ticketYM { get { var commdb = new DAL.Common(); var dts = commdb.getParm_Value("jsapi_ticketYM_expires_in", "", ""); DateTime dt; if(DateTime.TryParse(dts,out dt)) { if (dt >= DateTime.Now) return commdb.getParm_Value("jsapi_ticketYM", "", "");// MyApplication["jsapi_ticketYM"].ToString(); else { var token = _getjsapi_ticketYM(); //MyApplication["jsapi_ticketYM"] = token; //MyApplication["jsapi_ticketYM_expires_in"] = DateTime.Now.AddSeconds(7000); commdb.setParm_Value("jsapi_ticketYM", token); commdb.setParm_Value("jsapi_ticketYM_expires_in", DateTime.Now.AddSeconds(7000).ToString("yyyy-MM-dd HH:mm:ss")); return token; } } else { var token = _getjsapi_ticketYM(); commdb.setParm_Value("jsapi_ticketYM", token); commdb.setParm_Value("jsapi_ticketYM_expires_in", DateTime.Now.AddSeconds(7000).ToString("yyyy-MM-dd HH:mm:ss")); return token; } } } public static string Token { get { var hc = HttpContext.Current; if (MyApplication["Token"] != null) return (string)MyApplication["Token"]; var Token = new BLL.Common().getParm_Value("Token", "32481440f2fac994106475dc96082534", "微信Token"); MyApplication["Token"] = Token; return Token; } } private static string _getjsapi_ticket() { var token = getAccessToken; WebClient wc = new WebClient(); var stream = wc.OpenRead("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + token.access_token + "&type=jsapi"); var sr = new StreamReader(stream); string jsapi = sr.ReadToEnd(); sr.Close(); stream.Dispose(); Dictionary jsDict = Newtonsoft.Json.JsonConvert.DeserializeObject>(jsapi); return jsDict["ticket"].ToString(); } private static string _getjsapi_ticketYM() { var token = getAccessTokenYM; WebClient wc = new WebClient(); var stream = wc.OpenRead("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + token.access_token + "&type=jsapi"); var sr = new StreamReader(stream); string jsapi = sr.ReadToEnd(); sr.Close(); stream.Dispose(); Dictionary jsDict = Newtonsoft.Json.JsonConvert.DeserializeObject>(jsapi); return jsDict["ticket"].ToString(); } private static Models.WeiXin.AccessToken _getAccessToken() { WebClient wc = new WebClient(); string address = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + AppId + "&secret=" + Secret + ""; var stream = wc.OpenRead(address); var sr = new StreamReader(stream); string token = sr.ReadToEnd(); sr.Close(); stream.Dispose(); var accesstoken = Newtonsoft.Json.JsonConvert.DeserializeObject(token); if (string.IsNullOrEmpty(accesstoken.access_token)) { Models.WeiXin.error err = Newtonsoft.Json.JsonConvert.DeserializeObject(token); Exception wx = new Exception(token); //wx.Message = token; throw (wx); } return accesstoken; } public static int jgid { get { int topid = (HttpContext.Current.Session["loginUser"] as Models.ERPUser).top_id; if (topid == 0) topid = 49; return topid; } } #region 疫苗相关微信参数设置 /// /// 疫苗用 /// public static string YMToken { get { var hc = HttpContext.Current; if (MyApplication["YMToken"] != null) return (string)MyApplication["YMToken"]; var Token = new BLL.Common().getParm_Value("YMToken", "32481440f2fac994106475dc96082534", "疫苗微信Token"); MyApplication["YMToken"] = Token; return Token; } } public static string EncodingAESKey { get { var hc = HttpContext.Current; if (MyApplication["EncodingAESKey"] != null) return (string)MyApplication["EncodingAESKey"]; var AESKey = new BLL.Common().getParm_Value("EncodingAESKey", "SxEkpCrknFC7E1UeOX0xAgeNWc21lTGBA7u42boTCBT", "微信YMEncodingAESKey"); MyApplication["EncodingAESKey"] = AESKey; return AESKey; } } public static string YMEncodingAESKey { get { var hc = HttpContext.Current; if (MyApplication["YMEncodingAESKey"] != null) return (string)MyApplication["YMEncodingAESKey"]; var AESKey = new BLL.Common().getParm_Value("YMEncodingAESKey", "SxEkpCrknFC7E1UeOX0xAgeNWc21lTGBA7u42boTCBT", "疫苗微信YMEncodingAESKey"); MyApplication["YMEncodingAESKey"] = AESKey; return AESKey; } } public static string YMAppId { get { var hc = HttpContext.Current; if (MyApplication["YMAppId"] != null) return (string)MyApplication["YMAppId"]; var appid = new BLL.Common().getParm_Value("YMAppId", "wxbff2f5d49ec4be77", "疫苗微信YMAppId"); MyApplication["YMAppId"] = appid; return appid; } } public static Models.WeiXin.AccessToken getAccessTokenYM { get { //每次都获取新的 疾控与oa 获取同一个公众号的accesstoken相互影响 //return _getAccessTokenYM(); var dbcomm= new DAL.Common(); var expirse_in_ym = dbcomm.getParm_Value("access_token_expires_in_ym", "", "疫苗access_token到期时间"); DateTime dt ; if(DateTime.TryParse(expirse_in_ym,out dt)) { if (dt >= DateTime.Now) { var at = new Models.WeiXin.AccessToken(); at.access_token = dbcomm.getParm_Value("AccessTokenYM", "", ""); return at; } else { var token = _getAccessTokenYM(); //MyApplication["AccessTokenYM"] = token; //MyApplication["access_token_expires_in_ym"] = DateTime.Now.AddSeconds(7000); dbcomm.setParm_Value("AccessTokenYM", token.access_token); dbcomm.setParm_Value("access_token_expires_in_ym", DateTime.Now.AddSeconds(7000).ToString("yyyy-MM-dd HH:mm:ss")); return token; } } else { var token = _getAccessTokenYM(); //MyApplication["AccessTokenYM"] = token; //MyApplication["access_token_expires_in_ym"] = DateTime.Now.AddSeconds(7000); dbcomm.setParm_Value("AccessTokenYM", token.access_token); dbcomm.setParm_Value("access_token_expires_in_ym", DateTime.Now.AddSeconds(7000).ToString("yyyy-MM-dd HH:mm:ss")); return token; } } } private static Models.WeiXin.AccessToken _getAccessTokenYM() { log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Info("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + YMAppId + "&secret=" + YMSecret + ""); WebClient wc = new WebClient(); var stream = wc.OpenRead("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + YMAppId + "&secret=" + YMSecret + ""); var sr = new StreamReader(stream); string token = sr.ReadToEnd(); sr.Close(); stream.Dispose(); var accesstoken = Newtonsoft.Json.JsonConvert.DeserializeObject(token); if (string.IsNullOrEmpty(accesstoken.access_token)) { Models.WeiXin.error err = Newtonsoft.Json.JsonConvert.DeserializeObject(token); Exception wx = new Exception(token); //wx.Message = token; throw (wx); } return accesstoken; } /// /// 商户秘钥 /// public static string YMSecret { get { var hc = HttpContext.Current; if (MyApplication["YMSecret"] != null) return (string)MyApplication["YMSecret"]; var secret = new BLL.Common().getParm_Value("YMSecret", "c4771a672c379f1f83191d266e986bb8", "YMSecret"); //secret = "f271039e68a914fd1cd92cf00f79e20f"; MyApplication["YMSecret"] = secret; return secret; } } internal static byte[] getqm(int sprid1) { //throw new NotImplementedException(); var bll = new ERPUserBll(); string signstr = bll.GetSignation(sprid1); if (string.IsNullOrEmpty(signstr)) { string tn = bll.GetTrueNameById(sprid1); if (string.IsNullOrEmpty(tn)) { return null; } else { Bitmap b = new Bitmap(60, 20); var g = Graphics.FromImage(b); g.FillRectangle(Brushes.White, 0, 0, 60, 20); g.DrawString(tn, new Font("宋体", 14), Brushes.Black, new PointF(2, 2)); MemoryStream ms = new MemoryStream(); b.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); return ms.ToArray(); } } else { string oapath = System.Configuration.ConfigurationManager.AppSettings["OAPath"]; if (Directory.Exists(oapath)) { oapath += signstr; if (File.Exists(oapath)) { System.Drawing.Bitmap b = new System.Drawing.Bitmap(oapath); MemoryStream ms = new MemoryStream(); b.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); return ms.ToArray(); } else { return null; } } else { return null; } } } #endregion #region 艾滋病相关微信参数设置 /// /// 艾滋病用 /// public static string InfectionToken { get { var hc = HttpContext.Current; if (MyApplication["InfectionToken"] != null) return (string)MyApplication["InfectionToken"]; var Token = new BLL.Common().getParm_Value("InfectionToken", "5324ae192cb68f112c07fb30a0aef9a7", "艾滋病防控微信Token"); MyApplication["InfectionToken"] = Token; return Token; } } public static string InfectionEncodingAESKey { get { var hc = HttpContext.Current; if (MyApplication["InfectionEncodingAESKey"] != null) return (string)MyApplication["InfectionEncodingAESKey"]; var AESKey = new BLL.Common().getParm_Value("InfectionEncodingAESKey", "2vHQyZIgkt1dnLAeECtu80nssEXJ3hoX2CoIPdDTkIX", "艾滋病防控微信EncodingAESKey"); MyApplication["InfectionEncodingAESKey"] = AESKey; return AESKey; } } public static string InfectionAppId { get { var hc = HttpContext.Current; if (MyApplication["InfectionAppId"] != null) return (string)MyApplication["InfectionAppId"]; var appid = new BLL.Common().getParm_Value("InfectionAppId", "wxc200f29cab08b4ca", "艾滋病防控微信AppId"); MyApplication["InfectionAppId"] = appid; return appid; } } /// /// 艾滋病微信App秘钥 /// public static string InfectionAppsecret { get { var hc = HttpContext.Current; if (MyApplication["InfectionAppsecret"] != null) return (string)MyApplication["InfectionAppsecret"]; var appsecret = new BLL.Common().getParm_Value("InfectionAppsecret", "c4771a672c379f1f83191d266e986bb8", "艾滋病防控微信Appsecret"); MyApplication["InfectionAppsecret"] = appsecret; return appsecret; } } //gh_fdc67998c8e4 /// /// /// /// 疫苗公众号原始ID /// /// public static string InfectionMyId { get { var hc = HttpContext.Current; if (MyApplication["InfectionMyId"] != null) return (string)MyApplication["InfectionMyId"]; var appid = new BLL.Common().getParm_Value("InfectionMyId", "gh_f598661759c4", "InfectionMyId"); MyApplication["InfectionMyId"] = appid; return appid; } } public static string qrcode_ticketInfection(string recommend) { var token = getAccessTokenInfection; var data = new { expire_seconds = 7200, action_name = "QR_SCENE", action_info = new { scene = new { scene_id = recommend } } }; WebClient wc = new WebClient(); wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); var result = wc.UploadData("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + token.access_token, System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(data))); string jg = System.Text.Encoding.UTF8.GetString(result); Dictionary jsDict = Newtonsoft.Json.JsonConvert.DeserializeObject>(jg); if (jsDict.ContainsKey("ticket")) { return "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + jsDict["ticket"].ToString(); //return jsDict["url"].ToString(); } else { return ""; } } public static string jsapi_ticketInfection { get { HttpContext hc = HttpContext.Current; if (MyApplication["jsapi_ticketInfection"] == null || MyApplication["AccessTokenInfection"] == null) { var token = _getjsapi_ticketInfection(); MyApplication["jsapi_ticketInfection"] = token; MyApplication["jsapi_ticket_expires_inInfection"] = DateTime.Now.AddSeconds(7000); return token; } else { DateTime dt = (DateTime)MyApplication["jsapi_ticket_expires_inInfection"]; if (dt >= DateTime.Now) return MyApplication["jsapi_ticketInfection"].ToString(); else { var token = _getjsapi_ticketInfection(); MyApplication["jsapi_ticketInfection"] = token; MyApplication["jsapi_ticket_expires_inInfection"] = DateTime.Now.AddSeconds(7000); return token; } } } } private static string _getjsapi_ticketInfection() { var token = getAccessTokenInfection; WebClient wc = new WebClient(); var stream = wc.OpenRead("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + token.access_token + "&type=jsapi"); var sr = new StreamReader(stream); string jsapi = sr.ReadToEnd(); sr.Close(); stream.Dispose(); Dictionary jsDict = Newtonsoft.Json.JsonConvert.DeserializeObject>(jsapi); return jsDict["ticket"].ToString(); } public static Models.WeiXin.AccessToken getAccessTokenInfection { get { HttpContext hc = HttpContext.Current; if (MyApplication["AccessTokenInfection"] == null) { var token = _getAccessTokenInfection(); MyApplication["AccessTokenInfection"] = token; MyApplication["access_token_expires_in_infection"] = DateTime.Now.AddSeconds(7000); return token; } else { DateTime dt = (DateTime)MyApplication["access_token_expires_in_infection"]; if (dt >= DateTime.Now) return MyApplication["AccessTokenInfection"] as Models.WeiXin.AccessToken; else { var token = _getAccessTokenInfection(); MyApplication["AccessTokenInfection"] = token; MyApplication["access_token_expires_in_infection"] = DateTime.Now.AddSeconds(7000); return token; } } } } private static Models.WeiXin.AccessToken _getAccessTokenInfection() { WebClient wc = new WebClient(); var stream = wc.OpenRead("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + InfectionAppId + "&secret=" + InfectionAppsecret + ""); var sr = new StreamReader(stream); string token = sr.ReadToEnd(); sr.Close(); stream.Dispose(); var accesstoken = Newtonsoft.Json.JsonConvert.DeserializeObject(token); if (string.IsNullOrEmpty(accesstoken.access_token)) { Models.WeiXin.error err = Newtonsoft.Json.JsonConvert.DeserializeObject(token); Exception wx = new Exception(token); //wx.Message = token; throw (wx); } return accesstoken; } /// /// 商户秘钥 /// public static string InfectionSecret { get { var hc = HttpContext.Current; if (MyApplication["InfectionSecret"] != null) return (string)MyApplication["InfectionSecret"]; var secret = new BLL.Common().getParm_Value("InfectionSecret", "f271039e68a914fd1cd92cf00f79e20f", "InfectionSecret"); MyApplication["InfectionSecret"] = secret; return secret; } } /// /// 商户秘钥 /// public static string InfectionMchId { get { var hc = HttpContext.Current; if (MyApplication["InfectionMchId"] != null) return (string)MyApplication["InfectionMchId"]; var mchid = new BLL.Common().getParm_Value("InfectionMchId", "1485492392", "InfectionMchId"); MyApplication["InfectionMchId"] = mchid; return mchid; } } #endregion #region 艾防小程序相关参数 /// /// 艾滋病小程序App秘钥 /// public static string InfectionWXAppId { get { var hc = HttpContext.Current; if (MyApplication["InfectionAppId"] != null) return (string)MyApplication["InfectionWXAppId"]; var appid = new BLL.Common().getParm_Value("InfectionWXAppId", "wx40da82259f98861d", "艾滋病防控小程序AppId"); MyApplication["InfectionWXAppId"] = appid; return appid; } } /// /// 艾滋病小程序App秘钥 /// public static string InfectionWXAppsecret { get { var hc = HttpContext.Current; if (MyApplication["InfectionAppsecret"] != null) return (string)MyApplication["InfectionWXAppsecret"]; var appsecret = new BLL.Common().getParm_Value("InfectionWXAppsecret", "56fc56ebbe59358d91375328f44a6397", "艾滋病防控小程序Appsecret"); MyApplication["InfectionWXAppsecret"] = appsecret; return appsecret; } } #endregion #region public static bool checkpower(string key) { if (HttpContext.Current.Session["QuanXian"] != null) { string qxs = HttpContext.Current.Session["QuanXian"].ToString(); if (!string.IsNullOrEmpty(qxs)) { return qxs.Contains(key); } else { return false; } } else { return false; } } #endregion /// /// 微信支付Model /// public class WxZiFu { public string appId { get; set; } public string timeStamp { get; set; } public string nonceStr { get; set; } public string package { get; set; } public string signType { get; set; } public string paySign { get; set; } public int State { get; set; } } } }