zoukankan      html  css  js  c++  java
  • 微信开发

    1、几个重要的参数:

    URL、Token、AppId、AppSecret

    2、URL签名

    这里我使用的是Senparc工具,使用的是mvc模式。

             /// <summary>
            /// 
            /// </summary>
            /// <param name="signature"></param>
            /// <param name="timestamp"></param>
            /// <param name="nonce"></param>
            /// <param name="echostr"></param>
            /// <returns></returns>
            [HttpGet]
            [ActionName("Index")]
            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) + "。如果您在浏览器中看到这条信息,表明此Url可以填入微信后台。");
                }
            }

     加密/校验流程如下:

      1. 将token、timestamp、nonce三个参数进行字典序排序

      2. 将三个参数字符串拼接成一个字符串进行sha1加密

      3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。

            /// <summary>
            /// 验证微信签名
            /// </summary>
            /// * 将token、timestamp、nonce三个参数进行字典序排序
            /// * 将三个参数字符串拼接成一个字符串进行sha1加密
            /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
            /// <returns></returns>
            public static bool CheckSignature(string token)
            {
                string signature = VqiRequest.GetQueryString("signature");
                string timestamp = VqiRequest.GetQueryString("timestamp");
                string nonce = VqiRequest.GetQueryString("nonce");
                string[] ArrTmp = { token, timestamp, nonce };
                Array.Sort(ArrTmp);     //字典排序
                string tmpStr = string.Join("", ArrTmp);
                tmpStr = Utils.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
                tmpStr = tmpStr.ToLower();
                if (tmpStr == signature)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }    
    人生,总是有一些空城旧事,年华未央;总是有些季节,一季花凉,满地忧伤。许多事,看开了,便会峰回路转;许多梦,看淡了,便会云开日出。学会思索,学会珍藏,微笑领悟,默默坚强。
  • 相关阅读:
    如何将jar包加入到Maven本地仓库
    dubbo 常见错误
    关于spring”通配符的匹配很全面, 但无法找到元素 'context:component-scan' 的声明“的错误
    Maven类包冲突终极三大解决技巧 mvn dependency:tree
    springMVC传对象参数
    scp 对拷文件夹 和 文件夹下的所有文件 对拷文件并重命名
    CATALINA_BASE与CATALINA_HOME的区别
    有return的情况下try catch finally的执行顺序(最有说服力的总结)
    Slf4j MDC 使用和 基于 Logback 的实现分析
    Docker 系列01: Centos7.3 上安装docker
  • 原文地址:https://www.cnblogs.com/yuzhou133/p/10265231.html
Copyright © 2011-2022 走看看