100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 微信公众号开发(一)服务器配置

微信公众号开发(一)服务器配置

时间:2022-07-05 14:14:18

相关推荐

微信公众号开发(一)服务器配置

微信公众号开发(一)服务器配置

如题,我是用.NET MVC连通的,效果图如下:

域名:申请了一个域名,

协议:http

端口:80

服务器:服务器为一台笔记本上的IIS,通过内网穿透让外网可以访问到此笔记本作为服务器

思路:公众号点击配置提交验证或者微信公众号客户端操作,微信发送get/post请求到平台配置的服务器地址即后端controller/action,接收这些参数,做一个验证,返给微信echostr表示验证通过即可绑定成功。

后端代码:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using System.Web.Security;namespace Test.WeChat.Controllers{public class WeChatController : Controller{///声明Log全局变量NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();///声明Tokenpublic readonly string Token = "weixin";//与微信公众账号后台的Token设置保持一致,区分大小写。// GET: WeChatpublic ActionResult Index(){string signature = "";string timestamp = "";string nonce = "";string echostr = "";signature = Request.QueryString["signature"];timestamp = Request.QueryString["timestamp"];nonce = Request.QueryString["nonce"];echostr = Request.QueryString["echostr"];try{logger.Info("测试输出: echostr = " + echostr);logger.Info("测试输出: nonce = " + nonce);logger.Info("测试输出: timestamp = " + timestamp);logger.Info("测试输出: signature = " + signature);if (!CheckSignature(signature, timestamp, nonce)){return Content("验证失败!");}if (!string.IsNullOrEmpty(echostr)){logger.Info("验证成功!");return Content(echostr); //返回随机字符串则表示验证通过}return Content("");}catch (Exception ex){logger.Error("Log 测试输出:异常!" + ex);return Content(ex.ToString());}//return View();}/// <summary>/// 验证微信签名/// </summary>/// * 将token、timestamp、nonce三个参数进行字典序排序/// * 将三个参数字符串拼接成一个字符串进行sha1加密/// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。/// <returns></returns>private bool CheckSignature(string signature, string timestamp, string nonce){string[] ArrTmp = { Token, timestamp, nonce };Array.Sort(ArrTmp); //字典排序string tmpStr = string.Join("", ArrTmp);tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");tmpStr = tmpStr.ToLower();if (tmpStr == signature){return true;}else{return false;}}}}

Log日志效果:

-07-02 15:30:18.3934|INFO|Test.WeChat.Controllers.WeChatController|测试输出: echostr = 5689733961303904701-07-02 15:30:18.3954|INFO|Test.WeChat.Controllers.WeChatController|测试输出: nonce = 1986779186-07-02 15:30:18.3954|INFO|Test.WeChat.Controllers.WeChatController|测试输出: timestamp = 1625211016-07-02 15:30:18.3954|INFO|Test.WeChat.Controllers.WeChatController|测试输出: signature = 26b2c4b7a5f42ac3c55d3431304c0790bb9324b2-07-02 15:30:18.3954|INFO|Test.WeChat.Controllers.WeChatController|验证成功!

ps:接触微信公众号有一年多了,由于域名服务器等原因一直没配置自己的公众号,项目上是,想着用MVC 5配置一个,这次有了域名和内网穿透,就不存在配置不通的问题了。接下来可能要着手写微信各种回调。如扫码,关注,给用户发送消息等,敬请期待。

仅供学习参考,如有侵权联系我删除

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