WebForm之企业微信开发(3)——获取AccessToken,应用JsApiTicket,企业JsApiTicket
using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// WXWorkHelper 的摘要说明 /// </summary> public class WXWorkHelper { /// <summary> /// 获取最新的Jsapi应用签名 /// </summary> /// <param name="accessToken"></param> /// <returns>>获取不到返回空""</returns> public static string GetJsApiTicket_Application(string accessToken) { ZSql zs = new ZSql(); string strSql = "select ApiTicket_App_EXP,ApiTicket_App from WXWork_AccessToken where accessToken='" + accessToken + "'"; zs.Open(strSql); DateTime ApiTicket_App_EXP; if (zs.m_table.Rows[0]["ApiTicket_App_EXP"].ToString().Trim().Equals("")) { ApiTicket_App_EXP = Convert.ToDateTime(DateTime.Now.ToString("yyy-MM-dd HH:mm:ss")).AddDays(-1); } else { ApiTicket_App_EXP = Convert.ToDateTime(zs.m_table.Rows[0]["ApiTicket_App_EXP"].ToString().Trim()).AddMinutes(60); } var timeNow = DateTime.Now.ToString("yyy-MM-dd HH:mm:ss"); string parameters = "access_token=" + accessToken + "&type=agent_config"; if (ApiTicket_App_EXP.CompareTo(Convert.ToDateTime(timeNow)) < 0) { //https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token=ACCESS_TOKEN&type=agent_config string response = HttpHelper.HttpGet("https://qyapi.weixin.qq.com/cgi-bin/ticket/get", parameters); JObject jsonObj = (JObject)JsonConvert.DeserializeObject(response); string errcode = jsonObj["errcode"].ToString(); if (errcode.Equals("0")) { string newApiTicket_App = jsonObj["ticket"].ToString(); string strTime = DateTime.Now.ToString("yyy-MM-dd HH:mm:ss"); strSql = "update WXWork_AccessToken set ApiTicket_App_EXP='" + strTime + "',ApiTicket_App='" + newApiTicket_App + "' where accessToken='" + accessToken + "'"; zs.Close(); zs.Open(strSql); zs.Close(); return newApiTicket_App; } else { return ""; } } else { return zs.m_table.Rows[0]["ApiTicket_App"].ToString().Trim(); } } /// <summary> /// 获取最新的Jsapi企业签名 /// </summary> /// <param name="accessToken"></param> /// <returns>>获取不到返回空""</returns> public static string GetJsApiTicket_Enterprise(string accessToken) { ZSql zs = new ZSql(); string strSql = "select ApiTicket_Ent_EXP,ApiTicket_Ent from WXWork_AccessToken where accessToken='" + accessToken + "'"; zs.Open(strSql); DateTime ApiTicket_Ent_EXP; if (zs.m_table.Rows[0]["ApiTicket_Ent_EXP"].ToString().Trim().Equals("")) { ApiTicket_Ent_EXP = Convert.ToDateTime(DateTime.Now.ToString("yyy-MM-dd HH:mm:ss")).AddDays(-1); } else { ApiTicket_Ent_EXP = Convert.ToDateTime(zs.m_table.Rows[0]["ApiTicket_Ent_EXP"].ToString().Trim()).AddMinutes(60); } var timeNow = DateTime.Now.ToString("yyy-MM-dd HH:mm:ss"); string parameters = "access_token=" + accessToken; if (ApiTicket_Ent_EXP.CompareTo(Convert.ToDateTime(timeNow)) < 0) { string response = HttpHelper.HttpGet("https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket", parameters); JObject jsonObj = (JObject)JsonConvert.DeserializeObject(response); string errcode = jsonObj["errcode"].ToString(); if (errcode.Equals("0")) { string newApiTicket_Ent = jsonObj["ticket"].ToString(); string strTime = DateTime.Now.ToString("yyy-MM-dd HH:mm:ss"); strSql = "update WXWork_AccessToken set ApiTicket_Ent_EXP='" + strTime + "',ApiTicket_Ent='" + newApiTicket_Ent + "' where accessToken='" + accessToken + "'"; zs.Close(); zs.Open(strSql); zs.Close(); return newApiTicket_Ent; } else { return ""; } } else { return zs.m_table.Rows[0]["ApiTicket_Ent"].ToString().Trim(); } } /// <summary> /// 获取最新的Access Token /// </summary> /// <param name="corpid"></param> /// <param name="corpsecret"></param> /// <returns>获取不到返回空""</returns> public static string GetAccessToken(string corpid, string corpsecret) { ZSql zs = new ZSql(); string strSql = "select accessTokenEXP,accessToken from WXWork_AccessToken where corpid='" + corpid + "'"; zs.Open(strSql); DateTime accessTokenEXP; if (zs.m_table.Rows[0]["accessTokenEXP"].ToString().Trim().Equals("")) { accessTokenEXP = Convert.ToDateTime(DateTime.Now.ToString("yyy-MM-dd HH:mm:ss")).AddDays(-1); } else { accessTokenEXP = Convert.ToDateTime(zs.m_table.Rows[0]["accessTokenEXP"].ToString().Trim()).AddMinutes(60); } var timeNow = DateTime.Now.ToString("yyy-MM-dd HH:mm:ss"); string parameters = "corpid=" + corpid + "&corpsecret=" + corpsecret; if (accessTokenEXP.CompareTo(Convert.ToDateTime(timeNow)) < 0 || accessTokenEXP.Equals("")) { string response = HttpHelper.HttpGet("https://qyapi.weixin.qq.com/cgi-bin/gettoken", parameters); JObject jsonObj = (JObject)JsonConvert.DeserializeObject(response); string errcode = jsonObj["errcode"].ToString(); if (errcode.Equals("0")) { string newAccessToken = jsonObj["access_token"].ToString(); string strTime = DateTime.Now.ToString("yyy-MM-dd HH:mm:ss"); strSql = "update WXWork_AccessToken set accessTokenEXP='" + strTime + "',accessToken='" + newAccessToken + "' where corpid='" + corpid + "'"; zs.Close(); zs.Open(strSql); zs.Close(); return newAccessToken; } else { return ""; } } else { return zs.m_table.Rows[0]["accessToken"].ToString().Trim(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?