Example #1
0
        public ActionResult Get(PostModel postModel, string echostr)
        {
            string          Token = "";//与微信公众账号后台的Token设置保持一致,区分大小写。
            WxBaseConfigApp app   = new WxBaseConfigApp();
            string          apiid = Request["apiid"];

            if (string.IsNullOrEmpty(apiid))
            {
                Response.Output.Write("参数非法");
            }
            Token = app.GetWeiXinToken(apiid);
            if (Token == null || string.IsNullOrEmpty(Token))
            {
                Response.Output.Write("不存在该微信号或账号已过期或已被禁用!");
                Response.End();
            }
            //get method - 仅在微信后台填写URL验证时触发
            if (CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token))
            {
                return(Content(echostr)); //返回随机字符串则表示验证通过
            }
            else
            {
                return(Content("failed:" + postModel.Signature + "," + CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, Token) + "。" +
                               "如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"));
            }
        }
Example #2
0
        public void GetSignatureTest()
        {
            //2013-01-12 09:12:00 118.244.133.118 GET /weixin signature=335b26997f05c82243aad6b10a2d1853637e71a8&echostr=5833258582299191661&timestamp=1357982061&nonce=1358161344 80 - 101.226.89.83 Mozilla/4.0 200 0 0 35
            {
                var signature = "335b26997f05c82243aad6b10a2d1853637e71a8";
                var echostr   = "echostr";
                var timestamp = "1357982061";
                var nonce     = "1358161344";
                var token     = "weixin";

                var result = CheckSignature.GetSignature(timestamp, nonce, token);
                Assert.AreEqual(signature, result);
            }

            {
                var signature = "efa917e2445cc9f0aa4386ca92f96de5a242e24e";
                var echostr   = "5837835896451489886";
                var timestamp = "1359208540";
                var nonce     = "1359227084";
                var token     = "huhujm";

                var result = CheckSignature.GetSignature(timestamp, nonce, token);
                Assert.AreEqual(signature, result);
            }
        }
Example #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string signature = Request["signature"];
            string timestamp = Request["timestamp"];
            string nonce     = Request["nonce"];
            string echostr   = Request["echostr"];

            if (Request.HttpMethod == "GET")
            {
                if (CheckSignature.Check(signature, timestamp, nonce, Token))
                {
                    Response.Write(echostr);
                }
                else
                {
                    Response.Write("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token) + "。" +
                                   "如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。");
                }
                Response.End();
            }
            else
            {
                if (!CheckSignature.Check(signature, timestamp, nonce, Token))
                {
                    Response.Write("参数错误!");
                    return;
                }

                var maxRecordCount = 10;
                var messageHandler = new CustomMessageHandler(Request.InputStream, maxRecordCount);
                messageHandler.Execute();
                Response.Write(messageHandler.ResponseDocument.ToString());
                Response.End();
            }
        }
        private readonly string Token = "dafeifei";//与微信公众账号后台的Token设置保持一致,区分大小写。

        public void ProcessRequest(HttpContext context)
        {
            string signature = context.Request["signature"];
            string timestamp = context.Request["timestamp"];
            string nonce     = context.Request["nonce"];
            string echostr   = context.Request["echostr"];

            if (context.Request.HttpMethod == "GET")
            {
                //get method - 仅在微信后台填写URL验证时触发
                if (CheckSignature.Check(signature, timestamp, nonce, Token))
                {
                    //WriteContent(echostr); //返回随机字符串则表示验证通过
                    context.Response.Output.Write(echostr);
                }
                else
                {
                    //WriteContent("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token));
                    context.Response.Write("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token));
                }
            }
            else
            {
                //判断Post或其他方式请求
            }
            context.Response.End();
        }
        public void MessageContextRecordLimtTest()
        {
            //测试MessageContext的数量限制
            var xml = string.Format(string.Format(xmlTextFormat, "测试限制"), DateTimeHelper.GetWeixinDateTime(DateTime.Now));

            for (int i = 0; i < 100; i++)
            {
                Init(xml);//初始化

                var timestamp = "itsafaketimestamp";
                var nonce     = "whateveryouwant";
                var signature = CheckSignature.GetSignature(timestamp, nonce, WeixinController.Token);
                var postModel = new PostModel()
                {
                    Signature = signature,
                    Timestamp = timestamp,
                    Nonce     = nonce
                };
                var actual = target.MiniPost(postModel) as FixWeixinBugWeixinResult; Assert.IsNotNull(actual);
            }
            Assert.AreEqual(1, MessageHandler <MessageContext <IRequestMessageBase, IResponseMessageBase> > .GlobalWeixinContext.MessageQueue.Count);

            var weixinContext = MessageHandler <MessageContext <IRequestMessageBase, IResponseMessageBase> > .GlobalWeixinContext.MessageQueue[0];
            var recordCount   = MessageHandler <MessageContext <IRequestMessageBase, IResponseMessageBase> > .GlobalWeixinContext.MaxRecordCount;

            Assert.AreEqual(recordCount, weixinContext.RequestMessages.Count);
            Assert.AreEqual(recordCount, weixinContext.ResponseMessages.Count);
        }
Example #6
0
        public override async Task <bool> GetCheckSignature(HttpContext context)
        {
            var postModel = GetPostModel(context);

            if (CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, postModel.Token))
            {
                context.Response.ContentType = "text/plain;charset=utf-8";
                var echostr = GetEchostr(context);
                if (string.IsNullOrEmpty(echostr))
                {
                    await context.Response.WriteAsync("未提供 echostr 参数!").ConfigureAwait(false);

                    return(false);
                }
                else
                {
                    await context.Response.WriteAsync(echostr).ConfigureAwait(false);

                    return(true);
                }
            }
            else
            {
                context.Response.ContentType = "text/html;charset=utf-8";
                var correctSignature = CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, postModel.Token);
                var msgTip           = base.GetGetCheckFaildMessage(context, postModel.Signature, correctSignature);
                await context.Response.WriteAsync(msgTip);

                return(false);
            }
        }
