公众号第三方平台开发 教程五 代公众号处理消息和事件
发布时间:2017/1/19 15:21:55 来源:搜数网络 浏览:35


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

公众号第三方平台开发 教程二 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 = "使用帮助说明:\r\n------------------------\r\n" + "常用命令:\r\n" + "1、查看案例;\r\n" + "2、联系方式;\r\n" + "3、帮助或help;\r\n";  break; case "查看案例":
                    respnseContent = "查看案例:\r\n------------------------\r\n";  break; case "联系方式":
                    respnseContent = "联系方式:\r\n------------------------\r\n";  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();
        }

 



返回