zoukankan      html  css  js  c++  java
  • 微信开发之(一)微信验证

       基于微信公众测试平台进行开发测试,并在网上找了很多资料再此声明(如有占用代码请联系以备修改),由于比较杂不一一说明谢谢他们的努力。供有需要的人参考。

    首先是实现微信的认证,登录微信测试平台我们可以看到系统自动给了一个微信号,测试号信息:appID和appsecret。

    在接口配置信息中,有URL和Token 二个文本框,我们分别在URL上写上我们的服务器测试文件的地址,采用的是一般处理程序类似(http://yourdomain.com/valided.ashx).

    Token的值我们可以自定义。

      然后我们新建一个项目,新建valided.ashx文件用于验证。

     //在ProcessRequest方法里面写上如下代码:
     if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST")
         {
                  //do something
        }else{
    
               AuthWechat(); //采用GET方法判断进入验证方法
        } 
            ///认证微信
            private void AuthWechat()
            {
                string token = "testweixin";//Token的值
         
                string echoString = HttpContext.Current.Request.QueryString["echoStr"];
                string signature = HttpContext.Current.Request.QueryString["signature"];
                string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
                string nonce = HttpContext.Current.Request.QueryString["nonce"];
    
                if (CheckSignature(token, signature, timestamp, nonce))
                {
                    if (!string.IsNullOrEmpty(echoString))
                    {
                        HttpContext.Current.Response.Write(echoString);
                        HttpContext.Current.Response.End();
                    }
                }
    
            }
    
            /// <summary>
            /// 对微信传入参数进行封装到数组,拼接字符串,进行加密操作
            /// </summary>
            private bool CheckSignature(string token, string signature, string timestamp, string nonce)
            {
                string[] ArrTmp = { token, timestamp, nonce };//将参数放进数组
    
                Array.Sort(ArrTmp);//对数组进行排序
    
                string tmpStr = string.Join("", ArrTmp);//将数组进行拼接
    
                ///对拼接后的字符串进行加密操作
               // tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
    
                tmpStr=Membership.CreateUser(tmpStr, "SHA1").ToString();
    
                //转换成小写形式
                tmpStr = tmpStr.ToLower();
    
                //比对成功返回
                if (tmpStr == signature)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
    

    上图中的相关参数说明:

     描述
    signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
    timestamp 时间戳
    nonce 随机数
    echostr 随机字符串

    参考官方文档地址解析:验证消息真实性

    将上面的代码保存后我们编译下然后发布到服务器,在刚刚的测试号里面写好发布对应的地址,点击保存的时候系统会提示你是否配置成功,有时可能是网络原因会提示配置失败,建议多试几次,如果没有问题一般都会提示配置成功!这就实现了验证和签名。完成了重要的一步为其他接口的开发和实现奠定了基础。

  • 相关阅读:
    Mrrobot靶机渗透实战-vuluhub系列(六)
    Evilscience靶机渗透实战-vulnhub系列(五)
    raven靶机实战(linux-udf提权)-vuluhub系列(四)
    XXE靶机实战-vuluhub系列(三)
    Library靶机cookie注入-vuluhub系列(二)
    nodejs 搭建 RESTful API 服务器的常用包及其简介
    webpack分离第三方库(CommonsChunkPlugin并不是分离第三方库的好办法DllPlugin科学利用浏览器缓存)
    react 热替换 ([HMR])
    React-Router 4 的新玩意儿
    nodejs爬虫
  • 原文地址:https://www.cnblogs.com/professional-NET/p/5662167.html
Copyright © 2011-2022 走看看