Example #7
0
 public ActionResult Index(string signature, string timestamp, string nonce, string echostr)
 {
     if (CheckSignature.Check(signature, timestamp, nonce))
     {
         return(Content(echostr));//返回随机字符串则表示验证通过
     }
     return(Content("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce) + "。如果您在浏览器中看到这条信息,表明此Url可以填入微信后台。"));
 }
Example #8
0
 public ActionResult Get(PostModel postModel, string echostr)
 {
     if (CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token))
     {
         return(base.Content(echostr));
     }
     return(base.Content("failed:" + postModel.Signature + "," + CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, Token) + "。如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"));
 }
Example #9
0
        public IActionResult Get(string signature, string timestamp, string nonce, string echostr)
        {
            if (CheckSignature.Check(signature, timestamp, nonce, _token))
            {
                return(Content(echostr)); //返回随机字符串则表示验证通过
            }

            return(Content("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, _token)));
        }
        public ActionResult Get(PostModel postModel, string echostr, int id)
        {
            string token = SqlFactory.GetSqlhelper().SingleById <VoteInfos>(id).Token;

            if (CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, token))
            {
                return(base.Content(echostr));
            }
            return(base.Content("failed:" + postModel.Signature + "," + CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, token) + "。如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"));
        }
        public ActionResult Get(PostModel postModel, string echostr)
        {
            if (CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, WeixinSetting.Token))
            {
                return(Content(echostr)); //返回随机字符串则表示验证通过
            }

            return(Content("failed:" + postModel.Signature + "," + CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, WeixinSetting.Token) + "。" +
                           "如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"));
        }
