Ejemplo n.º 1
0
        /// <summary>
        /// 核心执行方法
        /// </summary>
        /// <param name="contentXml">内容信息</param>
        /// <param name="signature">签名信息</param>
        /// <param name="timestamp">时间戳</param>
        /// <param name="nonce">随机字符创</param>
        /// <param name="echostr">验证服务器参数,如果存在则只进行签名验证,并将在结果Data中返回</param>
        /// <returns>消息结果,Data为响应微信数据,如果出错Message为错误信息</returns>
        public ResultMo <string> Process(string contentXml, string signature, string timestamp, string nonce,
                                         string echostr)
        {
            // 一.  检查是否是服务器验证
            if (!string.IsNullOrEmpty(echostr))
            {
                return(CheckServerValid(signature, timestamp, nonce, echostr));
            }

            // 二.  正常消息处理
            {
                var checkRes = ProcessBegin(contentXml, signature, timestamp, nonce);
                if (!checkRes.IsSuccess)
                {
                    return(checkRes.ConvertToResultOnly <string>());
                }

                var contextRes = ProcessExecute(checkRes.Data);
                if (!contextRes.IsSuccess)
                {
                    return(contextRes.ConvertToResultOnly <string>());
                }

                ProcessEnd(contextRes.Data);

                var resultString = contextRes.Data.ReplyMsg.ToReplyXml();
                if (m_Config.SecurityType != WxSecurityType.None &&
                    !string.IsNullOrEmpty(contextRes.Data.ReplyMsg.MsgType))
                {
                    return(WxMsgHelper.EncryptMsg(resultString, m_Config));
                }
                return(new ResultMo <string>(resultString));
            }
        }