zoukankan      html  css  js  c++  java
  • 公众号第三方平台开发 教程五 代公众号处理消息和事件

    公众号第三方平台开发 教程一 创建公众号第三方平台

    公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取

    公众号第三方平台开发 教程三 微信公众号授权第三方平台

    公众号第三方平台开发 教程四 代公众号发起网页授权说明

    公众号第三方平台开发 教程五 代公众号处理消息和事件

    公众号第三方平台开发 教程六 代公众号使用JS SDK说明

    另,感谢一下这个大虾的博客,这几篇东西都是在他的博文基础上完成的,他的博客里也有一些接口代码可以下载
    微信开发系列教程

     当粉丝给公众号信息的时候,服务器会给公众号消息与事件接收URL发送信息

     下面直接上处理函数,处理完成之后直接在页面上输出加密后的消息即可。注意要把前台的html代码删除

     public void ResponseMessage()
        {
            WXBizMsgCrypt wxcpt = new WXBizMsgCrypt();
    
    
            string sReqData = GetPost();
            string respnseContent = "";
            string sResponse = "";  //加密之后的回复文本
    
    
            string sMsg = "";  //解析之后的明文
            int ret = 0;
            ret = wxcpt.DecryptMsg(sReqMsgSig, sReqTimeStamp, sReqNonce, sReqData, ref sMsg);
    
    
            LogTool.LogToDirDest(filePath, LogType.Debug, string.Format("{1} 接收到的信息:{0}", sReqData, pageUrl));
    
            LogTool.LogToDirDest(filePath, LogType.Debug, string.Format("{1} 解析后的消息:{0}", sMsg, pageUrl));
    
    
            var xDoc = XDocument.Parse(sMsg);
    
            List<XElement> q = (from c in xDoc.Elements() select c).ToList();
    
            var model = new
            {
                ToUserName = q.Elements("ToUserName").First().Value,
                FromUserName = q.Elements("FromUserName").First().Value,
                CreateTime = q.Elements("CreateTime").First().Value,
    
                MsgType = q.Elements("MsgType").First().Value,
                Content = ("" + q.Elements("Content").First().Value).Trim(),
                MsgId = q.Elements("MsgId").First().Value
            };
    
    
            if (false == string.IsNullOrEmpty(model.Content))
            {
                switch (model.Content.ToLower())
                {
                    case "帮助":
                    case "help":
                    case "hello2bizuser": //被关注时自动回复  
                        respnseContent = "使用帮助说明:
    ------------------------
    "
                            + "常用命令:
    "
                            + "1、查看案例;
    "
                            + "2、联系方式;
    "
                            + "3、帮助或help;
    ";                
                        break;
    
                    case "查看案例":
                        respnseContent = "查看案例:
    ------------------------
    ";
                        break;
    
                    case "联系方式":
                        respnseContent = "联系方式:
    ------------------------
    ";
                        break;
    
                    default:
                        break;
                }
    
    
                var textTpl = "<xml>"
                                  + "<ToUserName><![CDATA[{0}]]></ToUserName>"
                                  + "<FromUserName><![CDATA[{1}]]></FromUserName>"
                                  + "<CreateTime>{2}</CreateTime>"
                                  + "<MsgType><![CDATA[{3}]]></MsgType>"
                                  + "<Content><![CDATA[{4}]]></Content>"
                                  + "<FuncFlag>0</FuncFlag>"
                                  + "</xml>";
    
    
                int enRet = wxcpt.EncryptMsg(string.Format(textTpl, model.FromUserName, model.ToUserName, ConvertDateTimeInt(DateTime.Now), "text", respnseContent), sReqTimeStamp, sReqNonce, ref sResponse);
    
                LogTool.LogToDirDest(filePath, LogType.Debug, string.Format("{1} 加密前的消息:{0}", string.Format(textTpl, model.FromUserName, model.ToUserName, ConvertDateTimeInt(DateTime.Now), "text", respnseContent), pageUrl));
                LogTool.LogToDirDest(filePath, LogType.Debug, string.Format("{1} 加密后的消息:{0}", sResponse, pageUrl));
    
                Response.Write(sResponse);
                Response.End();
            }
  • 相关阅读:
    线程池问题
    高级I/O
    闹钟设计
    线程竞争问题
    线程基本函数
    SpringMvc支持跨域访问
    gitlab qq邮件配置
    gitlab断电
    docker run always
    电子书网
  • 原文地址:https://www.cnblogs.com/iCoffee/p/4815746.html
Copyright © 2011-2022 走看看