微信公众平台开发-01-接入篇

  微信公众平台开发-01-接入篇

  在微信用户达到4亿用户的时候,我相信很多开发者已经加入了微信开发这个那么有客户市场的竞争中去了,我相信已经有很多的公众号服务了。例如天气预报,聊天机器人,等等,已经很多很多的服务账号了,很多公众账号已经由团队开发经营了,想对于个人兴趣的开发看似已经不能挤身于这个领域了。而作为开发者,我们更应该从不同的角度去看待这一资源吧。

  在接着网易和电信合作推出了 易信,再接着阿里巴巴推出的 来往,大家可以知道基于这种模式的平台,大集团们都纷纷加入了竞争,我们可想,在未来这一块的发展了。我相信会有越来越多的企业会推出自己的公众微信号,大家可以发挥想象这一块的前景。
  相信已经有一部分开发者已经纷纷申请了自己的开发测试公众号了,再或者会有一部分熟悉.net的初级开发者想加入这个领域,但是可能开始的时候是无从下手,我也是刚刚接触微信公众股平台开发,相信我刚经历过得经验更能帮助想加入这个开发领域的初级开发者们了。
  在我们注册申请了公众账号并且通过验证之后(我相信那些注册小伙伴们只要跟着步骤走是没有什么问题的了),然后我们需要选择高级功能里面的开发者模式,在微信的接入指南里也很详细的教导我们一步步的去接入。

  第一步:申请消息接口

OK,URL地址就是你服务器的地址,也就是微信向你服务器请求的地址,不是用户直接请求的。Token就是你服务器里填验证时的Token,这个可以乱填,只要你服务器用的Token和你填的一样就好了。蛋疼的微信,不知为啥只能让我们填80端口,不知道这样的蛋疼要求对他们有什么好处,反正对一些开发者来说是没啥好处的。简单的说整个流程就是
1、微信服务器接收了用户发过来的信息。
2、微信服务器把信息封装成XML文档传递给你的服务器(也就是传给你填写的URL地址,或者说你的页面)
3、经过你服务器处理以后,把要反馈的信息封装成微信固定XML格式返回个微信服务器。
4、然后微信把信息发送给用户。
整个公众号开发服务就是这样子的鸟。
  第二步:验证URL有效性
填写完URL和TOken点击提交就是要验证我们服务器的地址是否正确,是否有响应,当然首先要验证服务器是否与开发者是同一个人,所以就设定了Token这个属性了,微信服务器讲发送GET请求到填写的URL上,GET请求携带四个参数,OK,这个我就直接贴出代码好了

private string Token = "";
        public void Auth()
        {
            string echoStr=System.Web.HttpContext.Current.Request.QueryString["echoStr"];
            if (CheckSignature())//验证微信签名通过
            {
                if (!string.IsNullOrEmpty(echoStr))
                {
                    System.Web.HttpContext.Current.Response.Write(echoStr);
                    System.Web.HttpContext.Current.Response.End();
                }
            }
        }
//验证微信签名
        private bool CheckSignature()
        { 
            //加密/校验流程:
            //1. 将token、timestamp、nonce三个参数进行字典序排序
            //2. 将三个参数字符串拼接成一个字符串进行sha1加密
            //3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

            string signature=System.Web.HttpContext.Current.Request.QueryString["signature"];
            string timestamp=System.Web.HttpContext.Current.Request.QueryString["timestamp"];
            string nonce=System.Web.HttpContext.Current.Request.QueryString["nonce"];
            string[] ArrTmp = {Token,timestamp,nonce };
            Array.Sort(ArrTmp);//字典排序
            string tmpStr = string.Join("", ArrTmp);
            tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "sha1");
            tmpStr = tmpStr.ToLower();
            if (tmpStr == signature.ToLower())
            {
                return true;
            }
            else
            {
                return false;
            }
        }
View Code

上面的Token就是填你自己的哦,不要留空白了哦。
假如我们的URL地址是http://cnblogs.com/zknu/weixin.aspx  ,好的,我们在weixin.aspx的page_load里调用Auth这个方法就好了。
这里告诉大家一个秘密,大家看一下截图:
大家有没发现,他要我原样返回echostr参数内容,也就是说,其实我验不验证请求是否来自微信服务器,我们只需要接收他echostr参数内容,然后照样返回就可以了。也就是说,在weixin.aspx的page_load里

写上这样的代码:

string echoStr=System.Web.HttpContext.Current.Request.QueryString["echoStr"];
System.Web.HttpContext.Current.Response.Write(echoStr);
                    System.Web.HttpContext.Current.Response.End();
View Code

这样就可以通过验证了,然后你就会成为开发者啦,简单吧,哈哈。我也是才刚刚加入微信公众平台的开发中,希望大家能帮到有需要的人,也希望大神们多多指教哈。
附上我的微信公众号,希望大家关注一下,有什么可以给我留言哦!

  

posted @ 2013-10-31 16:30  knu  阅读(2399)  评论(8编辑  收藏  举报
©2009-2013 knu_knu. Version: 2.1.90 Release