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;
}
}
}
}
C#微信开发回复信息的更多相关文章
- NETSHARP微信开发说明
一.微信开发介绍 1.微信分为个人号,订阅号.服务号,需要去理解三个号的区别,对于开发来说也需要了解不同的账号所提供的功能 2.微信号需要审批,审批之后有一些功能才能使用 3.微信提供的功能及使用情况 ...
- Force.com微信开发系列(三)申请测试账号及回复图文消息
Force.com除了简单的文本消息回复外,还能回复图文并茂的消息.能回复音乐或者视频.能对用户发来的语音进行识别.能够搜集用户的地理位置信息并提供相应的内容或服务等,本文将对这些技能一一展开说明,在 ...
- C#微信开发之旅--基本信息的回复
上一篇说到配置和验证<C#微信开发之旅--准备阶段> 下面来实现一下简单的信息回复. 也就是接收XML,返回XML 可以去看下微信开发文档的说明:http://mp.weixin.qq.c ...
- java微信开发API解析(二)-获取消息和回复消息
java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ...
- 微信开发之消息接收与回复--weixin-java-tools
一.前言 在上一篇文章<微信开发之如何使用开发工具--weixin-java-tools>中我给各位介绍了weixin-java-tools,并且介绍了如何使用weixin-java-to ...
- Java企业微信开发_05_消息推送之被动回复消息
一.本节要点 1.消息的加解密 微信加解密包 下载地址:http://qydev.weixin.qq.com/java.zip ,此包中封装好了AES加解密方法,直接调用方法即可. 其中,解 ...
- node.js 微信开发2-消息回复、token获取、自定义菜单
项目结构 >config/wechat.json 微信公众号的配置文件 >controllers/oauth.js 微信网页授权接口(下一篇再细讲讲) >controllers/we ...
- C#开发微信门户及应用(10)--在管理系统中同步微信用户分组信息
在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码,希望从更高一个层次,向大家介绍微信的应用 ...
- 微信开发笔记:获取用户openid,以及用户头像昵称等信息
微信开发的时候有一个很便利的途径来进行一个用户的一步注册登录,就是使用用户的微信信息来直接进行登陆,可以省去很多不必要的麻烦.那具体这些信息是如何来获取的呢? 首先呢,我们需要对微信进行一个授权,让微 ...
随机推荐
- Lockless Ring Buffer Design
https://www.kernel.org/doc/Documentation/trace/ring-buffer-design.txt Lockless Ring Buffer Design == ...
- 让<a></a>diabled 的方法
<a href="test_att_data.php" disabled="true" onclick="return false"& ...
- 点击次数(thinkphp)
protected function addHit($tbName, $id) { //定义变量:作为一个查询条件 $where = array( 'deleted' => 0, 'hidden ...
- freemarker中的round、floor和ceiling数字的舍入处理
freemarker中的round.floor和ceiling数字的舍入处理 1.简易说明 (1)round:四舍五入 (2)floor:向下取整 (3)ceiling:向上取整 2.举例说明 < ...
- MeetMe
- MySQL执行SHOW STATUS查询服务器状态状态之Handler_read_* 详解
在MySQL里,我们一般使用SHOW STATUS查询服务器状态,语法一般来说如下: SHOW [GLOBAL | SESSION] STATUS [LIKE ‘pattern’ | WHERE ex ...
- oralce 函数 FOR windows 跟踪神器
https://github.com/dennis714 http://www.yurichev.com
- 源码分析:静态分析 C 程序函数调用关系图
http://www.tinylab.org/callgraph-draw-the-calltree-of-c-functions/
- 通过Javascript模拟登陆Windows认证的网站
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>模拟登陆</title ...
- 疑难杂症:java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion(Ljava/lang/String;)V
错误: java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion(Ljava/lang/Strin ...