• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > C#.net 微信公众账号接口开发

C#.net 微信公众账号接口开发

作者:陌上幽兰 字体:[增加 减小] 来源:互联网 时间:2017-05-11

陌上幽兰通过本文主要向大家介绍了马桶c的个人空间,马桶c,c站,欲情 c max,c语言等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

微信越来越火,微信公众平台成为开发成新宠,本文用C#.net开发微信公众信号接口。

微信接口地址代码:

weixin _wx = new weixin();

        string postStr = "";

        if (Request.HttpMethod.ToLower() == "post")

        {

          Stream s = System.Web.HttpContext.Current.Request.InputStream;

          byte[] b = new byte[s.Length];

          s.Read(b, 0, (int)s.Length);

          postStr = Encoding.UTF8.GetString(b);


          if (!string.IsNullOrEmpty(postStr)) //请求处理

          {

            _wx.Handle(postStr); 

          }

        }

        else

        {

          _wx.Auth();

        }


微信处理类:

public class weixin

  {

    private string Token = "weixin_token"; //换成自己的token

     

    public void Auth()

    {

      string echoStr = System.Web.HttpContext.Current.Request.QueryString["echoStr"];

      if (CheckSignature())

      {

        if (!string.IsNullOrEmpty(echoStr))

        {

          System.Web.HttpContext.Current.Response.Write(echoStr);

          System.Web.HttpContext.Current.Response.End();

        }

      }

    }


    public void Handle(string postStr)

    {

      //封装请求类

      XmlDocument doc = new XmlDocument();

      doc.LoadXml(postStr);

      XmlElement rootElement = doc.DocumentElement;


      XmlNode MsgType = rootElement.SelectSingleNode("MsgType");


      RequestXML requestXML = new RequestXML();

      requestXML.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText;

      requestXML.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;

      requestXML.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText;

      requestXML.MsgType = MsgType.InnerText;


      if (requestXML.MsgType == "text")

      {

        requestXML.Content = rootElement.SelectSingleNode("Content").InnerText;

      }

      else if (requestXML.MsgType == "location")

      {

        requestXML.Location_X = rootElement.SelectSingleNode("Location_X").InnerText;

        requestXML.Location_Y = rootElement.SelectSingleNode("Location_Y").InnerText;

        requestXML.Scale = rootElement.SelectSingleNode("Scale").InnerText;

        requestXML.Label = rootElement.SelectSingleNode("Label").InnerText;

      }

      else if (requestXML.MsgType == "image")

      {

        requestXML.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText;

      }


      //回复消息

      ResponseMsg(requestXML);

    }


    /// <summary>

    /// 验证微信签名

    /// </summary>

    /// * 将token、timestamp、nonce三个参数进行字典序排序

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

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

    /// <returns></returns>

    private bool CheckSignature()

    {

      string signature = System.Web.HttpContext.Current.Request.QueryString["signature"];

      string timestamp = System.Web.HttpContext.Current.Request.QueryString["timestamp"];

      string nonce = System.Web.HttpContext.Current.Request.QueryString["nonce"];

      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;

      }

    }

    

    /// <summary>

    /// 回复消息(微信信息返回)

    /// </summary>

    /// <param name="weixinXML"></param>

    private void ResponseMsg(RequestXML requestXML)

    {

      try

      {

        string resxml = "";

        mijiya mi = new mijiya(requestXML.Content,requestXML.FromUserName);


        if (requestXML.MsgType == "text")

        {

          //在这里执行一系列操作,从而实现自动回复内容. 

          string _reMsg = mi.GetReMsg();

          if (mi.msgType == 1)

          {

            resxml = "<xml><ToUserName><![CDATA[" + requestXML.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + requestXML.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime><MsgType><![CDATA[news]]></MsgType><Content><![CDATA[]]></Content><ArticleCount>2</ArticleCount><Articles>";

            resxml += mi.GetRePic(requestXML.FromUserName);

            resxml += "</Articles><FuncFlag>1</FuncFlag></xml>";

          }

          else

          {

            resxml = "<xml><ToUserName><![CDATA[" + requestXML.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + requestXML.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[" + _reMsg + "]]></Content><FuncFlag>1</FuncFlag></xml>";

          }

        }

        else if (requestXML.MsgType == "location")

        {

          string city = GetMapInfo(requestXML.Location_X, requestXML.Location_Y);

          if (city == "0")

          {

            resxml = "<xml><ToUserName><![CDATA[" + requestXML.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + requestXML.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[好啦,我们知道您的位置啦。您可以:" + mi.GetDefault() + "]]></Content><FuncFlag>1</FuncFlag></xml>";

          }

          else

          {

            resxml = "<xml><ToUserName><![CDATA[" + requestXML.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + requestXML.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime><MsgType><![CDATA[text]]></MsgType>



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#开发微信 二维码鼠标滑动 图像显示隐藏效果(推荐)
  • C#开发微信 二维码鼠标滑动 图像显示隐藏效果(推荐)
  • C#.net 微信公众账号接口开发
  • C#实现把图片下载到服务器代码
  • C#将DataTable转化为List<T>
  • C#中OpenFileDialog和PictrueBox的用法分析
  • c#网站WebConfig中域名引用示例介绍
  • C#中的switch case使用介绍
  • C#随机生成不重复字符串的两个不错方法
  • C# 判断两张图片是否一致的快速方法

相关文章

  • 2017-05-11WPF实现渐变淡入淡出的登陆窗口效果
  • 2017-05-11asp .net实现给图片添加图片水印方法示例
  • 2017-05-11SQL为查询的结果加上序号(ROW_NUMBER) 合并多个查询结果
  • 2017-05-11asp.net 文件下载实现代码
  • 2017-05-11asp.net 关于==?:和if()else()条件判断等效例子
  • 2017-05-11asp.net AjaxControlToolKit--TabContainer控件的介绍
  • 2017-05-11Repeater怎么实现多行间隔显示分隔符
  • 2017-05-11ASP.Net MVC_DotNetZip简单使用方法,解决文件压缩的问题
  • 2017-05-11如何用Response.Redirect方法传递汉字
  • 2017-05-11ASP.NET实现个人信息注册页面并跳转显示

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net core实现文件上传功能
    • javascript操作ASP.NET服务器控件
    • ASP.NET缓存管理的几种方法
    • 详解ASP.NET配置文件Web.config
    • ASP.NET MVC4之js css文件合并功能(3)
    • ASP.NET笔记之 Request 、Response 与Server的使用
    • ASP.NET实现级联下拉框效果实例讲解
    • asp.net 在线编辑word文档 可保存到服务器
    • asp.net 仿腾讯微薄提示 还能输入*个字符 的实现代码
    • 在ASP.NET 2.0中操作数据之六十七:在TableAdapters中使用JOINs

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有