C#微信开发回复信息

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Xml;

namespace ITCastWeiXin_demo
{
    /// <summary>
    /// weixin 的摘要说明
    /// </summary>
    public class weixin : IHttpHandler
    {
        //private static string msg;
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            if (context.Request.HttpMethod.ToLower().Equals("get"))
            {
                //context.Response.Write(msg);
                //校验url
                ValidateUrl();
            }
            else
            {
                //接收并响应
                HandleMsg();
            }
        }

private void HandleMsg()
        {
            /*ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType text
Content 文本消息内容
MsgId 消息id,64位整型*/
            HttpContext context = HttpContext.Current;
            //接收xml数据包
            Stream xmlStream = context.Request.InputStream;
            //构造xml对象
            XmlDocument doc = new XmlDocument();
            doc.Load(xmlStream);
            XmlElement rootElement = doc.DocumentElement;//获取根节点
            //接收xml
            /*<xml>
 <ToUserName><![CDATA[toUser]]></ToUserName>
 <FromUserName><![CDATA[fromUser]]></FromUserName> 
 <CreateTime>1348831860</CreateTime>
 <MsgType><![CDATA[text]]></MsgType>
 <Content><![CDATA[this is a test]]></Content>
 <MsgId>1234567890123456</MsgId>
 </xml>
             */
            //解析xml数据
            string toUserName = rootElement.SelectSingleNode("ToUserName").InnerText;
            string fromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;
            string createTime = rootElement.SelectSingleNode("CreateTime").InnerText;
            string msgType = rootElement.SelectSingleNode("MsgType").InnerText;
            string content = rootElement.SelectSingleNode("Content").InnerText;
            string msgId = rootElement.SelectSingleNode("MsgId").InnerText;
            //msg = string.Format("{0}-{1}-{2}-{3}",toUserName,fromUserName,msgType,content);
            //响应
            /*<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[郑州网站建设]]></Content>
</xml>
             */
            string xmlMsg = "<xml>" +
            "<ToUserName><![CDATA["+fromUserName+"]]></ToUserName>" +
            "<FromUserName><![CDATA["+toUserName+"]]></FromUserName>" +
            "<CreateTime>12345678</CreateTime>" +
            "<MsgType><![CDATA[text]]></MsgType>" +
            "<Content><![CDATA[郑州网站建设]]></Content>" +
            "</xml>";
            context.Response.Write(xmlMsg);
            sendMsgToManage(fromUserName, content);//把用户发送的消息发送给管理员
        }
        private int GetCreateTime()
        {
            DateTime startDate = new DateTime(1970,1,1,8,0,0);
            return (int)(DateTime.Now - startDate).TotalSeconds;
        }
        private void ValidateUrl()
        {
            /*signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串*/
            //接收请求过来的参数
            HttpContext context = HttpContext.Current;
            string signature = context.Request["signature"];
            string timestamp = context.Request["timestamp"];
            string nonce = context.Request["nonce"];
            string echostr = context.Request["echostr"];
            string token = "weixin";
            string[] str1 = { token, timestamp, nonce };
            Array.Sort(str1);
            string str2 = string.Join("", str1);
            //加密
            string str3 = FormsAuthentication.HashPasswordForStoringInConfigFile(str2, "SHA1");
            if (str3.ToLower().Equals(signature))
            {
                context.Response.Write(echostr);
            }
        }
        private void sendMsgToManage(string toUserName,string content)
        {
            string managerweixinid = "wuchangjian001";
            string xmlMsg = "<xml>" +
            "<ToUserName><![CDATA[" + managerweixinid + "]]></ToUserName>" +
            "<FromUserName><![CDATA[" + toUserName + "]]></FromUserName>" +
            "<CreateTime>12345678</CreateTime>" +
            "<MsgType><![CDATA[text]]></MsgType>" +
            "<Content><![CDATA["+content+"]]></Content>" +
            "</xml>";
            HttpContext context = HttpContext.Current;
            context.Response.Write(xmlMsg);
        }

public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

时间: 2024-10-14 00:19:45

C#微信开发回复信息的相关文章

微信开发回复消息收不到的最大罪魁祸首,微信公众账号为什么回复消息不成功的原因解决办法

上一篇文章讲到如何配置微信开发,以及.NET平台使用MVC做一个小DEMO的流程,还有常见收不到消息的问题,本篇文章讲的是一个很容易让人忽略但又是很重要的问题导致用户收不到响应的消息原因. 上一篇文章链接:[C#开发微信.NET平台MVC微信开发 发送普通消息Demo以及收不到消息的问题] (如果你是通过搜索引擎进来的建议你看下上篇文章,说不定就解决你的问题了) 这个问题出在代码 首先我们的C#代码是这么写的: 1 //接收/回复 消息接口 2 [HttpPost] 3 public Actio

微信开发 回复用户消息 .net C#

前段时间开发了公司的微信 这里做个知识总结分享下经验,望一起学习..... 感觉后面写个系列的最好了 .... 企业需求: 给指定企业用户发送消息:如考勤信息. 企业通知.个人信息推送等等, /// </summary> /// <param name="UserID">要发送的人ID</param> /// <param name="StrMessg">消息</param> private void Se

微信开发关注回复 oauth2(1)

服务器配置 第一步:服务器选择: 我选的是新浪的 http://sae.sina.com.cn/ ,具体如何配置就不用细说了,就相当于租用一台服务器一样 第二步:上传代码:共三个件,分别是index.php,oauth2.php,redirectUri.php index.php 代码如下: <?php /** 微信公众平台 */ define("TOKEN", "weixin");//与管理平台的TOKEN设置一致 $wechatObj = new wech

微信开发之消息接收与回复--weixin-java-tools

一.前言 在上一篇文章<微信开发之如何使用开发工具--weixin-java-tools>中我给各位介绍了weixin-java-tools,并且介绍了如何使用weixin-java-tools接入我们微信开发者模式,本次就针对这个工具给大家介绍消息的接收与回复 二.消息接收与回复 先来说说接收消息, 当普通微信用户向公众账号发消息时,微信服务器会先接收到用户发送的消息,然后将用户消息按照指定的XML格式组装好数据,最后POST消息的XML数据包到开发者填写的URL上. 接收到的普通消息的消息

C#开发微信门户及应用(10)--在管理系统中同步微信用户分组信息

在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码,希望从更高一个层次,向大家介绍微信的应用开发过程.本篇主要介绍在管理系统中,如何实现微信用户分组信息的同步操作. 其实微信能够风风火火的原因,主要就是因为有用户信息,所以同步并管理好微信账号的关注用户数据是非常重要的.有了微信用户的数据,你可以和你任何应用系统对接,实现系统-手机客户端的数据整合,还可以对用户进行营销管理,如发送用户感兴趣

记微信开发(关键词回复)

记微信开发(关键词回复) 将第50行的内容$contentStr = "欢迎光临!";变成一个选择条件句 测试结果: 更多的回复选择可以继续往下写-

记微信开发(关注回复)

记微信开发(关注回复) 在刚才增加的关键词回复代码上面添加代码: $ev = $postObj->Event; if ($ev = "subscribe") { $msgType = "text"; $contentStr = "感谢您的关注!"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $r

C#-MVC开发微信应用(7)--在管理系统中同步微信用户分组信息

在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码.希望从一个更高的层次介绍微信的开发. 在<C#-MVC开发微信应用(6)--用户分组信息管理>具体介绍了微信用户分组接口的实现方法,本篇将介绍,如何在我的平台软件上进行管理我们微信上的用户分组. 其实微信能够风风火火的原因,主要就是因为有用户信息,所以同步并管理好微信账号的关注用户数据是非常重要的.有了微信用户的数据,你可以和你任何应用

微信开发(八)微信网页授权( Oauth )通过Oauth获取用户信息

div#cpmenu {height:200px;float:left;} div#cpcontent {height:200px;width:150px;float:left;} 文章作者:松阳 原文链接:http://blog.csdn.net/fansongy/article/details/45340951 网页授权 微信开发时,我们总是想要尽可能多的活动用户的信息.但微信官方和用户本身,又不想暴露这些信息.搞来搞去,就出现了很多奇形怪状的规则和交互方式.微信网页授权就是其中之一,它可以