一、c#微信公众号开发----基本设置

参考微信官方文档

https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html

开发→基本配置

公众号开发信息

注:1.记录好开发者密码,会在程序中验证过程中使用到。

2.通过appid和appsecret调用access_token时,至有在ip白名单的ip才能成功调用。

服务器配置

若此处开启服务器配置,设置的自动回复和自定义菜单将全部失效。必须在程序中重写相关方法。

点击修改配置,token为随意填写的参数

我是用的是一般处理程序编写的微信接口token验证,参数参考官方文档。代码如下:

开发者通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

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

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

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

  1. public void ProcessRequest(HttpContext context){
  2. //验证token
  3. string postString = string.Empty;
  4. string token ="aabbcc"; //验证token,随意填写
  5. if(string.IsNullEmpty(token)){
  6. return ;
  7. }
  8. string echoString = HttpContext.Current.Request.QueryString["echoStr"];
  9. string signature = HttpContext.Current.Request.QueryString["sianature"];
  10. string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
  11. string nonce = HttpContext.Current.Request.QueryString["nonce"];
  12. if(CheckSignature(token,signature,timestamp,nonce)){
  13. if(!string.IsNullOrEmpty(echiString)){
  14. HttpContext.Current.Response.Write(echoString);
  15. HttpContext.Current.Response.End();
  16. }
  17. }
  18. }
  1. /// <summary>
  2. /// 验证微信签名
  3. /// </summary>
  4. /// <param name="token">token</param>
  5. /// <param name="signature">签名</param>
  6. /// <param name="timestamp">时间戳</param>
  7. /// <param name="nonce">随机数</param>
  8. /// <returns></returns>
  9. public static bool CheckSignature(string token,
  10. string signature, string timestamp, string nonce)
  11. {
  12. string[] ArrTmp = { token, timestamp, nonce };
  13. //字典排序
  14. Array.Sort(ArrTmp);
  15. //拼接
  16. string tmpStr = string.Join("", ArrTmp);
  17. //sha1验证
  18. tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
  19. //tmpStr = Membership.CreateUser(tmpStr, "SHA1");
  20. tmpStr = tmpStr.ToLower();
  21.  
  22. if (tmpStr == signature)
  23. {
  24. return true;
  25. }
  26. else
  27. {
  28. return false;
  29. }
  30. }

将编写的代码路径,填写到url里,前面填写的“aabbcc”,此时token里填写的也必须为“aabbcc”。

token必须保持一致,若不一致会弹出提示。

二、获取timestamp/nonce/signature

timestamp时间戳

  1. public static string timestamp(){
  2. TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
  3. return Convert.ToInt64(ts.TotalSeconds).ToString();
  4. }

nonce随机数

  1. public static string getNoncestr(){
  2. Random random = new Random();
  3. return Md5Util.GetMD5(random.Next(1000).ToString(),”GBK”).ToLower().Replace(“s”,”S”);
  4. }

signature随机数

  1. public static string Signature(string token, string timestamp, string nonce){
  2. string[] ArrTmp = { token, timestamp, nonce };
  3. //字典排序
  4. Array.Sort(ArrTmp);
  5. //拼接
  6. string tmpStr = string.Join("", ArrTmp);
  7. //sha1验证
  8. tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
  9. tmpStr = tmpStr.ToLower();
  10. return tmpStr;
  11. }

