首先在威信后台填写服务器相关配置,这里按照说明直接填写就好了。配置提交前在需要在我们服务端先准备号接受微信请求的url,对请求内容做验证。

1、准备接口配置信息

A、服务器URL

该URL用于开发者接入时微信验证的GET请求地址,后继普通用户通过您的微信公众账号发送的信息或各种操作产生的事件,微信服务器也会转发并POST到这个URL上。这样您就可以根据不同的消息类型做URL路由,分别处理不同的消息或事件。要注意的是,目前只支持http方式,不支持https方式,而且只支持默认的80端口。

B、Token字符串

Token是用来生成签名的一个字符串,您可以随便填写(必须是英文字母或数字,最少3个字符,最多32个字符),只要你验证微信加密签名有效性时使用这个Token就可以了。它生成微信加密签名的一个参数,主要用于验证接入的安全性。

提示:如果您用的是测试号,配置上述信息即可;但如果是正式开发中,微信最新的要求还需要填写“消息加密密钥”并选择“消息加解密方式”。

C、消息加密密钥

消息加密密钥(EncodingAESKey)是微信最新的要求,其由43个字符组成,你可以自己手动填写,也可以点击“随机生成”。消息加密密钥只能是英文字母或数字,它的作用是“给消息体加密和解密”。

D、消息加解密方式

消息加解密的方式有三种,即“明文方式”、“兼容模式”和“安全模式”。

明文模式下消息加密密钥就废了,消息体不会使用上述密钥进行加密,安全系统较低;

兼容模式主要用于开发者调试程序,此时明明文和密文共同存在;

安全模式是微信推荐使用的方式,消息体被加密成纯密文,安全系统较高,但开发者需要自己加密和解密。

2、编写响应微信GET请求的代码

A、Get请求

// <summary>
/// 开发者指定的Token
/// </summary>
const string token = "pmlaomao"; public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain"; switch (context.Request.HttpMethod)
{
case "GET":
//接入成功后可以注释此行
JoinWeixin(context);
break;
case "POST":
//解析微信请求的XML消息文档
ParseXmlDocument(context);
break;
default:
context.Response.Write("不支持" + context.Request.HttpMethod + "方式!");
break;
} context.Response.End();
}

B、验证微信签名有效性

        /// <param name="signature">
/// 微信加密签名
/// <para>signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。</para>
/// </param>
/// <param name="timestamp">时间戳</param>
/// <param name="nonce">随机数</param>
/// <returns></returns>
private bool CheckSignature(string signature, string timestamp, string nonce)
{
string[] tmpArr = { token, timestamp, nonce };//将token、timestamp、nonce三个参数进行字典序排序
Array.Sort(tmpArr);
string tmpStr = string.Join("", tmpArr);
tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");//将三个参数字符串拼接成一个字符串进行sha1加密
tmpStr = tmpStr.ToLower(); return tmpStr == signature;//开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
}

C、原样返回echostr参数

/// <summary>
/// 接入微信
/// <para>返回echostr参数内容,则接入生效,否则接入失败。 </para>
/// </summary>
/// <param name="context"></param>
private void JoinWeixin(HttpContext context)
{
string signature = context.Request.QueryString["signature"];
string timestamp = context.Request.QueryString["timestamp"];
string nonce = context.Request.QueryString["nonce"];
string echostr = context.Request.QueryString["echostr"]; if (CheckSignature(signature, timestamp, nonce))
{
if (!string.IsNullOrEmpty(echostr))
{
context.Response.Write(echostr);
}
else
{
context.Response.Write("随机字符串为空!");
}
}
else
{
context.Response.Write("微信加密签名验证失败!");
} context.Response.End();
}

3、配置页面提交申请

完成上述代码编写并部署到您的服务器后,您就可以在微信公众平台“开发者中心”->“配置项”中填写上述准备好的接口配置信息,然后点击“提交”按钮将配置信息提交给微信服务器。微信服务器收到信息之后,会向您提交的URL地址发送一条GET请求.

完成上述工作后,在微信后台提交配置就可以进行验证,注意Token一定要与微信配置中的一直。

