100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 用.Net Core接入微信公众号开发

用.Net Core接入微信公众号开发

时间:2022-07-14 17:37:44

相关推荐

用.Net Core接入微信公众号开发

Part1前言

最近想写一点基于.Net Core微信公众号开发的文章

Part2测试公众号申请

测试公众号申请地址:https://mp./debug/cgi-bin/sandbox?t=sandbox/login

微信公众号开发文档:https://developers./doc/offiaccount/Getting_Started/Overview.html

通过微信扫一扫授权就能进入到测试号管理页面。

测试账号拥有几乎所有的公众号接口,而个人只能申请订阅号,几乎没有接口可用,并且消息推送还会受到次数限制。如果只是做开发测试的话,那么测试帐号比较好用

进行接口配置信息

需要一台服务器进行到微信授权回调到线上的域名。但是对于没有服务器,或者初次接触微信公众号开发的同学们就有点不太友好,不方便本地调试。

于是就尝试通过内网穿透的方法调试本地代码,常见的工具有ngrok,FastTunnel花生壳natapp等等

Part3开发

新建.Net Core webapi项目,将本地服务映射到外网

笔者在这里使用的是natapp

验证消息的确来自微信服务器

我们可根据微信开发文档轻松的写出 微信后台的“接口配置信息”,一共有四个参数

[HttpGet][ActionName("")]publicstringGet(stringsignature,stringtimestamp,stringnonce,stringechostr){}

有洁癖的同学可能觉得有四个参数,再在controller层一个一个地接收就会显得特别的笨重了。那我们也可以使用实体类来接受参数

[HttpGet][ActionName("")]publicstringGet([FromUri]VxModelvxModel){}

[FromUri]属性处理查询参数,即"?"之后的键值对在URI中。

加密/校验

流程如下:

将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与 signature 对比,标识该请求来源于微信.若确认此次 GET 请求来自微信服务器,请原样返回 echostr 参数内容。

将微信公众号设置好的token,定义成一个常量,用来校验

publicconststringToken="weixin";

然后根据流程进行签名校验

publicstaticboolCheck(stringsignature,stringtimestamp,stringnonce){string[]value=newstring[3]{WeixinSetting.Token,timestamp,nonce}.OrderBy(o=>o).ToArray();strings=string.Join("",value);byte[]array=SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(s));StringBuilderstringBuilder=newStringBuilder();byte[]array2=array;foreach(bytebinarray2){stringBuilder.AppendFormat("{0:x2}",b);}returnsignature==stringBuilder.ToString();}

完整接口如下:

[HttpGet][ActionName("")]publicstringGet(stringsignature,stringtimestamp,stringnonce,stringechostr){if(CheckSignatureHelper.Check(signature,timestamp,nonce)){returnechostr;}else{return"校验失败";}}

这样就校验成功了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。