using System; using System.Net; using System.Text; using System.Web; using WeixinApi.Models; namespace WeixinApi { public class WeixinAction { #region 获取数据 private static string GetData(string url) { ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; WebClient wc = new WebClient(); wc.Credentials = CredentialCache.DefaultCredentials; wc.Encoding = Encoding.UTF8; return wc.DownloadString(url); } private static T GetData(string url) { try { return Newtonsoft.Json.JsonConvert.DeserializeObject(GetData(url)); } catch (Exception) { return default(T); } } #endregion #region Url编码 /// /// Url编码并对编码后的字符大写 /// /// /// private static string UrlEncode(string temp) { return UrlEncode(temp, Encoding.UTF8); } /// /// Url编码并对编码后的字符大写 /// /// /// /// private static string UrlEncode(string temp, Encoding encoding) { if (string.IsNullOrEmpty(temp)) return string.Empty; StringBuilder stringBuilder = new StringBuilder(); foreach (char item in temp) { string t = item.ToString(); string k = HttpUtility.UrlEncode(t, encoding); stringBuilder.Append(t == k ? t : k.ToUpper()); } return stringBuilder.ToString(); } #endregion public static WeixinTokenResponse GetWeixinToken(string appid, string secret) { return GetData(string.Format(WeixinConfig.ApiUrl.GetWeixinToken, appid, secret)); } public static JsapiTicketResponse GetJsapiTicket(string token) { return GetData(string.Format(WeixinConfig.ApiUrl.GetJsapiTicket, token)); } public static string GetOAuthBaseUrl(string appid, string redirect, string state = "") { return string.Format(WeixinConfig.OAuthUrl, appid, UrlEncode(redirect), "snsapi_base", state); } public static string GetOAuthUserInfoUrl(string appid, string redirect, string state = "") { return string.Format(WeixinConfig.OAuthUrl, appid, UrlEncode(redirect), "snsapi_userinfo", state); } public static AccessTokenResponse GetAccessToken(string appid, string secret, string code) { return GetData(string.Format(WeixinConfig.ApiUrl.GetAccessToken, appid, secret, code)); } /// /// 刷新access_token /// /// /// 通过access_token获取到的refresh_token参数 /// public static AccessTokenResponse RefreshToken(string appid, string token) { return GetData(string.Format(WeixinConfig.ApiUrl.RefreshToken, appid, token)); } public static UserInfoResponse GetUserInfo(string token, string openid) { return GetData(string.Format(WeixinConfig.ApiUrl.GetUserInfo, token, openid)); } } }