微信开发笔记(一)通过.net如何实现接入微信


微信公众平台,给个人、企业和组织提供业务服务与用户管理能力的全新服务平台。现在基本上每个地方都可以看到微信存在,动不动就是让你扫一下加下微信。

经常遇到这样情况,“到一家餐馆吃饭,拿了个号,前台服务引导我们说扫下微信,就可实时知道你前面还有多少人了,现在叫到哪个号了”,对于大部分人来说,都觉得好神奇,其实如果你是一个开发,而且了解微信中的一些接口知识,你也完全可以搞出这么一个东西来。

总之,微信的应用现在到处都是,作为开发的你是否想一试??

 

本文主题,如何来接入微信公众平台呢??接入的目的实际就是用户每次向公众号发送消息、或者点击某个菜单,或者扫一个二维码,都会向你接入操作中填写的地址推送消息。

1、接入之前,先好好的看下微信提供的文档。

微信公众平台文档地址:http://mp.weixin.qq.com/wiki/home/

         从左侧导航选择“开始开发”-->“接入指南”,仔细看下吧。

 

2、正式开始接入,这里以测试号(接口文档“开始开发”-->“接口测试号申请”扫一扫开通)为例,通过.net如何来实现接入微信。

a)填写服务器配置,如下图(正式号也类似)

   URL:开发者用来接收微信消息和事件的接口URL,这里类似:http://yousitename.com/weixin.aspx

   Token:可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)

 

b)验证服务器地址

 提交服务器配置信息后,微信服务器将发送GET请求到填写的服务器地址URL上(也就是http://yousitename.com/weixin.aspx),GET请求携带四个参数:

signature     微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp   时间戳
nonce         随机数
echostr       随机字符串

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

加密/校验流程如下:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

 直接贴上.net校验的代码,复制到page_load中:

if (Request.HttpMethod.ToLower() == "get")
{
    string token = "wxtest";   //配置时写的token
    
    //从微信服务器 传递过来的数据
    string signature = Request.QueryString["signature"]; //微信加密签名
    string timestamp = Request.QueryString["timestamp"];//时间戳
    string nonce = Request.QueryString["nonce"];//随机数
    string echostr = Request.QueryString["echostr"];   //随机字符串

    //将token、timestamp、nonce三个参数进行字典序排序
    string[] arr = { token, timestamp, nonce };
    Array.Sort(arr);

    //将三个参数字符串拼接成一个字符串进行sha1加密
    string str = string.Join("", arr);
    str = FormsAuthentication.HashPasswordForStoringInConfigFile(str, "sha1").ToLower();

    //开发者获得加密后的字符串可与signature对比,标识该请求来源于微信,如果一致则成功
    if (str == signature)
    {
        Response.Write(echostr);
    }
}

 

 

 c)接入成功。验证URL有效性成功后即接入生效,成为开发者。此后用户每次向公众号发送消息、或者产生自定义菜单点击事件时,开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件,然后开发者可以依据自身业务逻辑进行响应,例如回复消息等。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM