一、取消关注事件

用户在取消关注公众号时,微信会把这个事件推送到开发者填写的URL,方便开发者做帐号的解绑等处理。

<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[FromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[unsubscribe]]></Event>
</xml>

二、代码实现

本篇比较简单,所以直接上代码了。

在接收到微信服务器发来的事件之后,首先由指定的接口网页AccessWx.aspx对事件类型进行判别,然后交给指定的事件处理类处理和回应。在本系列文章第1篇介绍的AccessWx.aspx.cs中开始部分引入命名空间using QinMing.Weixin.EventHandlerUnSubscribe;

并完善下面处理unsubscribe这一段,增加本篇给出的关注事件处理环节。

else if(MsgType == "event")
{string Event = xn.SelectSingleNode("//Event").InnerText;if(Event == "subscribe"){//对用户关注公众号的事件处理,使用QinMing.Weixin.EventHandlerSubscribe命名空间下的SubscribeEventDeal类SubscribeEventDeal ued = new SubscribeEventDeal();Response.Write(ued.DealResult(weixinXML));    }else if(Event == "unsubscribe"){//对用户取消关注公众号的事件处理,使用QinMing.Weixin.EventHandlerUnSubscribe命名空间下的UnSubscribeEventDeal类UnSubscribeEventDeal ued = new UnSubscribeEventDeal();Response.Write(ued.DealResult(weixinXML));  }//其它处理
}

在命名空间QinMing.Weixin.EventHandlerUnSubscribe下新建一个类UnSubscribeEventDeal,用来处理微信服务器发来的取消关注事件消息。记得类源码文件要放在App_Code目录下!下面是关注事件消息处理源码:
QinMingWeixinEventHandlerUnSubscribe.cs文件内容如下:

using System;
using System.Web;
using System.Xml;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Net;
using System.Threading;
using System.Threading.Tasks;
using QinMing.Config;
using QinMing.Tools;
using QinMing.Tools.DB;
using QinMing.Weixin.ReturnContent;
using QinMing.WeixinUserInfo;
using QinMing.WeixinPayPayment;namespace QinMing.Weixin.EventHandlerUnSubscribe
{//事件消息处理:取消关注公众号public class UnSubscribeEventDeal :System.Web.UI.Page{public string DealResult(string weixinXML){string content = DealSubscribe(weixinXML);  return content;}public string DealSubscribe(string weixinXML){string content1="";string strresponse = "";XmlDocument doc = new XmlDocument();doc.LoadXml(weixinXML);XmlNodeList list = doc.GetElementsByTagName("xml");XmlNode xn = list[0];string FromUserName = xn.SelectSingleNode("//FromUserName").InnerText;   //关注用户的加密后openidstring ToUserName = xn.SelectSingleNode("//ToUserName").InnerText;       //公众微信号原始IDstring MsgType=xn.SelectSingleNode("//MsgType").InnerText;string Event=xn.SelectSingleNode("//Event").InnerText;string EventKey = xn.SelectSingleNode("//EventKey").InnerText;DealLeave(FromUserName);SaveEvent(FromUserName, ToUserName);//给管理员发送粉丝取消关注通知QinMing.WeixinTemplateMessage.SendTemplateMessage.SendRemindMsg("管理员openid", "粉丝取消关注提醒" + FromUserName, "http://www.yourweb.com/Weixin/DisplayUser.aspx?open_id=" + FromUserName);  return strresponse;}//记录粉丝取关公众号时的相关信息public void DealLeave(string FromUserName){string strConn = QinMingConfig.DatabaseConnStr;SqlConnection conn = new SqlConnection(strConn);conn.Open();SqlCommand cmd = new SqlCommand();cmd.Connection = conn;cmd.CommandText = "insert into weixin_leave_log (open_id,leave_time) values('" + FromUserName + "',getdate())";cmd.ExecuteScalar();cmd.CommandText = "update weixin_join_log set remove_flag=1 where remove_flag=0 and open_id='" + FromUserName + "'";cmd.ExecuteScalar();cmd.CommandText = "update weixin_user_info set remove_flag = '已取关' where open_id = '" + FromUserName + "'";cmd.ExecuteScalar();if (conn.State == ConnectionState.Open){conn.Close();conn.Dispose();}}//保存事件信息。public void SaveEvent(string FromUserName, string ToUserName){SqlConnection conn = new SqlConnection(QinMingConfig.DatabaseConnStr);conn.Open();SqlCommand cmd = new SqlCommand();cmd.Connection = conn;cmd.CommandText = "insert into weixin_recv_event (msg_type,event_type,open_id,gh_id,recv_time) "+ "values ('event','unsubscribe','" + FromUserName + "','" + ToUserName + "',getdate()) ";//QinMingTools.WriteLog("sql语句:", cmd.CommandText);cmd.ExecuteScalar();if (conn.State == ConnectionState.Open){conn.Close();conn.Dispose();}}}
}

实例:用C#.NET手把手教你做微信公众号开发(13)--事件消息处理之取消关注相关推荐

  1. 实例:用C#.NET手把手教你做微信公众号开发(20)--使用微信支付线上收款:jsapi方式

    在做线上.线下销售时,可以使用微信便捷支付,通过微信公众号收款有很多种收款方式,如下图: 今天我们来讲一下jsapi支付,场景就是在微信内打开某个页面,完成在线支付,同样一个网页,使用微信打开就是js ...

  2. 实例:用C#.NET手把手教你做微信公众号开发(21)--使用微信支付线上收款:H5方式

    在做线上.线下销售时,可以使用微信便捷支付,通过微信公众号收款有很多种收款方式,如下图: 今天我们来讲一下H5场景支付,使用手机浏览器打开就是H5方式,最常见的推广是短信内置链接,这种场景需要调用微信 ...

  3. 实例:用C#.NET手把手教你做微信公众号开发(22)--网页里通过OAuth获取用户openid

    第一篇:理论 如果一个用户并未关注某个公众号,只是在微信内打开了公众号web服务器上的某个网页,要如何获取用户的openid以及用户的微信信息,以便实现业务逻辑呢?本篇讲述网页授权OAuth获取微信用 ...

  4. 实例:用C#.NET手把手教你做微信公众号开发(3)--普通消息处理之图片

    本着简短.便于理解应用的原则,本系列文章每次只讲一个公众号知识点,给出一个应用实例,通过一个知识点帮助你掌握公众号一类应用的开发方法. 上一篇我们掌握了微信客户端.微信服务器.你的服务器之间的信息互动 ...

  5. 实例:用C#.NET手把手教你做微信公众号开发(19)--使用微信支付转账到微信粉丝零钱账户

    公众号给微信用户支付费用的方式有很多种,最常用的是发红包和转账到零钱账户,上一篇文章详细讲解了使用发红包的过程,从公众号内的配置,到微信支付的配置,再到具体的类实现. 本篇主要讲解转账到零钱,具体的类 ...

  6. 实例:用C#.NET手把手教你做微信公众号开发(12)--带参数二维码裂变推广

    为什么能裂变推广是营销学和心理学的范畴了,这里举个简单的例子来介绍.公众号有足以吸引粉丝的地方,要么是知识.要么是优惠.要么是服务,反正不同于其他人,能够吸引人关注:有了这个前提,怎么让更多的人知道这 ...

  7. 实例:用C#.NET手把手教你做微信公众号开发(11)--生成带参数二维码

    上一篇讲了普通关注的各种情景,接下来准备详细讲解带参数的二维码的应用实例.在下一篇详解之前,这里先介绍一下如何下载二维码.生成二维码表,为后续的应用做好准备. 为了满足用户渠道推广分析和用户帐号绑定等 ...

  8. 实例:用C#.NET手把手教你做微信公众号开发(10)--事件消息处理之关注公众号(普通关注)

    一.事件消息种类 在微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者在开发者中心处设置的服务器地址,从而开发者可以获取到该信息.其中,某些事件推送在发生后 ...

  9. 实例:用C#.NET手把手教你做微信公众号开发(6)--普通消息处理之视频、小视频

    本篇讲解微信客户端向公众号发送视频和小视频的处理方式. 视频消息常见应用: 在线教学: 基于公众号的定向类型小视频应用,类似于抖音.快手,但不用再安装app: 视频剪辑.特效添加,比如美颜: 其它视频 ...

最新文章

  1. Centos 7 yum 安装php
  2. POJ 图算法(3)
  3. python2.7安装pip_python2.7 安装pip的方法步骤(管用)
  4. 四川汶川地震祈福赈灾宣传画、报纸头版精选第二版(超多图)
  5. Java 集合List、Set、HashMap操作三(查找List中的最大最小值、遍历HashTable、List元素替换、List查找位置)
  6. Android2017 这些技术 —— 你都了解过吗
  7. 在线HTML标签清除工具
  8. pandas小记:pandas数据结构和基本操作
  9. 从顶会论文看对比学习的应用!
  10. ESP32实践FreeRTOS
  11. jasypt加密敏感配置信息出现Encryption raised an exception
  12. 单频点单输入功率只含基波X模型的提取与验证
  13. dreamweaver cs6 mac 破解版
  14. 英语基础-动词的分类
  15. 计算机联盟社团团活动总结,社团活动总结
  16. 遗传算法(Genetic Algorithm)之deap学习笔记(一): 基础概念
  17. bitwarden_rs 搭建自托管的密码服务器
  18. vue+element下拉框实现二级联动
  19. java 包命名_【Java】包的命名规则
  20. 使用IDEA调试Arthas

热门文章

  1. 学习笔记(12):A110测试-测试课程申请1888
  2. 查看计算机内存过高,物理内存过高怎么办,小编教你电脑物理内存过高怎么办...
  3. uniapp 使用微信扫一扫功能扫描指定二维码查看返回值
  4. UML建模基础知识点
  5. [Excel]如何取得多項式擬合的R平方值(R-squared)?
  6. 台式电脑键盘错乱会出现计算机模式怎么办,电脑键盘按键错乱怎么回事
  7. Office 365入门教程(一):开始使用Office 365
  8. Android 反编译资料整理
  9. html5适应手机比例,HTML5 如何让手机网站自适应设备屏幕宽度
  10. 蜜雪冰城23年创业史:关门3次,被拆4次,创始人被弟弟怼出局