C#微信开发---用户关注微信号后公众号发送欢迎关注
用户关注微信或者取消关注微信的时候,微信服务器会发送一个 post请求到微信配置中的URL地址中。可以提取其中 的数据判断是关注还是取消
推送XML数据包示例:
<xml><ToUserName>< ![CDATA[toUser] ]></ToUserName><FromUserName>< ![CDATA[FromUser] ]></FromUserName><CreateTime>123456789</CreateTime><MsgType>< ![CDATA[event] ]></MsgType><Event>< ![CDATA[subscribe] ]></Event></xml>
------------------------------------------------------------------------------------------------------------------------------
//1:总方法
private void subscribe(){//1:得到发送过来的数据string inMessage = GetSendInMessage(Request);//2:获取xml中的数据WX_In_MessageParent wX_In = new WX_In_MessageParent(inMessage);//3:判断是否是订阅或取消订阅事件if (WX_in_MessageManager.getTagNameContent(inMessage, WX_In_Filed.Event.ToString()) != ""){//2:执行发送信息的方法Event(inMessage, wX_In);}}
//2: 引用方法
private string GetSendInMessage(HttpRequestBase requestBase){using (Stream stream = requestBase.InputStream){//创建一个字节数字,用来保存读取的字符Byte[] postBytes = new Byte[stream.Length];//把传递过来的内容保存(读取)到postBytes字符数组中stream.Read(postBytes, 0, (Int32)stream.Length);//得到传递过来的内容。string postString = Encoding.UTF8.GetString(postBytes);return postString;}}
//3:类 WX_In_MessageParent
public class WX_In_MessageParent{private string toUserName;private string fromUserName;private string createTime;private string msgType;private string msgId;public string ToUserName{get{return toUserName;}set{toUserName = value;}}public string FromUserName{get{return fromUserName;}set{fromUserName = value;}}public string CreateTime{get{return createTime;}set{createTime = value;}}public string MsgType{get{return msgType;}set{msgType = value;}}public string MsgId{get{return msgId;}set{msgId = value;}}/*通过构造函数来获取服务器发送过来的信息*/public WX_In_MessageParent(string requestStr){ToUserName = WX_in_MessageManager.getTagNameContent(requestStr, WX_In_Filed.ToUserName.ToString());FromUserName = WX_in_MessageManager.getTagNameContent(requestStr, WX_In_Filed.FromUserName.ToString());CreateTime = WX_in_MessageManager.getTagNameContent(requestStr, WX_In_Filed.CreateTime.ToString());MsgType = WX_in_MessageManager.getTagNameContent(requestStr, WX_In_Filed.MsgType.ToString());MsgId = WX_in_MessageManager.getTagNameContent(requestStr, WX_In_Filed.MsgId.ToString());}}
//4:事件
private void Event(string inMessage, WX_In_MessageParent WX_In){string eventName = WX_in_MessageManager.getTagNameContent(inMessage, WX_In_Filed.Event.ToString());switch (eventName){case "subscribe"://订阅Response.Write(WX_MessageCode.WX_Subscribe(WX_In));break;case "unsubscribe"://取消订阅WX_MessageCode.WX_UnSubscribe(WX_In);break;default:break;}}
//5:推送方法
public static string WX_Subscribe(WX_In_MessageParent wxobj){WX_Out_MessageText wx_out = new WX_Out_MessageText(wxobj, "欢迎关注****");return wx_out.GetReturnStr();}
public override string GetReturnStr(){//Content就是刚才传进来的数据,这个地方是调用的字段,类WX_In_MessageParent中的字段StringBuilder strbuff = new StringBuilder();strbuff.Append("<xml>");strbuff.Append("<ToUserName><![CDATA[" + ToUserName + "]]></ToUserName>");strbuff.Append("<FromUserName><![CDATA[" + FromUserName + "]]></FromUserName>");strbuff.Append("<CreateTime>" + CreateTime + "</CreateTime>");strbuff.Append("<MsgType><![CDATA[" + MsgType + "]]></MsgType>");strbuff.Append("<Content><![CDATA[" + Content + "]]></Content>");strbuff.Append("</xml>");return strbuff.ToString();}
写得比较散,不好全部拿出来,只取了核心的方法。
C#微信开发---用户关注微信号后公众号发送欢迎关注相关推荐
- easywechat微信开发系列(1):公众号网页授权
准备工作: 1.已认证的服务号(apppid.appsecret.token.aes_key) 2.安全域名 3.已经用composer安装好easywechat 1.config/app.php 的 ...
- php判断是否已关注,php判断用户是否关注微信订阅号或公众号
最近要做一个微信平台的投票活动,需要在关注公众号之后才能参与投票,那么,如何判断用户是否关注了公众号呢?第一想法是,通过获取公众号的关注列表,然后搜索列表中是否有参与者的openid.但是马上发现一个 ...
- 微信公众号项目(公众号关注登录网站)
目录 文章目录 目录 资料地址 资料说明 课程内容 云盘资料概览 资料地址 微信公众号项目(公众号关注登录网站) 资料说明 项目是基于微信公众号完成的,需要学习公众号项目开发的同学,可以参考. 资料包 ...
- 微信公众号开发 - 配置表设计以及接入公众号接口开发
微信公众号开发文章目录 1.微信公众号开发 - 环境搭建 2.微信公众号开发 - 配置表设计以及接入公众号接口开发 3.微信公众号开发 - token获取(保证同一时间段内只请求一次) 4.微信公众号 ...
- 微信公众号开发(一):注册公众号,后台与微信连接
开发者文档:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html 公众号注册:https://m ...
- 微信开发专题---7微信公众号订阅号与服务号的区别
微信公众平台现在已分成订阅公众号和服务公众号两种类型.两者的区别大致如下: 一.目的不同 1.服务号: 旨在为用户提供服务. 2.订阅号: 为用户提供信息和资讯. 二.功能不同 服务号的功能 1.1个 ...
- 微信开发学习二 -- 微信开发入门(简单demo)
一.微信公众平台的基本原理 在开始做之前,先简单介绍了微信公众平台的基本原理. 微信服务器就相当于一个转发服务器,终端(手机.Pad等)发起请求至微信服务器,微信服务器然后将请求转发给我们的应用服务器 ...
- 【PHP+微信开发】之微信扫码登录
目录 一.数据表 二.获取token 三.生成二维码 四.扫码,并接收回调 五.检测二维码是否扫描成功 微信扫码登录总体说明:先获取token和ticket,通过微信生成二维码接口生成二维码,把二维码 ...
- php 微信开发 自动回复,laravel 微信开发-自动回复
laravel 微信开发-自动回复 1.微信公众号的逻辑,用户关注了你的微信公众号后,假设用户发送了一条消息给你的公众号,实际上是先发送到腾讯的服务器上,腾讯把内容转成特定的xml格式,再转发到你指定 ...
- 通过微信开发测试号进行微信登录
微信开发测试号进行微信登录 1.测试账号获取 1.微信进行注册https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&am ...
最新文章
- EmEdit选择多行内容
- python画图代码turtle-Python使用Turtle图形函数画图 颜色填充!
- 关于S/4HANA里Sales Office 和Sales Organization那些事儿
- ios签名软件_苹果企业签名常常掉怎样处理【苹果签名吧】
- 您应该考虑将应用程序升级到Spring 4的5个理由
- django后台多页面分页逻辑python代码
- Hibernate Session get()vs load()的区别
- Linux命令----cat
- 提交日期表单状态操作_奇怪的知识又增加了,表单还能查寝?
- 太极怎么用html写出来,如何用css实现太极图
- 将普通文章内容替换为微信图文消息符合的内容
- 浏览器可以用c语言编辑吗,如何在浏览器端运行c/c++语言编写的代码
- 后端处理方式:特殊格式时间转换(2020-11-27T02:58:41.000000Z)
- MongoDB笔记十四——启动配置详细讲解
- matlab和pspice,电力电子电路仿真---MATLAB和PSpice应用
- Vue.js的简单趋势图
- 用R进行文本分析初探——包含导入词库和和导入李白语句
- win8/win10微信QQ邮箱可登陆,浏览器显示无网络连接
- 嵌入式是什么 ?为什么要学好嵌入式呢?
- 前亚马逊产品经理:TikTok的真正优势,并不是算法