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

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

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

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

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将得到微信服务器推送过来的消息和事件,然后开发者可以依据自身业务逻辑进行响应,例如回复消息等。

微信开发笔记(一)通过.net如何实现接入微信的更多相关文章

  1. 微信开发笔记:获取用户openid,以及用户头像昵称等信息

    微信开发的时候有一个很便利的途径来进行一个用户的一步注册登录,就是使用用户的微信信息来直接进行登陆,可以省去很多不必要的麻烦.那具体这些信息是如何来获取的呢? 首先呢,我们需要对微信进行一个授权,让微 ...

  2. 微信开发笔记:公众号获取access_token

    微信开发中,access_token的获取是一种非常常见的功能,通过公众号的appid和appsecret来向微信公众平台请求一个临时通行凭证:access_token.公众平台上的绝大部分操作都会需 ...

  3. C#微信开发小白成长教程二(新手接入指南,附视频)

    距离第一讲又已经过去了一个多星期了,本打算一周更新一讲的,奈何实在太忙.最近也在群里发现有一部分人已经可以熟练调用微信的部分接口但却不是很清楚微信公众平台接收消息的一个处理机制.本讲就来介绍下怎么接入 ...

  4. 微信开发笔记(accesstoken)

    access_token分两种 一种是公众号权限获取用,调用cgi-bin接口 ,此种token一个公众号同时只有一个,用这一个就够了. 服务器最好缓存. 用这个token前提是用户关注了此公众号. ...

  5. 第一个微信小程序的初始化过程、小程序微信开发平台的下载、如何注册一个微信小程序的账号

    文章目录 1.注册微信小程序账号 1.1 小程序的注册流程 1.2 登录小程序账号 2.下载微信小程序开发者平台 3.新建一个小程序 3.1 点击加号 3.2 填写项目目录和小程序ID 3.3 点击确 ...

  6. 崔用志-微信开发-java版本

    崔用志-微信开发-java版本 今天看到一些关于微信开发的知识蛮好的博客,分享给大家,希望对大家有帮助. 微信开发准备(一)--Maven仓库管理新建WEB项目 微信开发准备(二)--springmv ...

  7. NETSHARP微信开发说明

    一.微信开发介绍 1.微信分为个人号,订阅号.服务号,需要去理解三个号的区别,对于开发来说也需要了解不同的账号所提供的功能 2.微信号需要审批,审批之后有一些功能才能使用 3.微信提供的功能及使用情况 ...

  8. 微信开发——微信公众平台实现消息接收以及消息的处理(Java版)

    本文主要讲述了如何在微信公众平台实现消息接收以及消息的处理,使用java语言开发,现在把实现思路和代码整理出来分先给兄弟们,希望给他们带来帮助. 温馨提示: 这篇文章是依赖前几篇的文章的. 第一篇:微 ...

  9. Java微信开发_00_资源汇总贴

    1.微信公众平台技术文档(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432) 2.微信企业号开发接口文档(ht ...

随机推荐

  1. Wex5案例使用JSON传输Thinkphp后端对接,以达成数据正常输出

    初步接触Wex5,操作起来还是觉得比较复杂!而且教程不多,让我着实比较烦躁! 因此自己动手丰衣足食!还是比较实在的! 采用版本:WeX5应用快速开发框架V3.5正式版 我们使用Wex5的仿淘宝APP案 ...

  2. 在Windows驗證網站設定部分匿名存取

    最近接連遇到幾次的需求:供內部使用的ASP.NET網站,全站使用Windows驗證,使用者以網域AD帳號登入,但網站包含少數API性質的ASHX.ASPX或MVC Action,提供其他系統呼叫整合. ...

  3. C++学习17派生类的构造函数

    基类的构造函数不能被继承,在声明派生类时,对继承过来的成员变量的初始化工作也要由派生类的构造函数来完成.所以在设计派生类的构造函数时,不仅要考虑派生类新增的成员变量,还要考虑基类的成员变量,要让它们都 ...

  4. [ActionScript 3.0] AS3 ConvolutionFilter卷积滤镜的应用

    ConvolutionFilter 类应用矩阵盘绕滤镜效果.卷积将输入图像的像素与相邻的像素合并以生成图像.通过卷积,可以实现大量的图像效果,包括模糊.边缘检测.锐化.浮雕和斜角.您可以将滤镜应用于任 ...

  5. centos 6.5 安装 buildbot-slave 0.8.9

    公司服务器多数都用的centos,这个是大环境,改不了,只好研究怎么安装buildbot-slave. buildbot-master倒是没有问题,可控,自己弄了一个ubuntu14来玩. cento ...

  6. (easy)LeetCode 258.Add Digits

    Given a non-negative integer num, repeatedly add all its digits until the result has only one digit. ...

  7. Package 'DXCore for Visual Studio' has failed to load properly

    Since installing 13.1  I get Package 'DXCore for Visual Studio' has failed to load properly error wh ...

  8. 数据以Excel形式导出导服务器,再将文件读取到客户端另存 以HSSFWorkbook方式实现

    public void exportExcel(List<P2pInfo> repayXist,HttpServletRequest request,HttpServletResponse ...

  9. CODESOFT中的圆角矩形的弧度该怎样设置?

      CODESOFT标签设计软件提供多种图形制作按钮,方便用户更为快捷的制作标签.其中就包括矩形,圆角矩形的快捷创建按钮.本文将介绍如何设置CODESOFT圆角矩形的弧度. 若有疑问可直接访问:htt ...

  10. MXNet符号编程

    构成符号: 符号对我们想要进行的计算进行了描述, 下图展示了符号如何对计算进行描述. 下图定义了符号变量A, 符号变量B, 生成了符号变量C, 其中, A, B为参数节点, C为内部节点! mxnet ...