要对接微信公众平台的"开发模式",即对接到自己的网站程序,必须在注册成功之后(见Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册),等待官方审核,审核通过之后,会在后台顶部出现“高级功能”菜单。

使用“高级功能”>“开发模式”之前,必须有一个已经部署在Internet上,可以用80端口访问的网站(域名或IP访问都可以),一些开发的准备工作见文章:Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者

首次进入“高级功能”后界面如下:

我们看到默认情况下,“编辑模式”是开启的,要使用“开发模式”,必须先关闭“编辑模式”。

点击进入编辑模式。如下图:

点击右上角的滑块,关闭“编辑功能”。

然后回到“高级功能”,进入“开发模式”,如下图:

进入开发模式后,我们需要设置与微信服务器通讯的Url,以及只有我们自己知道的Token(千万不可泄露)。

官方已经提供了一个PHP版本的示例:http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.zip,你也可以根据官方API的说明用自己的语言编写。

在Senparc.Weixin.MP的开源项目中,我们也提供了ASP.NET MVC和ASP.NET Web Forms两种可以直接部署的Demo:https://github.com/JeffreySu/WeiXinMPSDK

在提交的时候,微信服务器会对填写的URL,使用Token进行一次Get方式请求的验证,如果顺利通过,则保存成功,如果不通过,会给出错误信息,并且所填写的信息是无法保存的。

为了更加直观地演示这个URL对应的程序中,应高包含哪些必要元素,我这里给出Senparc.Weixin.MP的实现方法(我会分别以MVC和WebForms为例):

方法一:使用MVC

1、建立一个Controller,如WeixinController.cs,引用Senparc.Weixin.MP.dll(using Senparc.Weixin.MP.dll),最新的DLL见开源项目的Senparc.Weixin.MP.BuildOutPut文件夹https://github.com/JeffreySu/WeiXinMPSDK/tree/master/Senparc.Weixin.MP.BuildOutPut

2、设置一个私有变量(当然你也可以保存在数据库中),如:

public readonly string Token = "weixin";//与微信公众账号后台的Token设置保持一致,区分大小写。

3、建立一个名称为Index,用于Get请求的Action,如:

/// <summary>
/// 微信后台验证地址(使用Get),微信后台的“接口配置信息”的Url填写如:http://weixin.senparc.com/weixin
/// </summary>
[HttpGet]
[ActionName("Index")]
public ActionResult Get(string signature, string timestamp, string nonce, string echostr)
{if (CheckSignature.Check(signature, timestamp, nonce, Token)){return Content(echostr); //返回随机字符串则表示验证通过
    }else{return Content("failed:" + signature + "," + MP.CheckSignature.GetSignature(timestamp, nonce, Token)+"。如果您在浏览器中看到这条信息,表明此Url可以填入微信后台。");}
}

  至此,这些代码编译后按照要求部署到网站上,并且在“接口配置信息”中填写http://YourDomain/weixin,Token填写weixin。

上述代码完整的WeixinController.cs可以看这里。

方法二:使用Web Forms

Web Forms的验证过程和MVC是一样的,只是写法上有点差别,这里直接给出代码(也要using Senparc.Weixin.MP.dll),假设文件名为根目录下weixin.aspx:

public partial class Weixin : System.Web.UI.Page{private readonly string Token = "weixin";//与微信公众账号后台的Token设置保持一致,区分大小写。protected void Page_Load(object sender, EventArgs e){string signature = Request["signature"];string timestamp = Request["timestamp"];string nonce = Request["nonce"];string echostr = Request["echostr"];if (Request.HttpMethod == "GET"){//get method - 仅在微信后台填写URL验证时触发if (CheckSignature.Check(signature, timestamp, nonce, Token)){WriteContent(echostr); //返回随机字符串则表示验证通过
                }else{WriteContent("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token));}}else{//判断Post或其他方式请求
            }Response.End();}private void WriteContent(string str){Response.Output.Write(str);}
}

  按照上面的代码,在“接口配置信息”中,Url应当填写http://YourDomain/weixin.aspx,Token应当填写weixin。

上述weixin.aspx.cs完整代码看这里(当然你也可以写成ashx进一步提高效率)。

CheckSignature.Check()方法是Senparc.Weixin.MP SDK中一个验证请求的方法,已经做了封装。这里直接使用是为了简化代码突出重点,感兴趣的朋友可以直接看源代码。

用以上MVC和Web Forms两种方法的任意一种,已经可以让后台验证通过。但是注意,光有Get的方法,尚不能与微信用户发来的信息通讯,因为通过前面的教程我们知道,微信后台的Url是通过Get方式请求,而微信客户端的请求是由Post方式请求的,关于Post的方法,我会在后面的教程中详细说明。

并且,在目前的设置状态下,即便你写了Post相关的方法,通过验证之后也并不表示你的服务器已经可以接收到微信服务器的消息了,还有最后一步:手动打开“开发者模式”:

现在这个微信账号已经成功切换到了“开发者模式”,所有微信客户端发送到该公众账号的消息,都将转发到刚才填写的Url中。

下一篇我们将介绍如何使用最“粗矿”的方式响应客户端的发来的Post请求。

了解了“粗矿”方法之后,我们会正式进入“精致”和“简洁”的Senparc.Weixin.MP SDK的方法。

