微信公众号开发--.Net Core实现微信消息加解密
1:准备工作
进入微信公众号后台设置微信服务器配置参数(注意:Token和EncodingAESKey必须和微信服务器验证参数保持一致,不然验证不会通过)。
2:基本配置
设置为安全模式
3、代码实现(主要分为验证接口和消息处理接口):
/// <summary> /// 验证接口 /// </summary> /// <param name="signature">签名</param> /// <param name="timestamp">时间戳</param> /// <param name="nonce"></param> /// <param name="echostr"></param> /// <returns></returns> [HttpGet, Route("Message")] [AllowAnonymous] public ActionResult MessageGet(string signature, string timestamp, string nonce, string echostr) { if (new SecurityHelper().CheckSignature(signature, timestamp, nonce, _settings.Value.Token)) { return Content(echostr); } return Content(""); } /// <summary> /// 接收消息并处理和返回相应结果 /// </summary> /// <param name="msg_signature">当加密模式时才会有该变量(消息签名)</param> /// <param name="signature">签名</param> /// <param name="timestamp">时间戳</param> /// <param name="nonce"></param> /// <returns></returns> [HttpPost, Route("Message")] [AllowAnonymous] public ActionResult MessagePost(string msg_signature, string signature, string timestamp, string nonce) { try { if (!new SecurityHelper().CheckSignature(signature, timestamp, nonce, _settings.Value.Token)) { return Content(null); } using (Stream stream = HttpContext.Request.Body) { byte[] buffer = new byte[HttpContext.Request.ContentLength.Value]; stream.Read(buffer, 0, buffer.Length); string content = Encoding.UTF8.GetString(buffer); if (!string.IsNullOrWhiteSpace(msg_signature)) // 消息加密模式 { string decryptMsg = string.Empty; var wxBizMsgCrypt = new WXBizMsgCrypt(_settings.Value.Token, _settings.Value.EncodingAESKey, _settings.Value.AppId); int decryptResult = wxBizMsgCrypt.DecryptMsg(msg_signature, timestamp, nonce, content, ref decryptMsg); if (decryptResult == 0 && !string.IsNullOrWhiteSpace(decryptMsg)) { string resultMsg = new WechatMessageHelper().MessageResult(decryptMsg); string sEncryptMsg = string.Empty; if (!string.IsNullOrWhiteSpace(resultMsg)) { int encryptResult = wxBizMsgCrypt.EncryptMsg(resultMsg, timestamp, nonce, ref sEncryptMsg); if (encryptResult == 0 && !string.IsNullOrWhiteSpace(sEncryptMsg)) { return Content(sEncryptMsg); } } } } else // 消息未加密码处理 { string resultMsg = new WechatMessageHelper().MessageResult(content); return Content(resultMsg); } return Content(null); } } catch (Exception ex) { _logger.LogError("接收消息并处理和返回相应结果异常:", ex); return Content(null); } }
加解密实现(微信公众号官网有源码)
作者:码魇
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
您的资助是我最大的动力!
金额随意,欢迎来赏!