C#(CSharp) 微信公众号开发一 基本配置
准备工作:
打开官网创建自己的微信公众号 官网
创建公众号完成打开基本配置->填写服务器配置
1.
说明:
URL: 填写自己的服务器的地址,可以接收到微信服务器发送的信息 笔者使用腾讯云的云服务器,新手还挺便宜的 腾讯云官网
Token: 用来验证微信发送的信息和获得公众号的Access_Token
EncodingAESKey: 加密密钥,微信回通过这个密钥把数据加密后,把数据传送给自己的服务器,自己的服务器需要通过这个密钥加密(前提是开启了安全模式),如果是明文模式不需要使用加密加密
消息加密解密方式: 明文模式:传送的数据不加密,直接传送,缺点就是不安全,容易被盗
安全模式:微信回把数据进行EncodingAESKey这个密钥加密后传递给自己的服务器,服务器收到数据需要解密,这个安全系数高,传送的都是密文
2.
配置完成之后,提交微信服务器需要验证自己的服务器地址是否可用
微信服务器会给URL这个服务器地址发送一个Get请求
参数内容:
参数 | 描述 |
signature | 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 |
timestamp | 时间戳 |
nonce | 随机数 |
echostr | 随机字符串 |
验证这个信息是微信服务器发送过来的验证信息
方法一:
1)将token、timestamp、nonce三个参数进行字典序排序
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
static void Main(string[] args){if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))AddAddress("http://+:8080/WeChatThePublic/");HttpListener httpListener = new HttpListener();httpListener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;//指定身份验证 Anonymous匿名访问httpListener.Prefixes.Add("http://+:8080/WeChatThePublic/");//绑定地址httpListener.UnsafeConnectionNtlmAuthentication = true;httpListener.Start();while (true){var context = httpListener.GetContext();//接受HTTP信息HttpListenerRequest aaa = context.Request;Console.WriteLine(aaa.HttpMethod);switch (aaa.HttpMethod){case "GET"://这个是认证服务器的CheckServer(context, aaa);break;}}}private static void CheckServer(HttpListenerContext context, HttpListenerRequest aaa){string signature = aaa.QueryString["signature"];string timestamp = aaa.QueryString["timestamp"];string nonce = aaa.QueryString["nonce"];string echostr = aaa.QueryString["echostr"];string[] strs = new string[] { "4", timestamp, nonce };Array.Sort(strs);string j = string.Join("", strs);//创建SHA1加密算法对象SHA1 sha1 = SHA1.Create();//将原始密码转换为字节数组byte[] originalPwd = Encoding.UTF8.GetBytes(j);//加密byte[] key = sha1.ComputeHash(originalPwd);StringBuilder sub = new StringBuilder();foreach (var t in key){sub.Append(t.ToString("x2"));//转16进行显示}//如果加密后的信息等于signature,就是微信发送的信息if (string.Equals(sub.ToString(), signature, StringComparison.InvariantCultureIgnoreCase)){using (var response = context.Response){//是微信的服务器发送的信息,就把这个信息返给他response.OutputStream.Write(Encoding.UTF8.GetBytes(echostr));}}}
方法二:
你可以直接把echostr这个值直接返回给微信服务器通过验证,但是这么做的话,以后有服务器发送了Get请求,就不知道是哪个服务器发送的啦
static void Main(string[] args){if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))AddAddress("http://+:8080/WeChatThePublic/");HttpListener httpListener = new HttpListener();httpListener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;//指定身份验证 Anonymous匿名访问httpListener.Prefixes.Add("http://+:8080/WeChatThePublic/");//绑定地址httpListener.UnsafeConnectionNtlmAuthentication = true;httpListener.Start();while (true){var context = httpListener.GetContext();//接受HTTP信息HttpListenerRequest aaa = context.Request;Console.WriteLine(aaa.HttpMethod);switch (aaa.HttpMethod){case "GET"://这个是认证服务器的CheckServer(context, aaa);break;}}}private static void CheckServer(HttpListenerContext context, HttpListenerRequest aaa){string signature = aaa.QueryString["signature"];string timestamp = aaa.QueryString["timestamp"];string nonce = aaa.QueryString["nonce"];string echostr = aaa.QueryString["echostr"];using (var response = context.Response){//是微信的服务器发送的信息,就把这个信息返给他response.OutputStream.Write(Encoding.UTF8.GetBytes(echostr));}}
这样就可以通过微信的验证啦
关注微信公众号【浪子独白】 回复 “c#微信公众号源码”
可以获得本人封装一套微信公众号开发源码!
C#(CSharp) 微信公众号开发一 基本配置相关推荐
- 微信公众号开发教程[002]-配置
一.注册微信公众号 微信公众号官方入口https://mp.weixin.qq.com注册公众号,注册过程中,类型选择可能是新手比较迷惑的地方.微信公众号分为订阅号和服务号(还有个企业号,似乎用的人不 ...
- 微信公众号 服务器配置 token 测试,微信公众号开发:基本配置Token验证简单事件回复...
公众号配置的URL就是你自己服务器上验证TOKEN的方法的地址 比如我验证TOKEN的方法访问地址是http://www.aaa.cn/wx_api.php 那我公众号配置的URL就要填http:// ...
- 微信公众号开发的一些配置
1.开发者ID(AppID) 开发者ID是公众号开发识别码,配合开发者密码可调用公众号的接口能力. 2.开发者密码(AppSecret) 开发者密码是校验公众号开发者身份的密码,具有极高的安全性.切记 ...
- 微信公众号开发-网页授权——配置测试账号
思路分析: 1.创建测试账号并且配置测试账号的授权回调域名. 2.由前端发起授权请求,微信收到请求后(若是首次打开,并且未关注公众号,微信会弹出授权页,提示用户授权)将重定向到请求url中配置的red ...
- vue 微信公众号开发 网页授权 配置业务域名
服务号! 服务号! 服务号! 1.官网下载xxx.txt文件 2.将文件放入vue项目的static文件夹中(注意不是src的static) 3.输入域名网址www.xxx.com/static/xx ...
- 微信公众号开发测试部署步骤
一.申请微信公众账号测试号: 因本地开发自己公众号无法认证,所以在本地开发时需要用微信公众账号测试号申请系统:申请步骤如下: 登录注册自己的微信公众平台,选择左侧菜单栏中开发-开发者工具,出现的页面点 ...
- 微信公众号开发本地环境开发_如何在5分钟内使HTTPS在本地开发环境上工作
微信公众号开发本地环境开发 Almost any website you visit today is protected by HTTPS. If yours isn't yet, it shoul ...
- 微信公众号开发用书php,php微信公众号开发(3)php实现简单微信文本通讯
<PHP实战:PHP微信公众号开发(3)PHP实现简单微信文本通讯>要点: 本文介绍了PHP实战:PHP微信公众号开发(3)PHP实现简单微信文本通讯,希望对您有用.如果有疑问,可以联系我 ...
- 【微信公众号开发】获取并保存access_token、jsapi_ticket票据(可用于微信分享、语音识别等等)...
步骤一:首先得开通公众号(目的是 获得appid.AppSecret.设置安全域名)~ [公众号设置]→[功能设置] 设置相应的域名 步骤二:编写帮助类WeixinLuyinHelper中的代码 #r ...
最新文章
- Java RESTful Web Service实战
- 体素科技:2018年,算法驱动下的医学影像分析进展
- 提问的智慧 如何得到好的帮助(转)
- android 成长日记 8.Fragment学习之方法回调
- 1716. 计算力扣银行的钱
- jquery隐式迭代
- 深入理解Android壁纸
- 图像处理MATLAB(图像分割)
- 滑动验证码最简单案例:破解qq空间(豆瓣网)滑块验证码(python+selenium实现)
- RTK差分通讯链路---电台
- vue+离线百度地图
- 希捷2t服务器硬盘是什么盘,希捷酷鱼2T 3.5寸硬盘晒单以及小白安装应该避免的坑...
- Win10运行红色警戒2尤里的复仇联机技巧+防守地图
- 7723java异形_7723-14-0
- RK3066移动鼠标,有时会卡顿一会儿
- 关于vue3 的vue-router.mjs:3434 ReferenceError: parcelRequire is not defined
- Erlang中的fun函数使用详解
- 修改人人商城支付后报错“服务器暂时无法处理您的请求,请稍后重试“
- 【读书笔记】概率图模型——基于R语言(一)
- React State