微信公众平台开发之认证"成为开发者".Net代码解析

.Net 实现微信公共服务平台开发的认证,认证成为开发者,具体内容如下

这些代码也就开始认证的时候用一次,以后就不用了:

const string Token = "XXXXX";//你的token
protected void Page_Load(object sender, EventArgs e)
{
  string postStr = "";
  if (Request.HttpMethod.ToLower() == "post")
  {
    System.IO.Stream s = System.Web.HttpContext.Current.Request.InputStream;
    byte[] b = new byte[s.Length];
    s.Read(b, 0, (int)s.Length);
    postStr = System.Text.Encoding.UTF8.GetString(b);
    if (!string.IsNullOrEmpty(postStr))
    {
      //ResponseMsg(postStr);
      Response.Write(ResponseMsg(postStr));
      Response.End();
    }
   //WriteLog("postStr:" + postStr);
  }
  else
  {
    Valid();
  }
}    

/// <summary>
/// 验证微信签名
/// </summary>
/// * 将token、timestamp、nonce三个参数进行字典序排序
/// * 将三个参数字符串拼接成一个字符串进行sha1加密
/// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
/// <returns></returns>
private bool CheckSignature()
{
  string signature = Request.QueryString["signature"].ToString();
  string timestamp = Request.QueryString["timestamp"].ToString();
  string nonce = Request.QueryString["nonce"].ToString();
  string[] ArrTmp = { Token, timestamp, nonce };
  Array.Sort(ArrTmp);   //字典排序
  string tmpStr = string.Join("", ArrTmp);
  tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
  tmpStr = tmpStr.ToLower();
  if (tmpStr == signature)
  {
    return true;
  }
  else
  {
    return false;
  }
}
.private void Valid()
{
  string echoStr = Request.QueryString["echoStr"].ToString();
  if (CheckSignature())
  {
    if (!string.IsNullOrEmpty(echoStr))
    {
      Response.Write(echoStr);
      Response.End();
    }
  }
}    

/// <summary>
/// 写日志(用于跟踪)
/// </summary>
private void WriteLog(string strMemo)
{
  string filename = Server.MapPath("/logs/log.txt");
  if (!Directory.Exists(Server.MapPath("//logs//")))
    Directory.CreateDirectory("//logs//");
  StreamWriter sr = null;
  try
  {
    if (!File.Exists(filename))
    {
      sr = File.CreateText(filename);
    }
    else
    {
      sr = File.AppendText(filename);
    }
    sr.WriteLine(strMemo);
  }
  catch
  { 

  }
  finally
  {
    if (sr != null)
      sr.Close();
  }
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • ASP.NET实现QQ、微信、新浪微博OAuth2.0授权登录 原创

    不管是腾讯还是新浪,查看他们的API,PHP都是有完整的接口,但对C#支持似乎都不是那么完善,都没有,腾讯是完全没有,新浪是提供第三方的,而且后期还不一定升级,NND,用第三方的动辄就一个类库,各种配置还必须按照他们约定的写,烦而且乱,索性自己写,后期的扩展也容易,看过接口后,开始以为很难,参考了几个源码之后发现也不是那么难,无非是GET或POST请求他们的接口获取返回值之类的,话不多说,这里只提供几个代码共参考,抛砖引玉了... 我这个写法的特点是,用到了Session,使用对象实例化之后调用

  • asp.net微信开发(高级群发图文)

    上一篇介绍了如何群发文本消息,本篇将介绍如何群发图文信息,上传图文信息所需的素材,界面如下: 我们先看从素材库中获取图文素材的代码,界面: 素材列表,我是使用的repeater控件, 前台代码如下: <!--弹出选择素材窗口--> <div id="shownewgroup"> <div class="closeLogin" style="height:40px; background-color:#ddd9ff; line-

  • asp.net实现微信公众账号接口开发教程

    说起微信公众帐号,大家都不会陌生,使用这个平台能给网站或系统增加一个新亮点,直接进入正题吧,在使用之前一定要仔细阅读官方API文档. 使用.net实现的方法: //微信接口地址 页面代码: weixin _wx = new weixin(); string postStr = ""; if (Request.HttpMethod.ToLower() == "post") { Stream s = System.Web.HttpContext.Current.Requ

  • ASP.NET微信开发(接口指南)

    公众平台用户提交信息后,微信服务器将发送GET请求到填写的URL上,并且带上四个参数: 开发者通过检验signature对请求进行校验(下面有校验方式).若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败. signature结合了开发者填写的token参数和请求中的timestamp参数.nonce参数. 加密/校验流程: 1. 将token.timestamp.nonce三个参数进行字典序排序 2. 将三个参数字符串拼接成一个字符串进行sha1加密

  • asp.net微信开发(已关注用户管理)

    公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成.一次拉取调用最多拉取10000个关注者的OpenID,可以通过多次拉取的方式来满足需求. 接口调用请求说明 http请求方式: GET(请使用https协议) 返回说明 正确时返回JSON数据包: 错误时返回JSON数据包(示例为无效AppID错误): {"errcode":40013,"errmsg":"invalid

  • asp.net微信开发(开发者接入)

    先上图,看一看需要进行哪些项目的操作: 在项目的根目录或者特定的文件夹内,创建一个ashx文件(一般处理程序文件),如图 public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string postString = string.Empty; if (HttpContext.Current.Request.HttpMethod.ToUpper() ==

  • 微信公众号支付(MVC版本)

    一.获取微信支付 MCHID,KEY,APPID,APPSecret 四个支付关键值. 微信支付商户平台 https://pay.weixin.qq.com/index.php/core/home/login?return_url=%2F   1.登录微信支付商户平台获取到商户号(MCHID),   2.在"账号中心"栏目下"API安全"栏目里设置API密钥(KEY) 微信公众号: https://mp.weixin.qq.com/      1.登录微信公众在&q

  • 微信公众平台开发之获得ACCESSTOKEN .Net代码解析

    如何认证成为开发者?请点击第一篇文章进行查看,成为了开发者之后微信平台会给您appid和secret,在订阅号中是没有的,所以因该申请一下服务号,有了ACCESSTOKEN才能做添加菜单,上传/下载图片等功能. private string GetToken() { // 也可以这样写: //return GetPage("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的appid&

  • .Net微信开发之如何解决access_token过期问题

    因为access_token,在以后的高级功能里面会经常用到,所以这里不得不这里对前面所讲解的access_token改造一下. 另外需要说明的是access_token是变化的,有自己的周期,官方解释为:"有效期为7200秒",这就要求我们把获得的access_token存入一个物理文件或者Application中,请求到过期后修改这些内容,需要用的时候读出来. 有些人可能想到了,如果过期我就在获得一个就好了,不用物理文件和Application也可以达到同样的效果,但是需要注意了微

  • 微信公众平台开发之语音识别.Net代码解析

    语音识别这个功能属于高级功能,必须微信实名认证后才能实现,认证费用300元/年,如果你作为开发者可以申请测试帐号,也是可以的.首先建立一个微信消息类,这个类比之前多了一个属性. class wxmessage { public string FromUserName { get; set; } public string ToUserName { get; set; } public string MsgType { get; set; } public string EventName { g

随机推荐