作为一个开发人员,在进行开发微信公众号是,首先需要完成的是服务器配置。也就是常说的开发者接入。

1.登录微信公众平台,选择基本设置

字段说明:AppId:开发者ID是公众号开发识别码,配合开发者密码可调用公众号的接口能力。是由微信官方提供,在编写代码最好将其配置在web.config文件中。开发过程中要保证必须和微信官网的一致。

AppSecret:开发者密码是校验公众号开发者身份的密码,具有极高的安全性。是由微信官方提供,在编写代码最好将其配置在web.config文件中。开发过程中要保证必须和微信官网的一致。

Token:开发者自己定义的一个string字段,在编写代码最好将其配置在web.config文件中。开发过程中要保证必须和微信官网的一致。

后台代码如下:

验证微信凭证token:

public static void Valid(string strToken)
        {
            if (HttpContext.Current.Request.QueryString["echoStr"] != null)
            {
                string echoStr = HttpContext.Current.Request.QueryString["echoStr"].ToString();
                if (CheckSignature(strToken))
                {
                    if (!string.IsNullOrEmpty(echoStr))
                    {
                        HttpContext.Current.Response.Write(echoStr);
                        HttpContext.Current.Response.End();
                    }
                }
            }

}

验证微信签名

public static bool CheckSignature(string strToken)
        {
            string signature = HttpContext.Current.Request.QueryString["signature"].ToString();
            string timestamp = HttpContext.Current.Request.QueryString["timestamp"].ToString();
            string nonce = HttpContext.Current.Request.QueryString["nonce"].ToString();
            string[] ArrTmp = { strToken, timestamp, nonce };
            //1. 将token、timestamp、nonce三个参数进行字典序排序
            Array.Sort(ArrTmp);
            string tmpStr = string.Join("", ArrTmp);
            //对该字符串进行sha1加密
            tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
            tmpStr = tmpStr.ToLower();//对字符串中的字母部分进行小写转换,非字母字符不作处理
            if (tmpStr == signature)//开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。开发者通过检验signature对请求进行校验,若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败
            {
                return true;
            }
            else
                return false;
        }

webapi:

[HttpGet, HttpPost, Route("index")]
        public void index()
        {
            if (ControllerContext.Request.Method == HttpMethod.Post)
            {
                GetWxMessage();
            }
            else
            {
                string app_token= ConfigurationManager.AppSettings["app_token"].ToString();
                WeiXinHelper.Valid(app_token);
            }
        }

注:记住,在本地调试时,需要将自己的ip地址添加到ip白名单中。ip查询方式是:,如果是部署到服务器上的,需要将服务器的ip地址加入到白名单中。

微信公众号开发-(.net)相关推荐

  1. 微信公众号开发本地环境开发_如何在5分钟内使HTTPS在本地开发环境上工作

    微信公众号开发本地环境开发 Almost any website you visit today is protected by HTTPS. If yours isn't yet, it shoul ...

  2. 微信公众号开发用书php,php微信公众号开发(3)php实现简单微信文本通讯

    <PHP实战:PHP微信公众号开发(3)PHP实现简单微信文本通讯>要点: 本文介绍了PHP实战:PHP微信公众号开发(3)PHP实现简单微信文本通讯,希望对您有用.如果有疑问,可以联系我 ...

  3. 【微信公众号开发】获取并保存access_token、jsapi_ticket票据(可用于微信分享、语音识别等等)...

    步骤一:首先得开通公众号(目的是 获得appid.AppSecret.设置安全域名)~ [公众号设置]→[功能设置] 设置相应的域名 步骤二:编写帮助类WeixinLuyinHelper中的代码 #r ...

  4. 微信公众号开发Django-网页授权

    原文链接 对于基础的微信公众号开发,网页授权,JSSDK,图片处理应该是最重要的三部分了 根本上也是按照文档开发,技术含量并不高. (选Django=很多权限控制模块已经做好了,比较省力) 在开始之前 ...

  5. 慕课网_《Java微信公众号开发进阶》学习总结

    时间:2017年08月12日星期六 说明:本文部分内容均来自慕课网.@慕课网:http://www.imooc.com 教学源码:http://img.mukewang.com/down/... 学习 ...

  6. 微信公众号开发之准备工作

    这是微信公众号开发的第一步.是网页授权的那章的前提. 工作室有关一个订餐系统的开发,我对公众号开发比较感兴趣,所以参与这方面的学习. 本章主要讲述两个方面的内容,一是工具的准备,二是环境的配置. -- ...

  7. java微信公众号开发token验证失败的问题及解决办法

    java微信公众号开发token验证失败的问题及解决办法 参考文章: (1)java微信公众号开发token验证失败的问题及解决办法 (2)https://www.cnblogs.com/beardu ...

  8. 微信公众号开发小记(二)--服务器验证

    这篇是微信公众号开发小记的第二篇,承接上一篇,此次将完成如下主要功能 对接微信服务器和自己的服务器 需要的"材料" 到这里需要梳理一下都需要什么东西,以便在整个编码的过程中方便我们 ...

  9. 微信公众号开发小记——4.两种邀请用户的方式 扫码链接

    描述 假设的我们的服务号有这么一些功能,比如底部有按钮,点击会有一些复杂的功能,这时候可能就需要一个用户系统,有用户系统就经常想要做什么分享邀请新用户之类的,这时候就又有几种方式,1.直接一个连接,让 ...

  10. 微信公众号开发入门教程第一篇

    微信公众号开发入门教程第一篇 关键字:微信公众平台开发 作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/ ...

最新文章

  1. AMAB interconnector PL301(二)
  2. 数据库服务器 之 在Linux下使用perl通过unixODBC连接SQLServer2000
  3. C#中使用SharpZipLib进行解压缩然后进行二进制反序列化
  4. VMwareTool 安装
  5. WTM 构建DotNetCore开源生态,坐而论道不如起而行之
  6. 查看PLC IP 端口_西门子828D数控系统X130接口通讯怪异现象(X130手动设置的 IP)...
  7. 程序员面试金典 - 面试题 16.20. T9键盘(数组)
  8. 分区助手扩大c盘后自动修复_磁盘分区工具,这个好用;无论调整C盘还是系统迁移...
  9. 如何成为一名优秀的web前端工程师(前端攻城师)
  10. 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~二 DBContext实例中,表实体对象是怎么被加入的...
  11. 允许Fedora 12以root身份登录图形界面
  12. easyUI制作slider小滑块,可拖动和精确输入
  13. Java基础笔记(三)
  14. javascript鼠标效果
  15. android+抓取直播源,直播rtmp源地址抓取软件
  16. 方法重载和重写的区别
  17. Laravel快速创建统计图表
  18. postman tests获取cookie
  19. java socket连接超时_Java中Socket设置连接超时的代码
  20. winrar去掉烦人的广告 亲测有效

热门文章

  1. 汉诺塔问题的递归和非递归算法
  2. LVGL | LVGL移植之中文文档
  3. Matlab官方在线代码搜索网站,很多开源matlab代码
  4. Oh-my-Posh V3更新说明
  5. latex中公式的上下限和左右如何改变,即独立公式和行间公式的切换
  6. (9)隐蔽通道重点知识复习笔记
  7. 带外通道技术(OOB)总结
  8. Error during WebSocket handshake: Unexpected response code: 429
  9. jieba分词词性标注含义
  10. 在Linux中修改系统的IP地址