码迷,mamicode.com
首页 > 微信 > 详细

微信开发(一)-配置环境并发送文本信息

时间:2015-04-03 14:52:18      阅读:388      评论:0      收藏:0      [点我收藏+]

标签:

1.到万网申请免费主机

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

2.登录微信公众平台

技术分享

安装新手开发说明,一步一步看下去

第一步:填写服务器配置,就是刚才从万网上申请来的

Token自己随便取

为了方便测试加密方式选择明文模式

技术分享

第二步,验证服务器的地址的有效性

技术分享

#region 1.0验证消息的真实性 - private void ValidateUrl()
private void ValidateUrl()
{
    #region 获取微信服务器Get发送过来的四个参数
    //开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数:
    HttpContext context = HttpContext.Current;
    //微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
    string signature = context.Request.QueryString["signature"];
    //时间戳
    string timestamp = context.Request.QueryString["timestamp"];
    //随机数
    string nonce = context.Request.QueryString["nonce"];
    //随机字符串
    string echostr = context.Request.QueryString["echostr"];
    #endregion

    #region 加密/校验来自微信服务器的请求
    string token = "Kim2015";//必须跟公共账号上的一致
    //1. 将token、timestamp、nonce三个参数进行字典序排序
    string[] temp1 = { token, timestamp, nonce };
    Array.Sort(temp1);

    //2. 将三个参数字符串拼接成一个字符串进行sha1加密
    string temp2 = string.Join("", temp1);
    string temp3 = FormsAuthentication.HashPasswordForStoringInConfigFile(temp2,
        FormsAuthPasswordFormat.SHA1.ToString());
    //3. 若确认此次GET请求来自微信服务器,请原样返回echostr参数内容
    if (temp3.ToLower().Equals(signature))
    {
        context.Response.Write(echostr);
    }
    #endregion

注意验证请求时,http发送的方式是get请求

下面来试试接收文本消息的要求

技术分享

以及回复文本消息的要求

技术分享

#region 2.0接收并处理文本信息 - private void HandleTextMsg()
private void HandleTextMsg()
{
    #region 接收微信服务器POST发送过来的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>
     */
    HttpContext context = HttpContext.Current;
    //接收xml数据包
    Stream xmlStream = context.Request.InputStream;
    //构造xml对象
    XmlDocument doc = new XmlDocument();
    doc.Load(xmlStream);
    //获取根节点
    XmlElement rootElement = doc.DocumentElement;
    //解析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;
    
    #endregion

    #region 解析xml数据包,并按照一定格式返回
    /*
     <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>" + GetCreateTime() + "</CreateTime>" +
                    "<MsgType><![CDATA[text]]></MsgType>" +
                    "<Content><![CDATA[“很高兴认识你”]]></Content>" +
                    "</xml>";
    context.Response.Write(xmlMsg); 
    #endregion
}
#endregion

该执行文件的PR方法如下:

public void ProcessRequest(HttpContext context)
{
    
    if (context.Request.HttpMethod.ToLower().Equals("get"))
    {
       context.Response.Write(msg);
        //校验
        ValidateUrl();
    }
    else
    {
        //当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上
        HandleTextMsg();
    }
}
开始发布该网站

技术分享

技术分享

技术分享

2.配置微信服务器,配置好之后,按提交,然后按启动

技术分享

开始测试,测试地址:http://debug.fangbei.org/

技术分享

总结:其实微信服务器开发,就是在微信端发送到自己的服务器之间,都了一个微信服务器的步骤。处理过程,依旧和http请求一样。

发送报文-处理报文-响应报文

技术分享

微信开发(一)-配置环境并发送文本信息

标签:

原文地址:http://www.cnblogs.com/2star/p/4389799.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!