本文實例講述了C#微信公眾號與訂閱號接口開發(fā)示例代碼。分享給大家供大家參考,具體如下:
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
|
using System; using System.Web; using System.IO; using System.Text; using System.Web.Security; using weixin_api; public class wxgz_api : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain" ; string postString = string .Empty; if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST" ) { //微信服務器對接口消息 using (Stream stream = HttpContext.Current.Request.InputStream) { Byte[] postBytes = new Byte[stream.Length]; stream.Read(postBytes, 0, (Int32)stream.Length); postString = Encoding.UTF8.GetString(postBytes); Handle(postString); } } else { //微信進行的Get測試(開發(fā)者認證) WxAuth(); } } /// <summary> /// 處理信息并應答 /// </summary> private void Handle( string postStr) { messageHelp help = new messageHelp(); string responseContent = help.ReturnMessage(postStr); HttpContext.Current.Response.ContentEncoding = Encoding.UTF8; HttpContext.Current.Response.Write(responseContent); } #region 微信驗證 public void WxAuth() { string token = "xxxxxxxx" ; if ( string .IsNullOrEmpty(token)) { return ; } string echoString = HttpContext.Current.Request.QueryString[ "echostr" ]; string signature = HttpContext.Current.Request.QueryString[ "signature" ]; string timestamp = HttpContext.Current.Request.QueryString[ "timestamp" ]; string nonce = HttpContext.Current.Request.QueryString[ "nonce" ]; if (CheckSignature(token, signature, timestamp, nonce)) { if (! string .IsNullOrEmpty(echoString)) { HttpContext.Current.Response.Write(echoString); HttpContext.Current.Response.End(); } } } /// <summary> /// 驗證微信簽名 /// </summary> public bool CheckSignature( string token, string signature, string timestamp, string nonce) { string [] ArrTmp = { token, timestamp, nonce }; Array.Sort(ArrTmp); string tmpStr = string .Join( "" , ArrTmp); tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1" ); tmpStr = tmpStr.ToLower(); if (tmpStr == signature) { return true ; } else { return false ; } } #endregion public bool IsReusable { get { return false ; } } } |
希望本文所述對大家C#程序設計有所幫助。