Example #12
0
 /// <summary>
 /// 微信验证
 /// </summary>
 /// <param name="signature"></param>
 /// <param name="timestamp"></param>
 /// <param name="nonce"></param>
 /// <param name="echostr"></param>
 /// <returns></returns>
 public ActionResult Entry(string signature, string timestamp, string nonce, string echostr)
 {
     if (CheckSignature.Check(signature, timestamp, nonce, _Token))
     {
         return(Content(echostr));
     }
     else
     {
         return(Content("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, _Token) + "。如果您在浏览器中看到这条信息,表明此Url可以填入微信后台。"));
     }
 }
Example #13
0
 public ActionResult Get(string signature, string timestamp, string nonce, string echostr)
 {
     if (CheckSignature.Check(signature, timestamp, nonce, Token))
     {
         return(Content(echostr)); //返回随机字符串则表示验证通过
     }
     else
     {
         return(Content($"failed:{signature},{CheckSignature.GetSignature(timestamp, nonce, Token)}。如果您在浏览器中看到这条信息,表明此Url可以填入微信后台。"));
     }
 }
Example #14
0
 public ActionResult Get(string signature, string timestamp, string nonce, string echostr)
 {
     if (CheckSignature.Check(signature, timestamp, nonce, Token))
     {
         return(Content(echostr));//返回随机字符串则表示验证通过
     }
     else
     {
         return(Content("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token) + "。如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"));
     }
 }
Example #15
0
        public void GetSignatureTest()
        {
            //取传入参数
            string timestamp = "1357986928";
            string nonce     = "1357986928";
            string token     = "UscJpkc";
            var    signature = CheckSignature.GetSignature(timestamp, nonce, token);

            //a6a62a99a70b4ef26341b848395aca425b40f516
            Assert.IsNotNull(signature);
        }
Example #16
0
 public ActionResult Get(PostModel postModel, string echostr)
 {
     if (CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, ConfigHelper.WeChatToken))
     {
         return(Content(echostr)); //返回随机字符串则表示验证通过
     }
     else
     {
         return(Content("failed:" + postModel.Signature + "," + CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, ConfigHelper.WeChatToken) + "。"));
     }
 }
Example #17
0
 public ActionResult Get(string signature, string timestamp, string nonce, string echostr)
 {
     if (CheckSignature.Check(signature, timestamp, nonce, Token))
     {
         return(Content(echostr));
     }
     else
     {
         return(Content("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token) + "如果你们看见这条信息,表面此URL可以填入微信后台"));
     }
 }
Example #18
0
 public string Get(string signature, string timestamp, string nonce, string echostr)
 {
     if (CheckSignature.Check(signature, timestamp, nonce, Token))
     {
         return(echostr);//返回随机字符串则表示验证通过
     }
     else
     {
         return("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token));
     }
 }
Example #19
0
 public ActionResult Get(string signature, string timestamp, string nonce, string echostr)
 {
     if (CheckSignature.Check(signature, timestamp, nonce, _senparcWeixinSetting.Token))
     {
         return(Content(echostr)); //返回随机字符串则表示验证通过
     }
     else
     {
         return(Content("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, _senparcWeixinSetting.Token)));
     }
 }
Example #20
0
 public ActionResult Get(string signature, string timestamp, string nonce, string echostr)
 {
     if (CheckSignature.Check(signature, timestamp, nonce, _token))
     {
         return(Content(echostr));//返回随机字符串则表示验证通过
     }
     else
     {
         string content = "failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, _token);// +"<a href='" + Url.RetechAction("Index", "Login", new { area = "" }) + "'>登录</a>";
         return(Content(content));
     }
 }
Example #21
0
        public ActionResult Index(int tenantId, string signature, string timestamp, string nonce, string echostr)
        {
            var token = WeChatConfigManager.Current.GetConfig(tenantId).Token;

            //get method - 仅在微信后台填写URL验证时触发
            if (CheckSignature.Check(signature, timestamp, nonce, token))
            {
                return(Content(echostr)); //返回随机字符串则表示验证通过
            }
            return(Content("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, token) + "。" +
                           "如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"));
        }
 public IActionResult Get(PostModel postModel, string echostr)
 {
     if (CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token))
     {
         return(Ok(echostr)); //返回随机字符串则表示验证通过
     }
     else
     {
         return(Ok("failed:" + postModel.Signature + "," + CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, Token) + "。" +
                   "如果你在浏览器中看到这句话,说明此地址可以被作为微信小程序后台的Url,请注意保持Token一致。"));
     }
 }
 public ActionResult Get([FromForm] PostModel postModel, string echostr)
 {
     if (CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, _miniProgramSetting.WxOpenToken))
     {
         return(Content(echostr)); //返回随机字符串则表示验证通过
     }
     else
     {
         return(Content(
                    $"failed:{postModel.Signature},{CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, _miniProgramSetting.WxOpenToken)}。如果你在浏览器中看到这句话,说明此地址可以被作为微信小程序后台的Url,请注意保持Token一致。"));
     }
 }
Example #24
0
 public ActionResult Index(string signature, string timestamp, string nonce, string echostr)
 {
     if (CheckSignature.Check(signature, timestamp, nonce, Token))
     {
         //返回随机字符串则表示验证通过
         return(Content(echostr));
     }
     else
     {
         return(Content("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token)));
     }
 }
 public ActionResult Index(PostModel postModel, string echostr)
 {
     if (CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, WeixinManager.Token))
     {
         return(Content(echostr)); //返回随机字符串则表示验证通过
     }
     else
     {
         return
             (Content(
                  $"failed: {postModel.Signature}, {CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, WeixinManager.Token)} 如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"));
     }
 }
Example #26
0
        public static readonly string AppId           = System.Configuration.ConfigurationManager.AppSettings[APPID];          //相当于一个秘钥 我们自己秘钥 可以配置的

        // GET: WeiXin
        /// <summary>
        /// 验证消息的确来自微信服务器
        /// </summary>
        /// <param name="pModel">封装post传过来的加密参数
        /// @param signature:微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
        /// @param timestamp:时间戳
        /// @param nonce:随机数
        /// </param>
        /// <param name="echostr">随机字符串</param>
        public static string CheckToken(PostModel pModel, string echostr)
        {
            if (CheckSignature.Check(pModel.Signature, pModel.Timestamp, pModel.Nonce, Token))
            {
                return(echostr); //返回随机字符串则表示验证通过
            }
            else
            {
                return("failed:" + pModel.Signature + "," +
                       CheckSignature.GetSignature(pModel.Timestamp, pModel.Nonce, Token) +
                       "。如果您在浏览器中看到这条信息,表明此Url可以填入微信后台。");
            }
        }
Example #27
0
 public ActionResult Get(string signature, string timestamp, string nonce, string echostr)
 {
     //获取请求域名
     UrlRoot = Request.GetUrlRoot();
     if (CheckSignature.Check(signature, timestamp, nonce, WechatMpSettings.Default.Token))
     {
         return(Content(echostr)); //返回随机字符串则表示验证通过
     }
     else
     {
         return(Content("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, WechatMpSettings.Default.Token) + "。如果您在浏览器中看到这条信息,表明此Url可以填入微信后台。"));
     }
 }
Example #28
0
        public ActionResult Get(PostModel postModel, string echostr)
        {
            GzhCfg gzh = null;

            string state = Request.QueryString["state"];

            if (String.IsNullOrEmpty(state) == false)
            {
                dp2WeiXinService.Instance.WriteDebug("url参数state=" + state);
                gzh = dp2WeiXinService.Instance._gzhContainer.GetByAppName(state);
                if (gzh == null)
                {
                    string tempError = "Get未找到公众号[" + state + "]的配置信息。";
                    dp2WeiXinService.Instance.WriteErrorLog(tempError);
                    return(new WeixinResult(tempError));
                }
            }
            else
            {
                gzh = dp2WeiXinService.Instance._gzhContainer.GetDefault();
            }

            if (string.IsNullOrEmpty(postModel.AppId) == false)
            {
                gzh = dp2WeiXinService.Instance._gzhContainer.GetByAppId(postModel.AppId);
                dp2WeiXinService.Instance.WriteErrorLog("惊喜Get中有appId=" + postModel.AppId);
            }

            //GzhCfg gzh = dp2WeiXinService.Instance.gzhContainer.GetByAppId(postModel.AppId);
            //if (gzh == null)
            //{
            //    string tempError = "Get未找到公众号[" + postModel.AppId + "]的配置信息。";
            //    dp2WeiXinService.Instance.WriteErrorLog1(tempError);
            //    return new WeixinResult(tempError);
            //}

            if (CheckSignature.Check(postModel.Signature,
                                     postModel.Timestamp,
                                     postModel.Nonce,
                                     gzh.token))
            {
                string info = DumpPostModel(postModel);
                dp2WeiXinService.Instance.WriteDebug(info);
                return(Content(echostr)); //返回随机字符串则表示验证通过
            }
            else
            {
                return(Content("failed:" + postModel.Signature + "," + CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, gzh.token) + "。" +
                               "如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"));
            }
        }
 public ActionResult Get(string signature, string timestamp, string nonce, string echostr)
 {
     if (CheckSignature.Check(signature, timestamp, nonce, Token))
     {
         Loger.Current.Write("WeixinController.Get() CheckSignature.Check=true");
         return(Content(echostr)); //返回随机字符串则表示验证通过
     }
     else
     {
         Loger.Current.Write("WeixinController.Get() CheckSignature.Check=false");
         return(Content("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token) + "。" +
                        "如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"));
     }
 }
Example #30
0
 public Task <ActionResult> Get(string signature, string timestamp, string nonce, string echostr)
 {
     return(Task.Factory.StartNew(() =>
     {
         if (CheckSignature.Check(signature, timestamp, nonce, Token))
         {
             return echostr;//返回随机字符串则表示验证通过
         }
         else
         {
             return "failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token) + "。" +
             "如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。";
         }
     }).ContinueWith <ActionResult>(task => Content(task.Result)));
 }