一般处理程序ashx接入微信服务器配置的更多相关文章

  1. .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转

    .net mvc 站点自带简易SSL加密传输   因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...

  2. 如何用Azure Web App Services接入微信公众号

    注:本文提到的代码示例下载地址>如何用Azure Web App Services接入微信公众号 如何用Azure Web App Services接入微信公众号 简介 此示例演示如何创建Azu ...

  3. 【微信Java开发 --2】接入微信公众平台开发,配置自己的服务器,验证过程

    接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑好我们就开始:1.填写好我们的URL和Token[此处是已经通过验证的] ...

  4. 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发

    第一部分:微信公众号对接的基本介绍 一.填写服务器配置信息的介绍 登录微信公众平台官网后,进入到公众平台后台管理页面. 选择 公众号基本设置->基本配置 ,点击“修改配置”按钮,填写服务器地址( ...

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

    微信公众平台,给个人.企业和组织提供业务服务与用户管理能力的全新服务平台.现在基本上每个地方都可以看到微信存在,动不动就是让你扫一下加下微信. 经常遇到这样情况,“到一家餐馆吃饭,拿了个号,前台服务引 ...

  6. 1.Node.js 接入微信公众平台开发

    一.写在前面的话   Node.js是一个开放源代码.跨平台的JavaScript语言运行环境,采用Google开发的V8运行代码,使用事件驱动.非阻塞和异步输入输出模型等技术来提高性能,可优化应用程 ...

  7. Java微信公众平台开发(一)--接入微信公众平台

    转自:http://www.cuiyongzhi.com/post/38.html (一)接入流程解析 在我们的开发过程中无论如何最好的参考工具当然是我们的官方文档了:http://mp.weixin ...

  8. Java开发微信公众号(二)---开启开发者模式,接入微信公众平台开发

    接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 资料准备: 1.一个可以访问的外网,即80的访问端口,因为微信公众号接 ...

  9. 在Web应用中接入微信支付的流程之极简清晰版

    在Web应用中接入微信支付的流程之极简清晰版 背景: 在Web应用中接入微信支付,我以为只是调用几个API稍作调试即可. 没想到微信的API和官方文档里隐坑无数,致我抱着怀疑人生的心情悲愤踩遍了丫们布 ...

随机推荐

  1. 710. Random Pick with Blacklist - LeetCode

    Question 710. Random Pick with Blacklist Solution 题目大意:给一个N,表示一个范围[0,N),给一个黑名单列表blacklist,其中blacklis ...

  2. Hapoop安装学习(第一天)

    学习任务: 1.安装虚拟机 Linux使用版本为Centos7,共安装3台虚拟机,一台主机和两台从机.主机命名为master,两台从机分别命名为s1和s2. master分配磁盘空间30G,s1和s2 ...

  3. mysql外键与表查询

    目录 自增特性 外键 外键关系 外键创建 外键的约束效果 级联更新级联删除 多对多关系 一对一关系 表查询关键字 select与from where筛选 group by分组 练习 关系练习 查询练习 ...

  4. drools中then部分的写法

    目录 1.背景 2.支持的方法 2.1 insert 插入对象到工作内存中 2.1.1 需求 2.1.2 drl文件编写 2.1.3 部分java代码编写 2.1.4 运行结果 2.1.5 结论 2. ...

  5. [学习笔记] pd_ds黑科技

    https://www.cnblogs.com/jiqimin/p/11226809.html 丢个链接,跑路 // Author: wlzhouzhuan #pragma GCC optimize( ...

  6. C++ 智能指针浅析

    C++ 智能指针浅析 为了解决 C++ 中内存管理这个老大难问题,C++ 11 中提供了三种可用的智能指针.(早期标准库中还存在一种 auto_ptr,但由于设计上的缺陷,已经被 unique_ptr ...

  7. bootstrap 4.0 dropdown 找不到popper.js 的解决方案

    最近项目中升级bootstrap 由3.3.7版 升了4.0版本 发现 dropdown 找不到popper.js 解决办法:npm install -save popper 下载完之后,查看node ...

  8. vs code nginx php xdebug配置

    终于把VSCODE XDEBUG配置搞定了 分享一下 1. VSCODE  安装插件 PHP Debug( Debug supprot for PHP with XDebug); 2. VSCODE ...

  9. VMware虚拟机基于contos 7 搭建lnmp环境全过程

    这个环境也整了几次了,由于本人比较懒,没有记住.找资料很麻烦,就自己动手咯 1.下载VMware虚拟机   (有注册码)     地址:http://www.zdfans.com/5928.html ...

  10. Linux字符集和编码

    计算机内部,所有信息最终都是一个二进制值形式存放 字符集 字符集:charset是character set的简写,即二进制和字符的对应关系,不关注最终的存储形式 编码 字符集编码:encoding是 ...