Пример #1
0
        /// <summary>
        /// 校验渠道微信签名
        /// </summary>
        /// <param name="channelId">渠道id</param>
        /// <returns></returns>
        public async Task <ExecuteResult <Tuple <bool, string> > > CheckChannelWeixinQySignAsync(int channelId, string signature, string timestamp, string nonce, string echo)
        {
            var result = new ExecuteResult <Tuple <bool, string> >
            {
                ErrorCode = ExecuteResult.ErrorCodeEnum.Fail,
                Success   = false,
                ErrorMsg  = "校验渠道微信签名失败"
            };

            try
            {
                var configDto = await ChannelHelper.GetAgentConfigDTOByChannelIdAsync(channelId);

                SignatureHelper signatureHelper = new SignatureHelper(configDto);

                var checkResult = signatureHelper.CheckSign(signature, timestamp, nonce, echo, out string replyEcho);


                result.Data      = new Tuple <bool, string>(checkResult, replyEcho);
                result.Success   = true;
                result.ErrorCode = ExecuteResult.ErrorCodeEnum.Success;
                result.ErrorMsg  = "校验渠道微信签名成功";
                return(result);
            }
            catch (Exception ex)
            {
                ex.WriteExceptionLog("校验渠道微信签名失败");
            }
            return(result);
        }
Пример #2
0
        /// <summary>
        /// 处理微信消息
        /// </summary>
        /// <param name="channelId"></param>
        /// <param name="msg_signature"></param>
        /// <param name="timestamp"></param>
        /// <param name="nonce"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public async Task <ExecuteResult <string> > HandleInputWeixinQyMessageAsync(int channelId, string msg_signature, string timestamp, string nonce, string msg)
        {
            var result = new ExecuteResult <string>
            {
                Success   = false,
                ErrorMsg  = "",
                ErrorCode = ExecuteResult.ErrorCodeEnum.Fail,
            };

            try
            {
                var configDto = await ChannelHelper.GetAgentConfigDTOByChannelIdAsync(channelId);

                Senparc.Weixin.Work.Tencent.WXBizMsgCrypt crypt = new Senparc.Weixin.Work.Tencent.WXBizMsgCrypt(configDto.Token, configDto.EncodingAESKey, configDto.CorpId);
                var info = string.Empty;
                var r1   = crypt.DecryptMsg(msg_signature, timestamp, nonce, msg, ref info);

                var replyMsg = string.Empty;

                var reply = info.Replace("<ToUserName><![CDATA[wx9a80f6e6ed2a89e6]]></ToUserName><FromUserName><![CDATA[Yan-Xia]]></FromUserName>", "<ToUserName><![CDATA[Yan-Xia]]></ToUserName><FromUserName><![CDATA[wx9a80f6e6ed2a89e6]]></FromUserName>");

                crypt.EncryptMsg(reply, timestamp, nonce, ref replyMsg);

                result.Data = replyMsg;

                var signHelper = new SignatureHelper(configDto);
                //signHelper.d
                string testXml   = @"<xml><ToUserName><![CDATA[wx7618c0a6d9358622]]></ToUserName>
<Encrypt><![CDATA[h3z+AK9zKP4dYs8j1FmthAILbJghEmdo2Y1U9Pdghzann6H2KJOpepaDT1zcp09/1/e/6ta48aUXebkHlu0rhzk4GW+cvVUHzbEiQVFlIvD+q4T/NLIm8E8BM+gO+DHslM7aXmYjvgMw6AYiBx80D+nZKNyJD3I8lRT3aHCq/hez0c+HTAnZyuCi5TfUAw0c6jWSfAq61VesRw4lhV925vJUOBXT/zOw760CEsYXSr2IAr/n4aPfDgRs2Ww2h/HPiVOQ2Ms1f/BOtFiKVWMqZCxbmJ7cyPHH7+uOSAS6DtXiQAdwpEZwHz+A5QTsmK6V0C6Ifgr7zrStb7ygM7kmcrAJctPhCfG7WlfrWrFNLdtx9Q2F7d6/soinswdoYF8g56s8UWguOVkM7UFGr8H2QqrUJm5S5iFP/XNcBwvPWYA=]]></Encrypt>
<AgentID><![CDATA[2]]></AgentID>
</xml>";
                var    postModel = new Senparc.Weixin.Work.Entities.PostModel()
                {
                    Msg_Signature = "845997ceb6e4fd73edd9a377be227848ce20d34f",
                    Timestamp     = "1412587525",
                    Nonce         = "1501543730",

                    Token          = "fzBsmSaI8XE1OwBh",
                    EncodingAESKey = "9J8CQ7iF9mLtQDZrUM1loOVQ6oNDxVtBi1DBU2oaewl",
                    CorpId         = "wx7618c0a6d9358622"
                };
                var messageHandler = new CustomMessageHandlers(XDocument.Parse(testXml), postModel, 10);

                var xmlInfo    = XDocument.Parse(msg);
                var postModel1 = new Senparc.Weixin.Work.Entities.PostModel
                {
                    CorpId         = configDto.CorpId,
                    EncodingAESKey = configDto.EncodingAESKey,
                    Msg_Signature  = msg_signature,
                    Nonce          = nonce,
                    Timestamp      = timestamp,
                    Token          = configDto.Token,

                    //Msg_Signature = "845997ceb6e4fd73edd9a377be227848ce20d34f",
                    //Timestamp = "1412587525",
                    //Nonce = "1501543730",

                    //Token = "fzBsmSaI8XE1OwBh",
                    //EncodingAESKey = "9J8CQ7iF9mLtQDZrUM1loOVQ6oNDxVtBi1DBU2oaewl",
                    //CorpId = "wx7618c0a6d9358622"
                };
                var handler = new CustomMessageHandler(xmlInfo, postModel1, 10);

                return(result);
            }
            catch (Exception ex)
            {
                ex.WriteExceptionLog("");
            }


            return(result);
        }