ASP.NET CORE 开发微信公众号(一、测试号管理)
一、注册账号
百度微信公众平台,点击进入。
二、公众平台测试账号
点击进入平台后居然是小程序,我也很费解。以前是找到开发->开发者工具->公众平台测试账号,现在毛都没有了。

不过可以点击这里调转。
三、进入公众平台。
这里好像要微信扫码登录。

上面的接口配置信息是给接口服务器端使用,下面的JS接口安全域名是给前端调用。
这里的坑还是多,而且官方文档含糊其辞,这点差评。
首先就是为何要有这个域名。说的直白一点,就是你要想和微信第三方接口通讯,必须要有一个能被外网访问的接口暴露出去供第三方调用。所以你需要有一个服务器和域名。
这里需要注意:
1、服务器随便搞。我的是阿里云的云服务器。
2、域名,这里必须要用域名,不然会配置失败。
3、必须是http的80端口或者https的443默认端口。
4、URL的方法是GET请求,方法名随意。
5、必须把服务器ip添加到白名单。
添加到白名单在微信公众平台添加。

四、现在来测试一下。

js同样的这样就可以了。

五、微信在线测试接口
https://mp.weixin.qq.com/debug
六、代码
6.1、接口方法

1 /// <summary>
2 /// 检测接口
3 /// 作用:在注册微信公众号的测试号管理界面,提供接口配置信息。接收微信接入验证请求,并给与响应。
4 /// </summary>
5 /// <param name="signature">微信加密签名</param>
6 /// <param name="timestamp">时间戳</param>
7 /// <param name="nonce">随机数</param>
8 /// <param name="echostr">随机字符串</param>
9 /// <returns></returns>
10 [HttpGet("CheckWeChat")]
11 public string CheckWeChat(string signature, string timestamp, string nonce, string echostr)
12 {
13 log.Debug("微信端成功请求到接口!");
14 log.Debug($"signature:{signature},timestamp:{timestamp},nonce:{nonce},echostr:{echostr}");
15
16 if (!string.IsNullOrWhiteSpace(signature) && !string.IsNullOrWhiteSpace(timestamp) && !string.IsNullOrWhiteSpace(nonce) && !string.IsNullOrWhiteSpace(echostr))
17 {
18 log.Debug("进入验证内部");
19
20 //读取配置Token,需要和你填写的一样
21 var token = JsonFileHelper.Read("WeChat_TestToken");
22
23 if (!string.IsNullOrWhiteSpace(token) && WeChatHelper.VerificationSignature(echostr, nonce, signature, timestamp, token))
24 {
25 log.Debug("成功!");
26 //如果调用成功,返回随机字符串
27 return echostr;
28 }
29 }
30 return "false";
31 }
6.2、帮助类

1 public static string GetSha1Hash(string str)
2 {
3 var inputBytes = Encoding.Default.GetBytes(str);
4
5 SHA1 sha = new SHA1CryptoServiceProvider();
6
7 var result = sha.ComputeHash(inputBytes);
8
9 var sBuilder = new StringBuilder();
10
11 for (var i = 0; i < result.Length; i++)
12 {
13 sBuilder.Append(result[i].ToString("x2"));
14 }
15
16 return sBuilder.ToString();
17 }

1 /// <summary>
2 /// 签名验证
3 /// </summary>
4 /// <param name="echostr">随机字符串</param>
5 /// <param name="nonce">随机数</param>
6 /// <param name="signature">微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。</param>
7 /// <param name="timestamp">时间戳</param>
8 /// <param name="token">用户签名</param>
9 /// <returns></returns>
10 public static bool VerificationSignature(string echostr, string nonce, string signature, string timestamp,string token)
11 {
12 string[] StrArray = { token, timestamp, nonce };
13 Array.Sort(StrArray);
14 var ArrayString = new StringBuilder();
15 for (var i = 0; i < StrArray.Length; i++)
16 ArrayString.Append(StrArray[i]);
17 var strHash = GetSha1Hash(ArrayString.ToString());
18 return signature == strHash;
19 }
6.3、截图


七、远程服务器代码发布

