WeixinAction.cs
3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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<T>(string url)
{
try
{
return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(GetData(url));
}
catch (Exception)
{
return default(T);
}
}
#endregion
#region Url编码
/// <summary>
/// Url编码并对编码后的字符大写
/// </summary>
/// <param name="temp"></param>
/// <returns></returns>
private static string UrlEncode(string temp)
{
return UrlEncode(temp, Encoding.UTF8);
}
/// <summary>
/// Url编码并对编码后的字符大写
/// </summary>
/// <param name="temp"></param>
/// <param name="encoding"></param>
/// <returns></returns>
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<WeixinTokenResponse>(string.Format(WeixinConfig.ApiUrl.GetWeixinToken, appid, secret));
}
public static JsapiTicketResponse GetJsapiTicket(string token)
{
return GetData<JsapiTicketResponse>(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<AccessTokenResponse>(string.Format(WeixinConfig.ApiUrl.GetAccessToken, appid, secret, code));
}
/// <summary>
/// 刷新access_token
/// </summary>
/// <param name="appid"></param>
/// <param name="token">通过access_token获取到的refresh_token参数</param>
/// <returns></returns>
public static AccessTokenResponse RefreshToken(string appid, string token)
{
return GetData<AccessTokenResponse>(string.Format(WeixinConfig.ApiUrl.RefreshToken, appid, token));
}
public static UserInfoResponse GetUserInfo(string token, string openid)
{
return GetData<UserInfoResponse>(string.Format(WeixinConfig.ApiUrl.GetUserInfo, token, openid));
}
}
}