WebForm之企业微信开发(3)——获取AccessToken,应用JsApiTicket,企业JsApiTicket

发布时间 2023-03-28 13:45:46作者: 嬉戏_人间
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()).AddSeconds(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()).AddSeconds(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()).AddSeconds(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();
            }
        }
    }