Exemplo n.º 1
0
        public bool Reply(ReceiveMessage message, out BaseSendMessage replyMessage)
        {
            IMessageReplyEngine subEngine = fEngineList[(int)message.MsgType];
            RuleAttribute       attr      = subEngine.Match(message);

            if (attr != null)
            {
                if (attr == RuleAttribute.Empty)
                {
                    replyMessage = null;
                }
                else
                {
                    IRule reply = PlugInFactoryManager.CreateInstance <IRule>(
                        RulePlugInFactory.REG_NAME, attr.RegName).Convert <IRule>();
                    replyMessage = reply.Reply(message);
                }
                return(true);
            }
            else
            {
                replyMessage = null;
                return(false);
            }
        }
Exemplo n.º 2
0
        public OutputData DoAction(IInputData input)
        {
            if (!input.IsPost)
            {
                int    appId     = input.QueryString["AppId"].Value <int>();
                string returnStr = WeCorpUtil.VerifyURL(appId,
                                                        input.QueryString[QueryStringConst.QS_MSG_SIGNATURE],
                                                        input.QueryString[QueryStringConst.QS_TIMESTAMP],
                                                        input.QueryString[QueryStringConst.QS_NONCE],
                                                        input.QueryString[QueryStringConst.QS_ECHO_STR]);
                if (!string.IsNullOrEmpty(returnStr))
                {
                    return(OutputData.Create(returnStr));
                }
                return(OutputData.Create("验名错误"));
            }
            else
            {
                if (input.PostObject == null)
                {
                    return(OutputData.Create(string.Empty));
                }

                ReceiveMessage     message = input.PostObject.Convert <ReceiveMessage>();
                BaseSendMessage    result  = WeixinToolkitSettings.Current.CorpReply(message);
                EncodeReplyMessage reply;
                if (result != null)
                {
                    reply = WeCorpUtil.EncryptMsg(message.AgentId, result.ToXml(),
                                                  input.QueryString[QueryStringConst.QS_TIMESTAMP],
                                                  input.QueryString[QueryStringConst.QS_NONCE]);
                }
                else
                {
                    reply = null;
                }

                WeixinToolkitSettings.Current.Log(message);

                if (result != null)
                {
                    return(OutputData.CreateToolkitObject(reply));
                }
                else
                {
                    return(OutputData.Create(string.Empty));
                }
            }
        }
Exemplo n.º 3
0
        public BaseSendMessage Reply(ReceiveMessage message)
        {
            BaseSendMessage result = null;

            foreach (IRule rule in fLinkList)
            {
                try
                {
                    result = rule.Reply(message);
                }
                catch
                {
                }
            }

            return(result);
        }
Exemplo n.º 4
0
        public OutputData DoAction(IInputData input)
        {
            if (!input.IsPost)
            {
                if (WeUtil.CheckSignature(input.QueryString[QueryStringConst.QS_SIGNATURE],
                                          input.QueryString[QueryStringConst.QS_TIMESTAMP],
                                          input.QueryString[QueryStringConst.QS_NONCE]))
                {
                    return(OutputData.Create(input.QueryString[QueryStringConst.QS_ECHO_STR]));
                }
                return(OutputData.Create("验名错误"));
            }
            else
            {
                ReceiveMessage  message = input.PostObject.Convert <ReceiveMessage>();
                BaseSendMessage result  = WeixinToolkitSettings.Current.NormalReply(message);
                WeixinToolkitSettings.Current.Log(message);

                if (result != null)
                {
                    string encodeType = input.QueryString[QueryStringConst.QS_ENCODE_TYPE]
                                        .Value <string>(QueryStringConst.NORMAL_MSG);
                    if (encodeType == QueryStringConst.NORMAL_MSG)
                    {
                        return(OutputData.CreateToolkitObject(result));
                    }
                    else
                    {
                        EncodeReplyMessage reply = WeUtil.EncryptMsg(result.ToXml(),
                                                                     input.QueryString[QueryStringConst.QS_TIMESTAMP],
                                                                     input.QueryString[QueryStringConst.QS_NONCE]);
                        return(OutputData.CreateToolkitObject(reply));
                    }
                }
                else
                {
                    return(OutputData.Create(string.Empty));
                }
            }
        }
Exemplo n.º 5
0
        public BaseSendMessage Reply(ReceiveMessage message)
        {
            BaseSendMessage result = CreateDefaultMessage(message);

            return(result);
        }