/// <summary> /// 发送消息 /// </summary> /// <param name="corpid">公司ID</param> /// <param name="secret">密匙</param> /// <param name="json">要发送的JSON数据包</param> /// <returns>返回一个JSON包</returns> public string SendMsg(string corpid, string secret, string json) { //先获取到access_token string accessToken = Get_access_token.GetAccessToken(corpid, secret); string urlFormat = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={0}"; var url = string.Format(urlFormat, accessToken); string str_json = HttpRequestUtil.RequestUrlSendMsg(url, "POST", json); return(str_json); }
/// <summary> /// 获取access_token的方法 /// </summary> /// <param name="corpid">企业ID</param> /// <param name="secret">应用的凭证密钥</param> /// <returns></returns> public static string GetAccessToken(string corpid, string secret) { //先判断配置文件web.config中是否已经有了Access_Token信息,并且判断距离上次获取的时间是否超过了2小时 //没有超过的话,不需要获取,直接使用。超出的话,重新获取,并修改web.config中的配置信息。 //先读取时间信息 //最后一次获取Access_Token的时间 string dllPath = string.Format( "{0}\\{1}.dll", AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory, "wx_api"); Configuration config = ConfigurationManager.OpenExeConfiguration(dllPath); AppSettingsSection oSection = null; oSection = config.GetSection("appSettings") as AppSettingsSection; string dt = oSection.Settings["Access_Token_3_Time"].Value.ToString(); DateTime token_dt = Convert.ToDateTime(oSection.Settings["Access_Token_3_Time"].Value.ToString()); //现在的时间 DateTime now_dt = DateTime.Now; //获取两个时间相差的秒数 TimeSpan timeSpan = now_dt - token_dt; double c = timeSpan.TotalSeconds; //如果相差大于7200秒的话,重新获取,否则直接使用上次获取的Access_Token值 if (c > 7200.00) { string strJson = HttpRequestUtil.RequestUrl(string.Format("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}", corpid, secret)); //反序列化json,把json串序列化成model包,使用了json.net工具包。 Access_token access_Token = JsonConvert.DeserializeObject <Access_token>(strJson); if (access_Token.errcode == 0) { //修改配置文件中的节点为新的数据 oSection.Settings["Access_Token_3_Time"].Value = now_dt.ToString("yyy-MM-dd HH:mm:ss"); oSection.Settings["Access_Token_3"].Value = access_Token.access_token; config.Save(ConfigurationSaveMode.Modified); return(access_Token.access_token); } else { return(access_Token.errmsg); } } else { return(oSection.Settings["Access_Token_3"].Value.ToString()); } }
/// <summary> /// 先获取到access_token 然后使用access_token和传递进来的code去获取用户信息 /// </summary> /// <param name="corpid">企业ID</param> /// <param name="secret">应用的凭证密钥</param> /// <param name="code">Code</param> /// <returns></returns> public static string GetUserinfo(string corpid, string secret, string code) { //先获取到access_token string str_token = Get_access_token.GetAccessToken(corpid, secret); //使用access_token和code去获取用户信息 返回一个Model对象 string strJson = string.Empty; strJson = HttpRequestUtil.RequestUrl(string.Format("https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token={0}&code={1}", str_token, code)); //反序列化json,把json串序列化成model包,使用了json.net工具包。 Userinfo userinfo = JsonConvert.DeserializeObject <Userinfo>(strJson); if (userinfo.errcode == 0) { return(strJson); } else { return(userinfo.errmsg); } }