以前就知道Senparc 这个组件,但是没有仔细研究过,因为我在公司不是负责微信这一块的。

上一周公司突然要开发微信企业号,接到任务后要求第二天上线,他妈的!

我和另外一个同事分工,我做功能他调接口,因为他一直在负责微信开发。

中午的时候我的模块可以测试了,我开始关注他的接口是否调通,结果发现困难重重,他在自己一个个写功能,关键是他还没搞明白到底需要调用那几个接口。

我感觉到来不及了,突然想起Senparc应该都有封装,拿过来用就可以了。

下载了demo进行分析,半天没高清微信消息在哪里处理。最后从别人的例子里面发现有个QyMessageHandler的东东,看了看是个抽象类,所有处理消息的方法都在里面,不过是虚方法。

既然是抽象类,那么真正的处理过程应该是在其子类的重写方法里面完成了。

然后我自定义了个类QyCustomMessageHandler 继承QyMessageHandler 并重写了其所有虚方法和抽象方法。

然后在网页的处理类中这样写(我这里是MVC)

        /// <summary>
        /// 微信后台验证地址(使用Post),微信企业后台应用的“修改配置”的Url填写如:http://weixin.senparc.com/qy
        /// </summary>
        [HttpPost]
        public ActionResult Index(PostModel postModel)
        {
            var maxRecordCount = 10;

postModel.Token = CommonModel.Token;
            postModel.EncodingAESKey = CommonModel.EncodingAESKey;
            postModel.CorpId = CommonModel.CorpId;
            Senparc.Weixin.QY.CommonAPIs.AccessTokenContainer.Register(CommonModel.CorpId, CommonModel.Corpsecret);

//自定义MessageHandler,对微信请求的详细判断操作都在这里面。
            var messageHandler = new QyCustomMessageHandler(Request.InputStream, postModel, maxRecordCount);

if (messageHandler.RequestMessage == null)
            {
                //验证不通过或接受信息有错误
                VPClub.Log.EasyLog.Error("微信回调验证不通过或有错误", "messageHandler.RequestMessage == null");
            }

try
            {
                //执行微信处理过程
                messageHandler.Execute();

//测试时可开启此记录,帮助跟踪数据,使用前请确保App_Data文件夹存在,且有读写权限。
                //messageHandler.RequestDocument.Save(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_Request_" + messageHandler.RequestMessage.FromUserName + ".txt"));
                //测试时可开启,帮助跟踪数据
                //messageHandler.ResponseDocument.Save(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_Response_" + messageHandler.ResponseMessage.ToUserName + ".txt"));
                //messageHandler.FinalResponseDocument.Save(Server.MapPath("~/App_Data/Qy/" + DateTime.Now.Ticks + "_FinalResponse_" + messageHandler.ResponseMessage.ToUserName + ".txt"));

//自动返回加密后结果
                return new FixWeixinBugWeixinResult(messageHandler);//为了解决官方微信5.0软件换行bug暂时添加的方法,平时用下面一个方法即可
            }
            catch (Exception ex)
            {
                VPClub.Log.EasyLog.Error("微信回调错误", ex);
                return Content("");
            }
        }

转载于:https://www.cnblogs.com/westfruit/p/5226112.html

Senparc 使用笔记相关推荐

  1. .Net Core + 微信赋能企业级智能客服系统--学习笔记

    摘要 围绕目前需求猛增的微信及移动端企业智能客服业务,利用 .NET Core 的一系列优秀特性及 SignalR 模块打造全双工.跨微信/QQ/钉钉等应用平台.跨系统平台.跨终端.支持企业级并发的移 ...

  2. 【读书笔记】知易行难,多实践

    前言: 其实,我不喜欢看书,只是喜欢找答案,想通过专业的解答来解决我生活的困惑.所以,我听了很多书,也看了很多书,但看完书,没有很多的实践,导致我并不很深入在很多时候. 分享读书笔记: <高效1 ...

  3. 【运维学习笔记】生命不息,搞事开始。。。

    001生命不息,搞事不止!!! 这段时间和hexesdesu搞了很多事情! 之前是机械硬盘和固态硬盘的测速,我就在那默默的看着他一个硬盘一个机械测来测去. 坐在他后面,每天都能看到这位萌萌的小男孩,各 ...

  4. SSAN 关系抽取 论文笔记

    20210621 https://zhuanlan.zhihu.com/p/353183322 [KG笔记]八.文档级(Document Level)关系抽取任务 共指id嵌入一样 但是实体嵌入的时候 ...

  5. pandas以前笔记

    # -*- coding: utf-8 -*- """ Created on Sat Jul 21 20:06:20 2018@author: heimi "& ...

  6. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  7. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  8. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  9. 王道考研 计算机网络笔记 第六章:应用层

    本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 第一章:王道考研 计算机网络笔记 第一章:概述&计算机网络体系结构 第二章:王道考研 计算机网络笔记 第 ...

最新文章

  1. 保存csv时, 不保留index
  2. 【Java Web前端开发】Response笔记
  3. Just another board game 博弈-vector套vector
  4. 非root用户挂载NFS
  5. 三因素三水平正交表l9_影响多腔导管挤出机头设计的关键因素
  6. Java FutureTask示例程序
  7. linux网卡IO,浅谈Linux 网络 I/O 模型简介(图文)
  8. NVIDIA发布全新推理软件,开创交互式会话AI新时代!
  9. 脉冲神经网络的开发公司AI-CTX
  10. 贝叶斯网络的应用实例一
  11. 封装Python列表实现多下标访问
  12. python灰度处理_python 简单图像处理(9) 灰度变换
  13. aws beanstalk mysql_AWS Beanstalk搭建WordPress站点
  14. CentOS 7 (RHEL 7)服务管理命令的变化
  15. 图片内包含文本制作方法
  16. android apk获取系统签名
  17. 夏敏捷 第39本著作《微信小程序游戏开发快速入门到实战》
  18. excel表格如何画斜线并写字
  19. 咸阳强生告诉你吃什么食物养胃效果好
  20. PDF文件拆分合并器PDF Merge PDF Splitter + Mac

热门文章

  1. Excel/Power BI连接MySQL缺少组件,卸载失败
  2. 帐户式质押回购业务指引
  3. MATLAB中被控对象模型建立的几种方法
  4. 使用python制作一款能破解ZIP/RAR压缩包与WIFI密码的整合多功能工具
  5. 医咖会免费STATA教程学习笔记——卡方检验
  6. 错误 4 error LNK1104: 无法打开文件“libboost_date_time-vc120-mt-sgd-1_64.lib”
  7. android盒子定时重启,这才是电视、安卓盒子正确的关机方法!延长3年使用寿命...
  8. 友勤签约中信重工Oracle P6项目管理软件及技术服务项目
  9. 【UDS统一诊断服务】(补充)五、ECU bootloader开发要点详解 (1)
  10. 软件质量保障体系建设