C#微信公众号与订阅号接口开发示例代码

本文实例讲述了C#微信公众号与订阅号接口开发示例代码。分享给大家供大家参考,具体如下:

?

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测试(开发者认证)

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#程序设计有所帮助。

本文链接:https://my.lmcjl.com/post/8953.html

展开阅读全文

4 评论

留下您的评论.