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;
                }
            }    
    人生,总是有一些空城旧事,年华未央;总是有些季节,一季花凉,满地忧伤。许多事,看开了,便会峰回路转;许多梦,看淡了,便会云开日出。学会思索,学会珍藏,微笑领悟,默默坚强。
  • 相关阅读:
    SAP系统邮件功能配置
    SAP SQL 表inner join 不同长度字段连接
    Read_text 获取传入参数
    imageio.write 惹的祸,占用cpu过高,堆溢出问题
    消息队列报 堆溢出解决方案
    技术文档java
    maven:项目中一些依赖不能更新可使用如下命令进行更新 maven库
    volatile 验证 java
    用Lock 和Newcondition实现同步容器 java
    计算数组中有几对相反数
  • 原文地址:https://www.cnblogs.com/yuzhou133/p/10265231.html
Copyright © 2011-2022 走看看