一般处理程序ashx接入微信服务器配置
首先在威信后台填写服务器相关配置,这里按照说明直接填写就好了。配置提交前在需要在我们服务端先准备号接受微信请求的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接入微信服务器配置的更多相关文章
- .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 ...
- 如何用Azure Web App Services接入微信公众号
注:本文提到的代码示例下载地址>如何用Azure Web App Services接入微信公众号 如何用Azure Web App Services接入微信公众号 简介 此示例演示如何创建Azu ...
- 【微信Java开发 --2】接入微信公众平台开发,配置自己的服务器,验证过程
接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑好我们就开始:1.填写好我们的URL和Token[此处是已经通过验证的] ...
- 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发
第一部分:微信公众号对接的基本介绍 一.填写服务器配置信息的介绍 登录微信公众平台官网后,进入到公众平台后台管理页面. 选择 公众号基本设置->基本配置 ,点击“修改配置”按钮,填写服务器地址( ...
- 微信开发笔记(一)通过.net如何实现接入微信
微信公众平台,给个人.企业和组织提供业务服务与用户管理能力的全新服务平台.现在基本上每个地方都可以看到微信存在,动不动就是让你扫一下加下微信. 经常遇到这样情况,“到一家餐馆吃饭,拿了个号,前台服务引 ...
- 1.Node.js 接入微信公众平台开发
一.写在前面的话 Node.js是一个开放源代码.跨平台的JavaScript语言运行环境,采用Google开发的V8运行代码,使用事件驱动.非阻塞和异步输入输出模型等技术来提高性能,可优化应用程 ...
- Java微信公众平台开发(一)--接入微信公众平台
转自:http://www.cuiyongzhi.com/post/38.html (一)接入流程解析 在我们的开发过程中无论如何最好的参考工具当然是我们的官方文档了:http://mp.weixin ...
- Java开发微信公众号(二)---开启开发者模式,接入微信公众平台开发
接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 资料准备: 1.一个可以访问的外网,即80的访问端口,因为微信公众号接 ...
- 在Web应用中接入微信支付的流程之极简清晰版
在Web应用中接入微信支付的流程之极简清晰版 背景: 在Web应用中接入微信支付,我以为只是调用几个API稍作调试即可. 没想到微信的API和官方文档里隐坑无数,致我抱着怀疑人生的心情悲愤踩遍了丫们布 ...
随机推荐
- 安装Zabbix到Ubuntu(APT)
运行环境 系统版本:Ubuntu 16.04.2 LTS 软件版本:Zabbix-4.0.2 硬件要求:无 安装过程 1.安装APT-Zabbix存储库 APT-Zabbix存储库由Zabbix官网提 ...
- 每天一个 HTTP 状态码 206
206 Partial Content 206 Partial Content 是当客户端请求时使用了 Range 头部,服务器端回复的响应,表示只响应一部分内容. 实例 请求: GET /favor ...
- ElasticSearch7.3学习(二十九)----聚合实战之使用Java api实现电视案例
一.数据准备 创建索引及映射 建立价格.颜色.品牌.售卖日期字段 PUT /tvs PUT /tvs/_mapping { "properties": { "price& ...
- 【Java面试】如何中断一个正在运行的线程?
一个去京东面试的工作了5年的粉丝来找我说: Mic老师,你说并发编程很重要,果然我今天又挂在一道并发编程的面试题上了. 我问他问题是什么,他说:"如何中断一个正在运行中的线程?". ...
- Flink使用Pod Template将状态快照(Checkpoint、Savepoint)存储在NFS
背景 Flink 版本 1.13.3,使用 native k8s 部署模式,原采用 HDFS 作为状态快照(Checkpoint.Savepoint)的存储地址,但是由于仅使用了其 HDFS 作为状态 ...
- CentOS搭建BWAPP靶场并安装docker
为了不触碰国家安全网络红线作为技术人员我们尽可能的要在自己本机在上面创建自己的靶场: 在centos上面搭建靶场看似非常简单短短几行代码,需要注意以下几个点:(1.在docker上搭建 2.端口号 ...
- PHP时间轴函数
PHP时间轴函数可以更好的去进行用户体验.让用户动态的知道最近是什么时候,而不是死板的datatime去转换成固定的时间. 后续版本会考虑添加这个功能,代码先贴出来. function tranTim ...
- leetcode二叉树题目总结
leetcode二叉树题目总结 题目链接:https://leetcode-cn.com/leetbook/detail/data-structure-binary-tree/ 前序遍历(NLR) p ...
- 深入理解 volatile 关键字
volatile 关键字是 Java 语言的高级特性,但要弄清楚其工作原理,需要先弄懂 Java 内存模型.如果你之前没了解过 Java 内存模型,那可以先看看之前我写过的一篇「深入理解 Java 内 ...
- JS中通过Input中id获取输入框中的值
HTML中 <input type="text" id="ONE" oninput="kpi()"> JS中 function ...