准备工作:

打开官网创建自己的微信公众号 官网

创建公众号完成打开基本配置->填写服务器配置

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) 微信公众号开发一 基本配置相关推荐

  1. 微信公众号开发教程[002]-配置

    一.注册微信公众号 微信公众号官方入口https://mp.weixin.qq.com注册公众号,注册过程中,类型选择可能是新手比较迷惑的地方.微信公众号分为订阅号和服务号(还有个企业号,似乎用的人不 ...

  2. 微信公众号 服务器配置 token 测试,微信公众号开发:基本配置Token验证简单事件回复...

    公众号配置的URL就是你自己服务器上验证TOKEN的方法的地址 比如我验证TOKEN的方法访问地址是http://www.aaa.cn/wx_api.php 那我公众号配置的URL就要填http:// ...

  3. 微信公众号开发的一些配置

    1.开发者ID(AppID) 开发者ID是公众号开发识别码,配合开发者密码可调用公众号的接口能力. 2.开发者密码(AppSecret) 开发者密码是校验公众号开发者身份的密码,具有极高的安全性.切记 ...

  4. 微信公众号开发-网页授权——配置测试账号

    思路分析: 1.创建测试账号并且配置测试账号的授权回调域名. 2.由前端发起授权请求,微信收到请求后(若是首次打开,并且未关注公众号,微信会弹出授权页,提示用户授权)将重定向到请求url中配置的red ...

  5. vue 微信公众号开发 网页授权 配置业务域名

    服务号! 服务号! 服务号! 1.官网下载xxx.txt文件 2.将文件放入vue项目的static文件夹中(注意不是src的static) 3.输入域名网址www.xxx.com/static/xx ...

  6. 微信公众号开发测试部署步骤

    一.申请微信公众账号测试号: 因本地开发自己公众号无法认证,所以在本地开发时需要用微信公众账号测试号申请系统:申请步骤如下: 登录注册自己的微信公众平台,选择左侧菜单栏中开发-开发者工具,出现的页面点 ...

  7. 微信公众号开发本地环境开发_如何在5分钟内使HTTPS在本地开发环境上工作

    微信公众号开发本地环境开发 Almost any website you visit today is protected by HTTPS. If yours isn't yet, it shoul ...

  8. 微信公众号开发用书php,php微信公众号开发(3)php实现简单微信文本通讯

    <PHP实战:PHP微信公众号开发(3)PHP实现简单微信文本通讯>要点: 本文介绍了PHP实战:PHP微信公众号开发(3)PHP实现简单微信文本通讯,希望对您有用.如果有疑问,可以联系我 ...

  9. 【微信公众号开发】获取并保存access_token、jsapi_ticket票据(可用于微信分享、语音识别等等)...

    步骤一:首先得开通公众号(目的是 获得appid.AppSecret.设置安全域名)~ [公众号设置]→[功能设置] 设置相应的域名 步骤二:编写帮助类WeixinLuyinHelper中的代码 #r ...

最新文章

  1. Java RESTful Web Service实战
  2. 体素科技:2018年,算法驱动下的医学影像分析进展
  3. 提问的智慧 如何得到好的帮助(转)
  4. android 成长日记 8.Fragment学习之方法回调
  5. 1716. 计算力扣银行的钱
  6. jquery隐式迭代
  7. 深入理解Android壁纸
  8. 图像处理MATLAB(图像分割)
  9. 滑动验证码最简单案例:破解qq空间(豆瓣网)滑块验证码(python+selenium实现)
  10. RTK差分通讯链路---电台
  11. vue+离线百度地图
  12. 希捷2t服务器硬盘是什么盘,希捷酷鱼2T 3.5寸硬盘晒单以及小白安装应该避免的坑...
  13. Win10运行红色警戒2尤里的复仇联机技巧+防守地图
  14. 7723java异形_7723-14-0
  15. RK3066移动鼠标,有时会卡顿一会儿
  16. 关于vue3 的vue-router.mjs:3434 ReferenceError: parcelRequire is not defined
  17. Erlang中的fun函数使用详解
  18. 修改人人商城支付后报错“服务器暂时无法处理您的请求,请稍后重试“
  19. 【读书笔记】概率图模型——基于R语言(一)
  20. React State

热门文章

  1. Python Flask 搭建微信小程序后台详解
  2. 通讯数据处理规则定义加字节数据处理
  3. 永恒之塔知识竞答抢号活动
  4. live和on的区别
  5. 解决maven引入swagger2markup 包报错问题
  6. go语言ast语法解析
  7. English Learning - L3 作业打卡 Lesson4 Day28 2023.6.1 周四
  8. C语言-对“hard code”的思考
  9. 数据库设计时的一些注意事项
  10. 浏览器,太坑的字体设置