想要源码的可以联系我。希望对大家有帮助。
ASP.NET CORE 开发微信公众号(一、测试号管理)的更多相关文章
- spring-boot-route(二十三)开发微信公众号
在讲微信公众号开发之前,先来大概了解一下微信公众号.微信公众号大体上可以分为服务号和订阅号,订阅号和服务号的区别如下: 服务号可以申请微信支付功能. 服务号只能由企业申请,订阅号可以有企业或个人申请. ...
- Java开发微信公众号(五)---微信开发中如何获取access_token以及缓存access_token
获取access_token是微信api最重要的一个部分,因为调用其他api很多都需要用到access_token.比如自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等在请求的时候 ...
- Java开发微信公众号(三)---微信服务器请求消息,响应消息,事件消息以及工具处理类的封装
在前面几篇文章我们讲了微信公众号环境的配置 和微信公众号服务的接入,接下来我们来说一下微信服务器请求消息,响应消息以及事件消息的相关内容,首先我们来分析一下消息类型和返回xml格式及实体类的封装. ( ...
- 小机器人自动回复(python,可扩展开发微信公众号的小机器人)
api来之图灵机器人.我们都知道微信公众号可以有自动回复,我们先用python脚本编写一个简单的自动回复的脚本,利用图灵机器人的api. http://www.tuling123.com/help/h ...
- vue+node.js+webpack开发微信公众号功能填坑——v -for循环
页面整体框架实现,实现小功能,循环出数据,整体代码是上一篇 vue+node.js+webpack开发微信公众号功能填坑--组件按需引入 修改部门代码 app.vue <yd-flexbox&g ...
- vue+node.js+webpack开发微信公众号功能填坑——组件按需引入
初次开发微信公众号,整体框架是经理搭建,小喽喽只是实现部分功能,整体页面效果 整个页面使用两个组件:布局 FlexBox,搜索框 Search,demo文档 http://vue.ydui.org/d ...
- PHP开发微信公众号
PHP开发微信公众号:配置和部署服务器及Token认证 https://zhuanlan.zhihu.com/p/28259840
- 使用vue开发微信公众号下SPA站点的填坑之旅
原文发表于本人博客,点击进入使用vue开发微信公众号下SPA站点的填坑之旅 本文为我创业过程中,开发项目的填坑之旅.作为一个技术宅男,我的项目是做一个微信公众号,前后端全部自己搞定,不浪费国家一分钱^ ...
- PHP开发微信公众号(一)二维码的获取
要开发微信公众号,首先进行需要注册一个,然后认证.这就不用多说了. 当然如果没有,也可以去申请一个测试号来使用,地址:https://mp.weixin.qq.com/debug/cgi-bin/sa ...
随机推荐
- 【征文活动】为自己发“声” —— 声网RTC征文大赛在园子里征稿
2020年8月20日,声网Agora入驻园子的新楼盘--博客园品牌专区.9月,我们与声网Agora再度合作,「为自己发"声"- RTC 征文大赛」在园子里征稿. RTC(Real- ...
- 从watevrCTF-2019:Pickle Store中学习python之pickle序列化漏洞
从watevrCTF-2019:Pickle Store中学习python之pickle序列化漏洞 pickle提供了一个简单的持久化功能.可以将对象以文件的形式存放在磁盘上. 其本质是Picklin ...
- (转)HttpServletResquest对象
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息. 1 ...
- java 常用类-StringBuffer-StringBuilder
二.StringBuffer类&StringBuilder类 2.1 简介 java.lang.StringBuffer.StringBuilder代表可变的字符序列,可以对字符 串内容进行增 ...
- GAN生成的评价指标 Evaluation of GAN
传统方法中,如何衡量一个generator ?-- 用 generator 产生数据的 likelihood,越大越好. 但是 GAN 中的 generator 是隐式建模,所以只能从 P_G 中采样 ...
- 手把手撸套框架-Victory框架1.1 详解
目录 上一篇博客 Victory框架1.0 详解 有说道,1.0的使用过程中出现不少缺点,比如菜单不能折叠,权限没有权限组等等. 所以,我还是抽出时间在下班后,回到我的小黑屋里 完成了1.1的升级. ...
- ECharts系列:玩转ECharts之常用图(折线、柱状、饼状、散点、关系、树)
一.背景 最近产品叫我做一些集团系列的统计图,包括集团组织.协作.销售.采购等方面的.作为一名后端程序员,于是趁此机会来研究研究这个库. 如果你仅仅停留在用的层面,那还是蛮简单的. 二.介绍 ECha ...
- python 中的三种等待方式
为什么要用等待时间: 今天在写App的自动化的脚本时发现一个元素,但是往往执行脚本是报错( An element could not be located on the page using the ...
- Redis安装使用以及可能的算法实践
layout: post title: 2017-12-05-Redis 入门 tags: - Redis - 实时特征 - UCB, Tompson sampling Redis 是什么? Redi ...
- dgraph 使用简介
dgraph 简介 dgraph 使用示例(基于 golang) golang client 安装 创建 schema 数据的 CURD 事务 总结 dgraph 简介 dgraph 是基于 gola ...