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();
}
}
}