当前位置:编程学习 > asp >>

.NET 微信开放平台接口(接收短信、发送短信)

前两天做个项目用到了微信api功能。项目完成后经过整理封装如下微信操作类。
 
以下功能的实现需要开发者已有微信的公众平台账号,并且开发模式已开启、接口配置信息已设置完毕。废话不多说直接上代码。
 
 
 
1、公众平台账号接口配置信息中URL接口代码如下:
 
 
  1 <%@ WebHandler Language="C#" Class="WeixinInterface" %>
  2 
  3 using System;
  4 using System.Web;
  5 
  6 using WeiXin;
  7 using System.Xml;
  8 public class WeixinInterface : IHttpHandler
  9 {
 10 
 11     HttpContext context;
 12     public void ProcessRequest(HttpContext context)
 13     {
 14         this.context = context;        
 15 
 16         //WriteLog("[Begin:" + DateTime.Now.ToString() + "]");  //开始接收信息(输出日志,供调试使用)
 17 
 18         /*
 19          * 第四个参数"checkToken"为true时,此实例方法用于验证微信公众平台配置的URL、Token。
 20          * 第四个参数"checkToken"为false时,此实例方法用于接收用户信息、回复用户信息。
 21          * 第四个参数"checkToken"为true时,此实例代码最好不要包含于try catch语句中
 22          * 第三个参数从配置文件中读取,其值为微信公众平台接口配置信息中的“Token”
 23          */
 24         //第一步:实例化微信封装类 
 25         WeiXinMessage weixin = new WeiXinMessage(context.Request, context.Response, System.Configuration.ConfigurationManager.AppSettings["Token"].ToString(), false);
 26         //WriteLog("[ReceiveStr:" + reply.ReceiveStr + "]");    //输出接收字符串(输出日志,供调试使用)
 27 
 28         //第二步:获取用户发送消息类型 
 29         string msgType = weixin.GetMsgType();
 30         
 31         
 32         //第三步:根据接收到不同的消息类型,执行不同的业务逻辑
 33         if (msgType == "text")
 34         {
 35             
 36             string msg = weixin.GetMsgText();//获取用户发送文本信息
 37             //WriteLog("[UserMsg:" + msg + "]");  //输出用户发送的文本信息(输出日志,供调试使用)
 38             string answer = "";
 39             try
 40             {
 41                 //根据用户发送的信息,自动匹配自定义的“自动回复”
 42                 //answer = HEBCCC.SSSS.BLL.W_ZDHFBLL.GetAnswer(answer);
 43             }
 44             catch (Exception ex)
 45             {
 46                 WriteLog(DateTime.Now.ToString() + "[error:" + ex.Message + "]");
 47             }
 48             //WriteLog("[answer:" + answer + "]");
 49             if (!string.IsNullOrEmpty(answer))
 50             {
 51                 //匹配出自动回复内容,推送给用户文本信息
 52                 weixin.SendMsgText(answer);//此代码不能包含于try catch语句中,否则报错。
 53             }
 54             else//匹配不出自动回复内容时,从系统xml配置文件中读取默认文本内容推送给用户
 55             {
 56                 XmlNode autoReplyXmlNode = null;
 57                 try
 58                 {
 59                     string path = context.Server.MapPath("~/xml/sys.xml");
 60                     XmlDocument xmldom = new XmlDocument();
 61                     xmldom.Load(path);//加载xml文件
 62                     XmlNode xmlNode = xmldom.SelectSingleNode("root");//读取第一个节点
 63                     autoReplyXmlNode = xmlNode.SelectSingleNode("autoReply");//读取第一个节点
 64                 }
 65                 catch (Exception ex)
 66                 {
 67                     WriteLog(DateTime.Now.ToString() + "[error2:" + ex.Message + "]");
 68                 }
 69                 if (autoReplyXmlNode != null && !string.IsNullOrEmpty(autoReplyXmlNode.InnerText))
 70                     weixin.SendMsgText(autoReplyXmlNode.InnerText);//此代码不能包含于try catch语句中,否则报错。
 71 
 72             }
 73         }
 74         else if (msgType == "event")
 75         {
 76             //获取事件类型(Event)、事件Key值(EventKey)
 77             string[] array = weixin.GetEventType();
 78             if (array[0] == "click" && array[1].ToLower() == "c_khgh")
 79             {
 80                 weixin.SendMsgText("抱歉,此功能暂未开通【河北华网计算机技术有限公司】");
 81             }
 82         } 
 83     }
 84 
 85    
补充:Web开发 , ASP.Net ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,