前言
一切准备工作就绪时就先实现一个关注公众号后向客户端推送一条消息。关注后推送消息需要一个get请求、一个post请求,get请求主要是为了向微信服务器验证,post请求主要就是处理微信消息了。 调接口时传递的appid和appsecret请传递自己公众号对应的参数。
微信事件交互
微信事件交互主要是向微信服务器推送XML数据包
看效果
看代码
[HttpGet] [ActionName("Index")] public ActionResult Get(string signature,string timestamp,string nonce,string echostr) { if (CheckSignature.Check(signature, timestamp, nonce, token)) { return Content(echostr); } else { return Content("err"); }
[HttpPost] [ActionName("Index")] public ActionResult Get(string signature, string timestamp, string nonce) { StreamReader sr = new StreamReader(Request.InputStream, Encoding.UTF8); XmlDocument doc = new XmlDocument(); doc.Load(sr); sr.Close(); sr.Dispose(); WxMessage wxMessage = new WxMessage(); wxMessage.ToUserName = doc.SelectSingleNode("xml").SelectSingleNode("ToUserName").InnerText; wxMessage.FromUserName = doc.SelectSingleNode("xml").SelectSingleNode("FromUserName").InnerText; wxMessage.MsgType = doc.SelectSingleNode("xml").SelectSingleNode("MsgType").InnerText; wxMessage.CreateTime = int.Parse(doc.SelectSingleNode("xml").SelectSingleNode("CreateTime").InnerText); if (wxMessage.MsgType == "event") { wxMessage.EventName = doc.SelectSingleNode("xml").SelectSingleNode("Event").InnerText; if (!string.IsNullOrEmpty(wxMessage.EventName) && wxMessage.EventName == "subscribe") { string content = "您好,欢迎访问garfieldzf8测试公众平台"; content = SendTextMessage(wxMessage, content); return Content(content); } } return Content(""); } private string SendTextMessage(WxMessage wxmessage,string content) { string result = string.Format(Message, wxmessage.FromUserName,wxmessage.ToUserName,DateTime.Now.Ticks, content); return result; } public string Message { get { return @"<xml> <ToUserName><![CDATA[{0}]]></ToUserName> <FromUserName><![CDATA[{1}]]></FromUserName> <CreateTime>{2}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[{3}]]></Content> </xml>"; } }
public class WxMessage { public string ToUserName { get; set; } public string FromUserName { get; set; } public long CreateTime { get; set; } public string Content { get; set; } public string MsgType { get; set; } public string EventName { get; set; } public string EventKey { get; set; } }
总结
开发微信接口的过程中不能调试,唯一排除问题的方式就是在关键的地方记log。
微信事件交互主要是分析微信发送的xml数据包,解析xml,并按照消息指定格式拼接xml发送给response。在Get方法里用到的CheckSignature 是盛派微信SDK的一个类,也就是对签名校验。
向客户端发送消息时主要ToUserName和FromUserName。我一开始把两个参数写反了导致客户端收不到消息。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍使用NodeJs 开发微信公众号(三)微信事件交互实例,包括了使用NodeJs 开发微信公众号(三)微信事件交互实例的使用技巧和注意事项,需要的朋友参考一下 微信公众号有个规则,一旦开启了开发者模式,其他的常规功能就都必须通过接口调用完成。比如说自定义菜单功能,必须通过发送post请求的方式生成。本章就通过关注到取消关注的整个过程来谈一谈nodejs是怎么样与微信交互的。这些功能的入
本文向大家介绍C#开发微信公众号接口开发,包括了C#开发微信公众号接口开发的使用技巧和注意事项,需要的朋友参考一下 具体实现方式不多说了,请看下文 一、前言 当下微信公众号几乎已经是每个公司必备的,但是大部分微信公众账号用户体验都欠佳,特别是涉及到用户绑定等,需要用户进行复杂的操作才可以和网站绑定,或者很多公司直接不绑定,而是每次都让用户填写账号密码。作为微信接口开发人员我们知道网页授权可以用作微
方案1:将公众号授权给智齿 接入效果 授权过程 授权微信公众号给智齿需要智齿客服管理员和微信公众号管理员共同参与,具体步骤如下: 第一步:智齿客服管理员进入智齿管理后台「设置-支持渠道-微信」,点击「绑定公众号」进入授权页,可见微信授权二维码 <微信公众号授权扫码页-电脑端> 第二步:由企业微信公众号管理员在微信端扫码、确认勾选授权哪些权限集给智齿并点击确认授权,完成授权后即算部署完成 <
微信公众号 微信公众号扫码授权以后,用户发往公众号的消息会转发给机器人,机器人会自动回复消息给公众号用户,同一个微信公众号同时只能绑定一个机器人,如果绑定了新的机器人,之前绑定的机器人会解除绑定。 注:微信公众号渠道接入后,仅支持微信文字,语音两种方式问答,用户在微信聊天框输入语音后,客服系统自动识别语音成文字进行答复。 只需三步接入微信公众号,自动回答公众号上的用户问题 1. 创建机器人 注册登
本文向大家介绍C#微信开发之微信公众号标签管理功能,包括了C#微信开发之微信公众号标签管理功能的使用技巧和注意事项,需要的朋友参考一下 微信公众号,仿照企业号的思路,增加了标签管理的功能,对关注的粉丝可以设置标签管理,实现更加方便的分组管理功能。开发者可以使用用户标签管理的相关接口,实现对公众号的标签进行创建、查询、修改、删除等操作,也可以对用户进行打标签、取消标签等操作。本篇随笔主要介绍如何利用
本文向大家介绍nodejs微信公众号支付开发,包括了nodejs微信公众号支付开发的使用技巧和注意事项,需要的朋友参考一下 odeJs 微信公众号功能开发,移动端 H5页面调用微信的支付功能。这几天根据公司的需要使用 node 和 h5页面调用微信的支付功能完成支付需求。现在把开发过程重新捋一遍,以帮助更多的开发者顺利的完成微信支付功能的开发。(微信暂时还没有提供 node 的支付功能) 一.请求