MVC下c#对接微信公众平台开发者模式

在ashx文件中进行HttpContext的处理:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Biz.WX;

namespace weixinplat
{
    /// <summary>
    /// WeiXin 的摘要说明
    /// </summary>
    public class WeiXin : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            try
            {
                string postString = string.Empty;//初始化空字符串来转抓到的request请求的bit流
                context.Response.ContentType = "text/plain";
                if (context.Request.HttpMethod.ToLower() == "post")//如果从requset的httpmethod方法是post就进行图文等处理
                {

                }
                else//否则就是get方式,进行校验认证
                {
                    AccessToken.Auth();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

在专门处理数据的类库Biz中校验:

其中AccessToken类用来处理token:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Configuration;

namespace Biz.WeiXin
{
    public class AccessToken
    {
        /// <summary>
        /// 这个函数是初始化配置服务器地址
        /// </summary>
        public static void Auth()
        {
            string echoStr = HttpContext.Current.Request.QueryString["echoStr"];
            if (CheckSignature()) //校验签名是否正确
            {
                if (!string.IsNullOrEmpty(echoStr))
                {
                    HttpContext.Current.Response.Write(echoStr);
                    HttpContext.Current.Response.End();

                }
            }
        }
        /// <summary>
        /// 校验微信公众平台签名函数
        /// </summary>
        /// <returns></returns>
        public static bool CheckSignature()
        {
            string signature = HttpContext.Current.Request.QueryString["signature"];
            string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
            string nonce = HttpContext.Current.Request.QueryString["nonce"];
            string token = ConfigurationManager.AppSettings["weixin_token"];

            string[] tmpArr = { token , timestamp, nonce };
            Array.Sort(tmpArr);
            string tmpStr = string.Join("", tmpArr);
            tmpStr = WX.Sha1_Hash(tmpStr);

            if (tmpStr == signature)
            {

                return true;
            }
            else
            {
                return
                    false;
            }

        }
    }
}

WX类用来处理哈希算法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace Biz.WX
{
    public class WX
    {
        public static string Sha1_Hash(string str_sha1_in)
        {
            SHA1 sha1 = new SHA1CryptoServiceProvider();
            byte[] bytes_sha1_in = UTF8Encoding.Default.GetBytes(str_sha1_in);
            byte[] bytes_sha1_out = sha1.ComputeHash(bytes_sha1_in);
            string str_sha1_out = BitConverter.ToString(bytes_sha1_out);
            str_sha1_out = str_sha1_out.Replace("-", "").ToLower();
            return str_sha1_out;
        }
    }
}
时间: 2024-11-10 13:08:42

MVC下c#对接微信公众平台开发者模式的相关文章

微信公众平台开发者模式自动回复功能与自定义菜单

微信开发者模式自动回复功能 1.提取POST来的数据中的信息 2.判断微信客户端发来的信息内容(以文本信息为例) 3.根据信息内容进行处理 4.把处理结果以XML的形式返回给微信服务器 5.微信服务器反馈内容给微信客户端 1.获取用户发来的文本信息的内容 private void ExtractPostData() /*** 提取POST来的数据中的信息 ***/ { Stream s = HttpContext.Current.Request.InputStream; //读取post来的数据

C#微信公众平台开发者模式开启代码

using System;using System.IO;using System.Text;using System.Web.Security; namespace HPZJ.Web.sys.excel{    public partial class hpd_api_weixin : System.Web.UI.Page    {        const string Token = "token";  //你的token        protected void Page_L

微信公众平台开发者文档

微信公众平台开发者文档 公众平台开发接口介绍微信公众平台开发者文档,布布扣,bubuko.com

Java微信公众平台开发模式+自定义按钮源码

首先,想用开放模式需要先成为开发者.成为开发者有两种写法. 一是:通过jsp页面,用out.print("echostr")//SHA1加密的字符串: 二是:通过Servlet.doGet返回exhostr,给微信平台. 这里我只写第二种方式的请求(这里的请求是以get方式请求),代码如下: import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.ut

微信公众平台-开发模式配置 URL Token

微信公众平台-开发模式配置需要拥有自己的服务器,配置页面有明文:"请填写接口配置信息,此信息需要你拥有自己的服务器资源."  这句话就是说有自己的服务器,独立ip,80端口开放的.并且这台服务器要能提供服务,就是说要能够被微信后台的服务器访问到.这需要服务器有一个外网IP.我们的Web Server监听外网IP的80端口之后就能收到微信后台的请求了. 可能很多读者希望能在自己的PC机上做接入的测试,但是笔者建议不要这么做,因为这可能会遇到很多的麻烦.如果你的确想这么做,请注意以下事情:

微信公众平台开发模式

微信公众平台提供了开发者模式,开启开发者模式的方法入下图 在右侧的工具栏最后一项“开发者中心”.点击进入“开发者中心”,需要配置服务器路径URL,和表示符Token.之后完成申请接入: (1)将微信提供的php文件放到服务器上,下载地址:http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.zip; (2)确认文件名和配置URL中的文件名一致; (3)修改php文件中define("TOKEN", "weixin&qu

微信公众平台开发模式中的安全问题

一言以蔽之:只要URL和TOKEN设置的容易被猜到,ToUsername又不验证.攻击者可以轻易操控存在漏洞的公众平台. 原文作者:Create Chen 原文出处:http://technology.cnblogs.com 申请公众平台开发者模式需要填写一个URL和一个Token, 见下图: 如果这个URL和Token被别人猜中了, 并且你不判断消息中的ToUserName属性是否跟你微信号相配, 那么别人的公众帐号申请开发者时填写你的URL和你的Token, 别人的公众帐号就能把你公众帐号的

微信公众平台开发模式详解图文教程

这部分主要讲解微信公众平台的开发模式,首先说明一下我不是程序员,所以本篇并非讲编程代码之类的,但是由于我们正在开发微信POP营销系统,所以我对开发模式有一定了解,这些了解应该会对准备尝试做微信开发的朋友会有一定帮助,少走部分弯路吧.如果对本篇教程有任何疑问或错漏之处欢迎留言或直接联系我进行更正修改. 微信公众平台开发模式 首先我们要明确开发模式什么可以做,什么不可以做: 一.开发模式可以实现的功能 可以接收用户发送过来的消息,通过你自己开发的系统把对应内容反馈回去.可以接收用户发送过来的地理位置

微信官方接口(对接微信公众平台)

1.获取微信的API接口 接口地址:http://mp.weixin.qq.com/wiki/home/index.html 打开接入指南后往下拉, 点击下载.下载完成后解压,将wx_sample.php文件复制到相关目录中,并更名为api.php,设置TOKEN秘钥文件 之后通过SVN软件上传api.php文件到BAE. 2.登录微信公众平台,进入账号中, URL为自定义的网址,记住后面要加上api.php接口文件,Token为我们刚刚所说的秘钥文件,填写无误后点击提交 配置完成后,效果如下图