当前位置:  编程技术>.net/c#/asp.net

使用c#开发公众平台自定义菜单功能

    来源: 互联网  发布时间:2014-10-27

    本文导语:  代码如下:     test                     代码如下:using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.W...

代码如下:



    test


   
   


    
   

   


代码如下:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace guotaotao_weixin
{
    public partial class cm : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                weixin wx = new weixin();
                //lt_msg.Text = wx.GetAccessToken();
                lt_msg.Text = wx.DelMenu();

                lt_msg.Text += wx.SetMenu();
            }
        }
    }
}

代码如下:

namespace guotaotao_weixin {

   
    public partial class cm {

        ///
        /// form1 控件。
        ///
        ///
        /// 自动生成的字段。
        /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
        ///
        protected global::System.Web.UI.HtmlControls.HtmlForm form1;

        ///
        /// lt_msg 控件。
        ///
        ///
        /// 自动生成的字段。
        /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
        ///
        protected global::System.Web.UI.WebControls.Literal lt_msg;
    }
}

代码如下:

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using guotaotao_weixin.database;
using guotaotao.database;

namespace guotaotao_weixin
{
    public class guotaotao
    {
        private string _content = "";
        private string _FromUserName = "";
        public int msgType = 0;
        public int isFirst = 0;
        public int pid = 0;

        #region "构造函数"
            public guotaotao()
            {
            }
            public guotaotao(string content)
            {
                this._content = content;
            }
            public guotaotao(string content,string FromUserName)
            {
                this._content = content;
                this._FromUserName = FromUserName;
            }
        #endregion

        
        public string createMenuDate()
        {
            string postData = "{" + "rn";
            postData += ""button":[ " + "rn";
            postData += "{ " + "rn";
            postData += ""name":"产品"," + "rn";
            postData += ""sub_button":[" + "rn";
            postData += "{ " + "rn";
            postData += "   "type":"click"," + "rn";
            postData += "   "name":"无糖系列", " + "rn";
            postData += "   "key":"gtt_menu_001001"" + "rn";
            postData += "}," + "rn";
            postData += "{ " + "rn";
            postData += "   "type":"click"," + "rn";
            postData += "   "name":"干果系列", " + "rn";
            postData += "   "key":"gtt_menu_001002"" + "rn";
            postData += "}," + "rn";
            postData += "{ " + "rn";
            postData += "   "type":"click"," + "rn";
            postData += "   "name":"休闲系列", " + "rn";
            postData += "   "key":"gtt_menu_001003"" + "rn";
            postData += "}," + "rn";
            postData += "{ " + "rn";
            postData += "   "type":"click"," + "rn";
            postData += "   "name":"儿童系列", " + "rn";
            postData += "   "key":"gtt_menu_001004"" + "rn";
            postData += " }]" + "rn";
            postData += "}," + "rn";
            postData += "{" + "rn";
            postData += ""name":"活动", " + "rn";
            postData += ""sub_button":[" + "rn";
            postData += "{ " + "rn";
            postData += "   "type":"click"," + "rn";
            postData += "   "name":"抽奖", " + "rn";
            postData += "   "key":"gtt_menu_002001"" + "rn";
            postData += "}," + "rn";
            postData += "{ " + "rn";
            postData += "   "type":"view"," + "rn";
            postData += "   "name":"获奖名单", " + "rn";
            postData += "   "url":"http://www.aaa.com/apps/honor_list.aspx"" + "rn";
            postData += "}," + "rn";
            postData += "{ " + "rn";
            postData += "   "type":"click"," + "rn";
            postData += "   "name":"优惠券", " + "rn";
            postData += "   "key":"gtt_menu_002003"" + "rn";
            postData += " }]" + "rn";
            postData += "}," + "rn";
            postData += "{" + "rn";
            postData += ""name":"帮助"," + "rn";
            postData += ""sub_button":[" + "rn";
            postData += "{ " + "rn";
            postData += "   "type":"view"," + "rn";
            postData += "   "name":"关于我们", " + "rn";
            postData += "   "url":"http://www.aaa.com/apps/aboutus.aspx"" + "rn";
            postData += "}," + "rn";
            postData += "{ " + "rn";
            postData += "   "type":"view"," + "rn";
            postData += "   "name":"联系我们", " + "rn";
            postData += "   "url":"http://www.aaa.com/apps/contactus.aspx"" + "rn";
            postData += "}," + "rn";
            postData += "{ " + "rn";
            postData += "   "type":"view"," + "rn";
            postData += "   "name":"查询订单", " + "rn";
            postData += "   "url":"http://www.aaa.com/apps/orders_chaxun.aspx"" + "rn";
            postData += "}," + "rn";
            postData += "{ " + "rn";
            postData += "   "type":"view"," + "rn";
            postData += "   "name":"留言反馈", " + "rn";
            postData += "   "url":"http://www.aaa.com/apps/feedback.aspx"" + "rn";
            postData += " }]" + "rn";
            postData += "}]" + "rn";
            postData += "}" + "rn";

            return postData;
        }

    }
}