本人参考该教程编写了一个微信公众平台服务平台小云吞微管理,网址: http://www.xiaoyuntun.com

转载于:https://www.cnblogs.com/xiaoyuntun/p/3430439.html

转载收藏之用 - 微信公众平台开发教程(三):微信公众平台开发验证相关推荐

  1. Libusb开发教程三 USB设备程序开发

    首先,需要指出本篇博客的基础仍然是基于 libusb V1.0 以下.主要考虑到保持与之前博客的连贯性,在上一篇博客中介绍了老版本中可以被调用的 API 以及功能介绍,对于库中 API 接口函数的使用 ...

  2. 公众号第三方平台开发 - 教程五 代公众号发起网页授权源码

    教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台 ...

  3. 开发教程(四) MIP组件平台使用说明

    组件审核平台用于上传 MIP 组件.经过自动校验之后,提交审核,通过审核的组件会定时推送到线上,供网站使用. 平台地址:https://www.mipengine.org/platform/ 1. 使 ...

  4. MIP开发教程(三) 使用MIP-CLI工具调试组件

    一 . 在 mip-extensions 仓库中创建新的组件 二 . 预览调试组件 三 . 在 MIP 页中引用自己编写的 MIP 组件 四 . 组件提交到 GitHub 仓库时需要进行校验 站长开发 ...

  5. [libGDX游戏开发教程]使用LibGDX进行游戏开发(1)-游戏设计

    声明:本章是一个系列的开始,英文原文是<Learning libGDX Game Development>,大家请周知. [libgdx游戏开发教程]使用Libgdx进行游戏开发(2)-游 ...

  6. STM32F103C8T6基础开发教程(HAL库)—开发环境配置

    STM32F103C8T6基础开发教程目录 STM32F103C8T6基础开发教程(HAL库)-开发环境配置 STM32F103C8T6基础开发教程(HAL库)-Keil添加注释的快捷键 STM32F ...

  7. 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo

     更多微信技术交流,请加QQ群:289709451.287090836     前几章中我讲解了微信开发平台提供第三方平台的好处,和使用流程,如果你看了我的文章相信你对开放平台有了初步的了解,但是在实 ...

  8. 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台

     更多微信技术交流,请加QQ群:289709451.287090836    公众号第三方平台的开放,是为了让公众号运营者,在面向垂直行业需求时,可以一键登录授权给第三方的公众号运营平台,通过第三方开 ...

  9. java微信公众号开发教程_微信公众平台开发教程(java版本含代码) 中文PDF版 3.13MB...

    本文档将对即将推出的微信公众帐号开发系列连载教程做简单的说明. 教程主要是面向有一定 Java 编程基础的朋友, 目录: 微信公众帐号开发教程第 1 篇-引言  2 微信公众帐号开发教程第 2 篇-微 ...

  10. python微信公众号开发教程_python微信公众号开发简单流程实现

    本文为大家分享了python微信公众号开发的简单过程,供大家参考,具体内容如下 网上有很多微信公众号的开发教程,但是都是好几年前的了,而且很多都是抄袭其他人的,内容几乎一模一样.真的无语了.只好自己总 ...

最新文章

  1. O - Layout POJ - 3169(差分约束)
  2. 比特币的闪电网络正在创建自己的黑客阵营
  3. Python函数内置函数
  4. c语言最大公约数和最小公倍数_五年级数学最大公因数最小公倍数 练习
  5. 2.4寸液晶控制方法
  6. flash动画制作作品_flash施工动画制作应该展现哪些内容
  7. ps cc 生成html,使用photoshop生成网页的方法
  8. Python测试程序用时时长(运行时间测试)
  9. java对象与内存控制
  10. mysql查询女生的成绩_MySQL 统计查询实现代码
  11. php6 配置,thinkphp6下载安装与配置图文详细讲解教程(composer下载安装)
  12. [Python] itertools.islice(iterable, start, stop[, step]) 创建迭代器并返回所选元素
  13. linux基本命令示例_Linux ps命令– 20个真实示例
  14. 被动语态和非谓语区别_语法考点:非谓语动词!
  15. jbd2 mysql_jbd2 BUG · xiewen/xiewen.github.io Wiki · GitHub
  16. TM1640驱动程序
  17. AB测试-最佳方案测试
  18. 用VMware克隆CentOS 6.4后修改HWaddr
  19. Epsilon-Greedy算法
  20. python工程师都习惯用哪些开发工具呢

热门文章

  1. python判断英文字母_Python判断两个单词的相似度
  2. BOOL 值在 debug 和 release 模式下初始化不一样!!!
  3. navicat premium 链接postgresql 无法加载表_POSTGRESQL 数据库结构体系 ||| 东来西去 三个角度看...
  4. mips j指令_计算机组成原理 指令
  5. vs中imshow函数报错_opencv编程:8 imshow不显示图像和waitkey函数
  6. openwrt 安装尔雅云_[网络]openwrt的阿里云编译
  7. python调用c优缺点_Python调用C模块以及性能分析
  8. rust(10)-函数指针
  9. go语言基础到提高(1)-hello,world
  10. 【深度学习】Transformer长大了,它的兄弟姐妹们呢?(含Transformers超细节知识点)...