130 lines
5.3 KiB
C#
130 lines
5.3 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.IO;
|
||
using System.Net;
|
||
using System.Web;
|
||
|
||
/// <summary>
|
||
/// globle 的摘要说明
|
||
/// </summary>
|
||
public class globle
|
||
{
|
||
public class Global
|
||
{
|
||
private static string appid = "wxbff2f5d49ec4be77";
|
||
private static string appsecret = "f271039e68a914fd1cd92cf00f79e20f";
|
||
|
||
//application 名称冲突 不能一样的名字
|
||
public static Models.WeiXin.AccessToken getAccessToken
|
||
{
|
||
get
|
||
{
|
||
//每次都获取新的 疾控与oa 获取同一个公众号的accesstoken相互影响
|
||
var at = new Models.WeiXin.AccessToken();
|
||
WebClient wc = new WebClient();
|
||
at.access_token= wc.DownloadString("http://oa.dcqcdc.com/dccdc/zzj/getaccesstoken");
|
||
return at;
|
||
HttpContext hc = HttpContext.Current;
|
||
if (hc.Application["AccessTokenYM1"] == null)
|
||
{
|
||
var token = _getAccessToken();
|
||
hc.Application["AccessTokenYM1"] = token;
|
||
hc.Application["access_token_expires_in_ym1"] = DateTime.Now.AddSeconds(7000);
|
||
return token;
|
||
}
|
||
else
|
||
{
|
||
DateTime dt = (DateTime)hc.Application["access_token_expires_in_ym1"];
|
||
if (dt >= DateTime.Now)
|
||
return hc.Application["AccessTokenYM1"] as Models.WeiXin.AccessToken;
|
||
else
|
||
{
|
||
var token = _getAccessToken();
|
||
hc.Application["AccessTokenYM1"] = token;
|
||
hc.Application["access_token_expires_in_ym1"] = DateTime.Now.AddSeconds(7000);
|
||
return token;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
private static Models.WeiXin.AccessToken _getAccessToken()
|
||
{
|
||
WebClient wc = new WebClient();
|
||
var stream = wc.OpenRead("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + appsecret + "");
|
||
var sr = new StreamReader(stream);
|
||
string token = sr.ReadToEnd();
|
||
sr.Close();
|
||
stream.Dispose();
|
||
var accesstoken = Newtonsoft.Json.JsonConvert.DeserializeObject<Models.WeiXin.AccessToken>(token);
|
||
if (string.IsNullOrEmpty(accesstoken.access_token))
|
||
{
|
||
Models.WeiXin.error err = Newtonsoft.Json.JsonConvert.DeserializeObject<Models.WeiXin.error>(token);
|
||
Exception wx = new Exception(token);
|
||
//wx.Message = token;
|
||
throw (wx);
|
||
}
|
||
return accesstoken;
|
||
}
|
||
|
||
|
||
public static string jsapi_ticket
|
||
{
|
||
get
|
||
{
|
||
HttpContext hc = HttpContext.Current;
|
||
if (hc.Application["jsapi_ticket"] == null || hc.Application["AccessToken"] == null)
|
||
{
|
||
var token = _getjsapi_ticket();
|
||
hc.Application["jsapi_ticket"] = token;
|
||
hc.Application["jsapi_ticket_expires_in"] = DateTime.Now.AddSeconds(7000);
|
||
return token;
|
||
}
|
||
else
|
||
{
|
||
DateTime dt = (DateTime)hc.Application["jsapi_ticket_expires_in"];
|
||
if (dt >= DateTime.Now)
|
||
return hc.Application["jsapi_ticket"].ToString();
|
||
else
|
||
{
|
||
var token = _getjsapi_ticket();
|
||
hc.Application["jsapi_ticket"] = token;
|
||
hc.Application["jsapi_ticket_expires_in"] = DateTime.Now.AddSeconds(7000);
|
||
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<string, object> jsDict = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(jsapi);
|
||
|
||
return jsDict["ticket"].ToString();
|
||
}
|
||
|
||
#region 获取微信用户信息
|
||
public static string GetOAuthOpenId(string code)
|
||
{
|
||
string url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appid + "&secret=" + appsecret + "&code=" + code + "&grant_type=authorization_code";
|
||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
|
||
Stream stream = response.GetResponseStream(); //获取响应的字符串流
|
||
if (stream != null)
|
||
{
|
||
StreamReader sr = new StreamReader(stream); //创建一个stream读取流
|
||
string html = sr.ReadToEnd(); //从头读到尾,放到字符串html李米
|
||
sr.Close();
|
||
stream.Close();
|
||
return html;
|
||
}
|
||
return "";
|
||
}
|
||
#endregion
|
||
}
|
||
} |