c#微信公众号开发一----基本设置,服务器配置token验证,获取timestamp/nonce/signature的更多相关文章

  1. 带领技术小白入门——基于java的微信公众号开发(包括服务器配置、java web项目搭建、tomcat手动发布web项目、微信开发所需的url和token验证)

    微信公众号对于每个人来说都不陌生,但是许多人都不清楚是怎么开发的.身为技术小白的我,在闲暇之余研究了一下基于java的微信公众号开发.下面就是我的实现步骤,写的略显粗糙,希望大家多多提议! 一.申请服 ...

  2. C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一)

    咨询 请加 QQ::QQ群: 在微信里面,非认证的公众号账号,只能通过在微信回复菜单单击等事件获取openid,但是认证的公众账号(之前认证的订阅号是不可以的,现在新开放了政府媒体机构的认证订阅号)可 ...

  3. C#微信公众号开发-高级接口-之网页授权oauth2.0获取用户基本信息(二)

    C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一) 中讲解了如果通过微信授权2.0snsapi_base获取已经关注用户的基本信息,然而很多情况下我们经常需要获取非关注用户的信息,方法 ...

  4. C#微信公众号开发系列教程三(消息体签名及加解密)

    http://www.cnblogs.com/zskbll/p/4139039.html C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C ...

  5. 微信公众号开发系列教程一(调试环境部署续:vs远程调试)

    http://www.cnblogs.com/zskbll/p/4080328.html 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试 ...

  6. 微信公众号开发C#系列-2、微信公众平台接入指南

    概述 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流程是这样的,用户发送消息到微信服务器,微信服务器将接收到的消息post到用户接入时填写的url中,在url处理程序中,首先 ...

  7. python之微信公众号开发(基本配置和校验)

    前言 最近有微信公众号开发的业务,以前没有用python做过微信公众号开发,记录一下自己的学习和开发历程,共勉! 公众号类型 订阅号 普通订阅号 认证订阅号 服务号 普通服务号 认证服务号 服务方式 ...

  8. WeChat 微信公众号开发步骤

    WeChat  微信公众号开发步骤 一.什么是微信公众号? 微信公众号是开发者或商家在微信公众平台上申请的应用账号,该帐号与QQ账号互通,通过公众号,商家可在微信平台上实现和特定群体的文字.图片.语音 ...

  9. Java之微信公众号开发

    这次以文本回复作为案例来讲解Java相关得微信公众号开发. 首先必须要有一个个人微信公众号 个人微信公众号相关的接口权限有限,不过用于个人学习体验一下足够了,如图: 然后进入微信公众后台,点击基本配置 ...

随机推荐

  1. iOS的常用类库

    target 'NewCompass' do #UI通用 pod 'SVProgressHUD' pod 'MJRefresh' pod 'SnapKit' #pod 'RTRootNavigatio ...

  2. Android中在fragment中实现点击按钮事件

    在fragment不能直接进行点击事件,需要放到oncreatActivity中 具体方法如下: 需要注意的是import android.support.v4.app.Fragment;导入的这个包 ...

  3. Cesium专栏-热力图(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  4. MySQL中if的写法

    关键词:IF --if 判断,如果 device_num 的值为1,则赋值为100,反之为200 SELECT district, shop_name, IF ( device_num , , ) A ...

  5. Shell—引入外部脚本文件

    在Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数呢? 方式1:. filename               方式2:source filename    需要注意: 两个点之间 ...

  6. Python对MongoDB增删改查

    pip install pymongo import pymongo # 建立连接 client = pymongo.MongoClient() # 指定数据库 (不存在则会新建) db = clie ...

  7. [Go] go连接influxdb的库

    开启了influxdb后,会监听8086端口下载客户端代码git clone https://github.com/influxdata/influxdb1-client.git $GOPATH/sr ...

  8. May 19th, 2019. Week 21st, Sunday

    Fight for what matters to you. 为自己珍视的东西奋斗吧! We all want to make our life goals true, and we all expe ...

  9. 【西北师大-2108Java】第五次作业成绩汇总

    [西北师大-2108Java]第五次作业成绩汇总 作业题目 面向对象程序设计(JAVA) 第7周学习指导及要求 实验目的与要求 (1)掌握四种访问权限修饰符的使用特点: (2)掌握Object类的用途 ...

  10. 手动更新了packages.config Nuget配置文件,自动引用dll

    通过Google查询到:http://stackoverflow.com/questions/6876732/how-do-i-get-nuget-to-install-update-all-the- ...