菜单中的URL地址换成自己的

代码如下:

using System;
using System.Web.Security;
using System.Xml;
using aaa_weixin.database;
using Newtonsoft.Json;

namespace aaa_weixin
{
    public class weixin
    {
        private string Token = ""; //微信里面开发者模式Token
        private string devlopID = "";//微信里面开发者模式:开发者ID
        private string devlogPsw = "";//微信里面开发者模式: 开发者密码
        public string AccessToken = ""; //获取的通行证

        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 string GetAccessToken() //获取通行证
        {           
            string url_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + devlopID + "&secret=" + devlogPsw;
            string result = func.webRequestGet(url_token);
            accessToken deserializedProduct = (accessToken)JsonConvert.DeserializeObject(result, typeof(accessToken));
            this.AccessToken  = deserializedProduct.access_Token;
            return this.AccessToken;
        }

        public string GetMenu() //获取当前菜单情况
        {
            string url_Menu_Get = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=" + this.AccessToken;
            string output = func.webRequestGet(url_Menu_Get);
            //wxErr deserializedProduct = (wxErr)JsonConvert.DeserializeObject(output, typeof(wxErr));
            //return deserializedProduct.errmsg;
            return output;
        }

        public string SetMenu() //设置最新菜单
        {
            string url_Menu_Create = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + this.GetAccessToken();

            aaa gtt = new aaa();
            string postData = gtt.createMenuDate();
            string result = func.webRequestPost(url_Menu_Create,postData);

            return result;
        }

        public string DelMenu() //删除菜单
        {
            string url_Menu_Delete = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=" + this.GetAccessToken();
            string result = func.webRequestGet(url_Menu_Delete);

            return result;
        }
        ///
        /// 验证微信签名
        ///
        /// * 将token、timestamp、nonce三个参数进行字典序排序
        /// * 将三个参数字符串拼接成一个字符串进行sha1加密
        /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
        ///
        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;
            }
        }

    }

    public class wxErr
    {
        private int Errcode;
        public int errcode
        {
            get { return Errcode; }
            set { Errcode = value; }
        }

        private string Errmsg;
        public string errmsg
        {
            get { return Errmsg; }
            set { Errmsg = value; }
        }
    }
    public class accessToken
    {
        private string access_token;
        public string access_Token
        {
            get { return access_token; }
            set { access_token = value; }
        }
        private int expires_in;
        public int expires_In
        {
            get { return expires_in; }
            set { expires_in = value; }
        }
    }

 }


    
 
 

您可能感兴趣的文章:

  • c#中SAPI使用总结——SpVoice的使用方法
  • c#友好显示日期 c#日期datetime使用方法
  • 请问在工作岗位的朋友!使用java开发的公司对c#的态度如何?
  • c#自带缓存使用方法 c#移除清理缓存
  • C#中的switch case使用介绍
  • c# 空合并运算符“??”的使用详解
  • 使用C#实现在屏幕上画图效果的代码实例
  • 深入C#中使用SqlDbType.Xml类型参数的使用详解
  • c#闭包使用方法示例
  • c# split分隔字符串使用方法
  • c#的params参数使用示例
  • c# split分隔字符串使用方法 iis7站长之家
  • 使用C# Winform应用程序获取网页源文件的解决方法
  • C#将时间转成文件名使用方法
  • C# 使用匿名函数解决EventHandler参数传递的难题
  • 使用C#获取系统特殊文件夹路径的解决方法
  • C#使用带like的sql语句时防sql注入的方法
  • C#可选参数的相关使用
  • C# 静态构造函数使用总结
  • C# WndProc的使用方法示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • gtkmenuitem使用,我想动态改变菜单上面的文字,就像delphi的caption一样,应该怎样做
  • 请教各位高手,怎么才能使用XML生成一个数型菜单
  • 请问:使用fdisk/mbr清除bios中登陆选择菜单后,如何恢复?或重设
  • Solaris桌面的程序控制面板中的一项被我使用右键菜单中的Move left/Move right移走了, 出不来了,怎么恢复啊?
  • 请问如何使用html打开一个窗口,只有菜单栏。
  • Android Spinner 下拉菜单的使用
  • Cocos2d-x UI开发之菜单类使用实例
  • android教程之使用popupwindow创建菜单示例
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • asp程序使用的access在Linux下如何使用!
  • c/c++预处理命令预#,##使用介绍
  • 新装的Linux使用root用户不能使用FTP?
  • 在div中使用css让文字底部对齐的方法
  • LINUX下使用Eclipse,如何使用交叉编译器?
  • Python namedtuple(命名元组)使用实例
  • redhat9内存使用率高达73%,怎么查看内存具体使用情况


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3