復制代碼<\/span> 代碼如下:<\/p>\nusing?System;\r\nusing?System.Collections;\r\nusing?System.Configuration;\r\nusing?System.Data;\r\nusing?System.Linq;\r\nusing?System.Web;\r\nusing?System.Web.Security;\r\nusing?System.Web.UI;\r\nusing?System.Web.UI.HtmlControls;\r\nusing?System.Web.UI.WebControls;\r\nusing?System.Web.UI.WebControls.WebParts;\r\nusing?System.Xml.Linq;\r\nnamespace?guotaotao_weixin\r\n{\r\n????public?partial?class?cm?:?System.Web.UI.Page\r\n????{\r\n????????protected?void?Page_Load(object?sender,?EventArgs?e)\r\n????????{\r\n????????????if?(!IsPostBack)\r\n????????????{\r\n????????????????weixin?wx?=?new?weixin();\r\n????????????????\/\/lt_msg.Text?=?wx.GetAccessToken();\r\n????????????????lt_msg.Text?=?wx.DelMenu();\r\n????????????????lt_msg.Text?+=?wx.SetMenu();\r\n????????????}\r\n????????}\r\n????}\r\n}<\/pre>\n復制代碼<\/span> 代碼如下:<\/p>\nnamespace?guotaotao_weixin?{\r\n????\r\n????public?partial?class?cm?{\r\n????????\/\/\/?\r\n????????\/\/\/?form1?控件。\r\n????????\/\/\/?<\/summary>\r\n????????\/\/\/?\r\n????????\/\/\/?自動生成的字段。\r\n????????\/\/\/?若要進行修改,請將字段聲明從設計器文件移到代碼隱藏文件。\r\n????????\/\/\/?<\/remarks>\r\n????????protected?global::System.Web.UI.HtmlControls.HtmlForm?form1;\r\n????????\/\/\/?\r\n????????\/\/\/?lt_msg?控件。\r\n????????\/\/\/?<\/summary>\r\n????????\/\/\/?\r\n????????\/\/\/?自動生成的字段。\r\n????????\/\/\/?若要進行修改,請將字段聲明從設計器文件移到代碼隱藏文件。\r\n????????\/\/\/?<\/remarks>\r\n????????protected?global::System.Web.UI.WebControls.Literal?lt_msg;\r\n????}\r\n}<\/pre>\n復制代碼<\/span> 代碼如下:<\/p>\nusing?System;\r\nusing?System.Data;\r\nusing?System.Configuration;\r\nusing?System.Linq;\r\nusing?System.Web;\r\nusing?System.Web.Security;\r\nusing?System.Web.UI;\r\nusing?System.Web.UI.HtmlControls;\r\nusing?System.Web.UI.WebControls;\r\nusing?System.Web.UI.WebControls.WebParts;\r\nusing?System.Xml.Linq;\r\nusing?guotaotao_weixin.database;\r\nusing?guotaotao.database;\r\nnamespace?guotaotao_weixin\r\n{\r\n????public?class?guotaotao\r\n????{\r\n????????private?string?_content?=?\"\";\r\n????????private?string?_FromUserName?=?\"\";\r\n????????public?int?msgType?=?0;\r\n????????public?int?isFirst?=?0;\r\n????????public?int?pid?=?0;\r\n????????#region?\"構造函數(shù)\"\r\n????????????public?guotaotao()\r\n????????????{\r\n????????????}\r\n????????????public?guotaotao(string?content)\r\n????????????{\r\n????????????????this._content?=?content;\r\n????????????}\r\n????????????public?guotaotao(string?content,string?FromUserName)\r\n????????????{\r\n????????????????this._content?=?content;\r\n????????????????this._FromUserName?=?FromUserName;\r\n????????????}\r\n????????#endregion\r\n?????????\r\n????????public?string?createMenuDate()\r\n????????{\r\n????????????string?postData?=?\"{\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"\\\"button\\\":[?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"{?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"\\\"name\\\":\\\"產品\\\",\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"\\\"sub_button\\\":[\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"{?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"type\\\":\\\"click\\\",\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"name\\\":\\\"無糖系列\(zhòng)\\",?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"key\\\":\\\"gtt_menu_001001\\\"\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"},\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"{?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"type\\\":\\\"click\\\",\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"name\\\":\\\"干果系列\(zhòng)\\",?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"key\\\":\\\"gtt_menu_001002\\\"\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"},\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"{?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"type\\\":\\\"click\\\",\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"name\\\":\\\"休閑系列\(zhòng)\\",?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"key\\\":\\\"gtt_menu_001003\\\"\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"},\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"{?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"type\\\":\\\"click\\\",\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"name\\\":\\\"兒童系列\(zhòng)\\",?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"key\\\":\\\"gtt_menu_001004\\\"\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"?}]\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"},\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"{\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"\\\"name\\\":\\\"活動\\\",?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"\\\"sub_button\\\":[\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"{?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"type\\\":\\\"click\\\",\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"name\\\":\\\"抽獎\\\",?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"key\\\":\\\"gtt_menu_002001\\\"\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"},\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"{?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"type\\\":\\\"view\\\",\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"name\\\":\\\"獲獎名單\\\",?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"url\\\":\\\"http:\/\/www.aaa.com\/apps\/honor_list.aspx\\\"\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"},\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"{?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"type\\\":\\\"click\\\",\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"name\\\":\\\"優(yōu)惠券\\\",?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"key\\\":\\\"gtt_menu_002003\\\"\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"?}]\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"},\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"{\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"\\\"name\\\":\\\"幫助\\\",\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"\\\"sub_button\\\":[\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"{?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"type\\\":\\\"view\\\",\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"name\\\":\\\"關于我們\\\",?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"url\\\":\\\"http:\/\/www.aaa.com\/apps\/aboutus.aspx\\\"\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"},\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"{?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"type\\\":\\\"view\\\",\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"name\\\":\\\"聯(lián)系我們\\\",?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"url\\\":\\\"http:\/\/www.aaa.com\/apps\/contactus.aspx\\\"\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"},\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"{?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"type\\\":\\\"view\\\",\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"name\\\":\\\"查詢訂單\\\",?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"url\\\":\\\"http:\/\/www.aaa.com\/apps\/orders_chaxun.aspx\\\"\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"},\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"{?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"type\\\":\\\"view\\\",\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"name\\\":\\\"留言反饋\\\",?\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"???\\\"url\\\":\\\"http:\/\/www.aaa.com\/apps\/feedback.aspx\\\"\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"?}]\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"}]\"?+?\"\\r\\n\";\r\n????????????postData?+=?\"}\"?+?\"\\r\\n\";\r\n????????????return?postData;\r\n????????}\r\n????}\r\n}<\/pre>\n
菜單中的URL地址換成自己的<\/p>\n
復制代碼<\/span> 代碼如下:<\/p>\nusing?System;\r\nusing?System.Web.Security;\r\nusing?System.Xml;\r\nusing?aaa_weixin.database;\r\nusing?Newtonsoft.Json;\r\nnamespace?aaa_weixin\r\n{\r\n????public?class?weixin\r\n????{\r\n????????private?string?Token?=?\"\";?\/\/微信里面開發(fā)者模式Token\r\n????????private?string?devlopID?=?\"\";\/\/微信里面開發(fā)者模式:開發(fā)者ID\r\n????????private?string?devlogPsw?=?\"\";\/\/微信里面開發(fā)者模式:?開發(fā)者密碼\r\n????????public?string?AccessToken?=?\"\";?\/\/獲取的通行證\r\n????????public?void?Auth()\r\n????????{\r\n????????????string?echoStr?=?System.Web.HttpContext.Current.Request.QueryString[\"echoStr\"];\r\n????????????if?(CheckSignature())\r\n????????????{\r\n????????????????if?(!string.IsNullOrEmpty(echoStr))\r\n????????????????{\r\n????????????????????System.Web.HttpContext.Current.Response.Write(echoStr);\r\n????????????????????System.Web.HttpContext.Current.Response.End();\r\n????????????????}\r\n????????????}\r\n????????}\r\n????????public?string?GetAccessToken()?\/\/獲取通行證\r\n????????{????????????\r\n????????????string?url_token?=?\"https:\/\/api.weixin.qq.com\/cgi-bin\/token?grant_type=client_credential&appid=\"?+?devlopID?+?\"&secret=\"?+?devlogPsw;\r\n????????????string?result?=?func.webRequestGet(url_token);\r\n????????????accessToken?deserializedProduct?=?(accessToken)JsonConvert.DeserializeObject(result,?typeof(accessToken));\r\n????????????this.AccessToken??=?deserializedProduct.access_Token;\r\n????????????return?this.AccessToken;\r\n????????}\r\n????????public?string?GetMenu()?\/\/獲取當前菜單情況\r\n????????{\r\n????????????string?url_Menu_Get?=?\"https:\/\/api.weixin.qq.com\/cgi-bin\/menu\/get?access_token=\"?+?this.AccessToken;\r\n????????????string?output?=?func.webRequestGet(url_Menu_Get);\r\n????????????\/\/wxErr?deserializedProduct?=?(wxErr)JsonConvert.DeserializeObject(output,?typeof(wxErr));\r\n????????????\/\/return?deserializedProduct.errmsg;\r\n????????????return?output;\r\n????????}\r\n????????public?string?SetMenu()?\/\/設置最新菜單\r\n????????{\r\n????????????string?url_Menu_Create?=?\"https:\/\/api.weixin.qq.com\/cgi-bin\/menu\/create?access_token=\"?+?this.GetAccessToken();\r\n????????????aaa?gtt?=?new?aaa();\r\n????????????string?postData?=?gtt.createMenuDate();\r\n????????????string?result?=?func.webRequestPost(url_Menu_Create,postData);\r\n????????????return?result;\r\n????????}\r\n????????public?string?DelMenu()?\/\/刪除菜單\r\n????????{\r\n????????????string?url_Menu_Delete?=?\"https:\/\/api.weixin.qq.com\/cgi-bin\/menu\/delete?access_token=\"?+?this.GetAccessToken();\r\n????????????string?result?=?func.webRequestGet(url_Menu_Delete);\r\n????????????return?result;\r\n????????}\r\n????????\/\/\/?\r\n????????\/\/\/?驗證微信簽名\r\n????????\/\/\/?<\/summary>\r\n????????\/\/\/?*?將token、timestamp、nonce三個參數(shù)進行字典序排序\r\n????????\/\/\/?*?將三個參數(shù)字符串拼接成一個字符串進行sha1加密\r\n????????\/\/\/?*?開發(fā)者獲得加密后的字符串可與signature對比,標識該請求來源于微信。\r\n????????\/\/\/?<\/returns>\r\n????????private?bool?CheckSignature()\r\n????????{\r\n????????????string?signature?=?System.Web.HttpContext.Current.Request.QueryString[\"signature\"];\r\n????????????string?timestamp?=?System.Web.HttpContext.Current.Request.QueryString[\"timestamp\"];\r\n????????????string?nonce?=?System.Web.HttpContext.Current.Request.QueryString[\"nonce\"];\r\n????????????string[]?ArrTmp?=?{?Token,?timestamp,?nonce?};\r\n????????????Array.Sort(ArrTmp);?????\/\/字典排序\r\n????????????string?tmpStr?=?string.Join(\"\",?ArrTmp);\r\n????????????tmpStr?=?FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr,?\"SHA1\");\r\n????????????tmpStr?=?tmpStr.ToLower();\r\n????????????if?(tmpStr?==?signature)\r\n????????????{\r\n????????????????return?true;\r\n????????????}\r\n????????????else\r\n????????????{\r\n????????????????return?false;\r\n????????????}\r\n????????}\r\n????}\r\n????public?class?wxErr\r\n????{\r\n????????private?int?Errcode;\r\n????????public?int?errcode\r\n????????{\r\n????????????get?{?return?Errcode;?}\r\n????????????set?{?Errcode?=?value;?}\r\n????????}\r\n????????private?string?Errmsg;\r\n????????public?string?errmsg\r\n????????{\r\n????????????get?{?return?Errmsg;?}\r\n????????????set?{?Errmsg?=?value;?}\r\n????????}\r\n????}\r\n????public?class?accessToken\r\n????{\r\n????????private?string?access_token;\r\n????????public?string?access_Token\r\n????????{\r\n????????????get?{?return?access_token;?}\r\n????????????set?{?access_token?=?value;?}\r\n????????}\r\n????????private?int?expires_in;\r\n????????public?int?expires_In\r\n????????{\r\n????????????get?{?return?expires_in;?}\r\n????????????set?{?expires_in?=?value;?}\r\n????????}?\r\n????}\r\n?}<\/pre>"}
使用c#開發(fā)公眾平臺自定義菜單功能實例代碼
Mar 27, 2017 pm 02:01 PM
微信公眾平臺服務號開放了自定義菜單API,本案例介紹C#開發(fā)微信公眾號自定義菜單功能。在此基礎上可以開發(fā)更完善的自定義菜單管理功能
復制代碼 代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="cm.aspx.cs" Inherits="guotaotao_weixin.cm" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
????<title>test</title>
</head>
<body>
????<form id="form1" runat="server">
????<p>
?????<asp:Literal ID="lt_msg" runat="server" ></asp:Literal>
????</p>
????</form>
</body>
</html>
復制代碼 代碼如下:
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?{
????????///?<summary>
????????///?form1?控件。
????????///?</summary>
????????///?<remarks>
????????///?自動生成的字段。
????????///?若要進行修改,請將字段聲明從設計器文件移到代碼隱藏文件。
????????///?</remarks>
????????protected?global::System.Web.UI.HtmlControls.HtmlForm?form1;
????????///?<summary>
????????///?lt_msg?控件。
????????///?</summary>
????????///?<remarks>
????????///?自動生成的字段。
????????///?若要進行修改,請將字段聲明從設計器文件移到代碼隱藏文件。
????????///?</remarks>
????????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?"構造函數(shù)"
????????????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?=?"{"?+?"\r\n";
????????????postData?+=?"\"button\":[?"?+?"\r\n";
????????????postData?+=?"{?"?+?"\r\n";
????????????postData?+=?"\"name\":\"產品\","?+?"\r\n";
????????????postData?+=?"\"sub_button\":["?+?"\r\n";
????????????postData?+=?"{?"?+?"\r\n";
????????????postData?+=?"???\"type\":\"click\","?+?"\r\n";
????????????postData?+=?"???\"name\":\"無糖系列\(zhòng)",?"?+?"\r\n";
????????????postData?+=?"???\"key\":\"gtt_menu_001001\""?+?"\r\n";
????????????postData?+=?"},"?+?"\r\n";
????????????postData?+=?"{?"?+?"\r\n";
????????????postData?+=?"???\"type\":\"click\","?+?"\r\n";
????????????postData?+=?"???\"name\":\"干果系列\(zhòng)",?"?+?"\r\n";
????????????postData?+=?"???\"key\":\"gtt_menu_001002\""?+?"\r\n";
????????????postData?+=?"},"?+?"\r\n";
????????????postData?+=?"{?"?+?"\r\n";
????????????postData?+=?"???\"type\":\"click\","?+?"\r\n";
????????????postData?+=?"???\"name\":\"休閑系列\(zhòng)",?"?+?"\r\n";
????????????postData?+=?"???\"key\":\"gtt_menu_001003\""?+?"\r\n";
????????????postData?+=?"},"?+?"\r\n";
????????????postData?+=?"{?"?+?"\r\n";
????????????postData?+=?"???\"type\":\"click\","?+?"\r\n";
????????????postData?+=?"???\"name\":\"兒童系列\(zhòng)",?"?+?"\r\n";
????????????postData?+=?"???\"key\":\"gtt_menu_001004\""?+?"\r\n";
????????????postData?+=?"?}]"?+?"\r\n";
????????????postData?+=?"},"?+?"\r\n";
????????????postData?+=?"{"?+?"\r\n";
????????????postData?+=?"\"name\":\"活動\",?"?+?"\r\n";
????????????postData?+=?"\"sub_button\":["?+?"\r\n";
????????????postData?+=?"{?"?+?"\r\n";
????????????postData?+=?"???\"type\":\"click\","?+?"\r\n";
????????????postData?+=?"???\"name\":\"抽獎\",?"?+?"\r\n";
????????????postData?+=?"???\"key\":\"gtt_menu_002001\""?+?"\r\n";
????????????postData?+=?"},"?+?"\r\n";
????????????postData?+=?"{?"?+?"\r\n";
????????????postData?+=?"???\"type\":\"view\","?+?"\r\n";
????????????postData?+=?"???\"name\":\"獲獎名單\",?"?+?"\r\n";
????????????postData?+=?"???\"url\":\"http://www.aaa.com/apps/honor_list.aspx\""?+?"\r\n";
????????????postData?+=?"},"?+?"\r\n";
????????????postData?+=?"{?"?+?"\r\n";
????????????postData?+=?"???\"type\":\"click\","?+?"\r\n";
????????????postData?+=?"???\"name\":\"優(yōu)惠券\",?"?+?"\r\n";
????????????postData?+=?"???\"key\":\"gtt_menu_002003\""?+?"\r\n";
????????????postData?+=?"?}]"?+?"\r\n";
????????????postData?+=?"},"?+?"\r\n";
????????????postData?+=?"{"?+?"\r\n";
????????????postData?+=?"\"name\":\"幫助\","?+?"\r\n";
????????????postData?+=?"\"sub_button\":["?+?"\r\n";
????????????postData?+=?"{?"?+?"\r\n";
????????????postData?+=?"???\"type\":\"view\","?+?"\r\n";
????????????postData?+=?"???\"name\":\"關于我們\",?"?+?"\r\n";
????????????postData?+=?"???\"url\":\"http://www.aaa.com/apps/aboutus.aspx\""?+?"\r\n";
????????????postData?+=?"},"?+?"\r\n";
????????????postData?+=?"{?"?+?"\r\n";
????????????postData?+=?"???\"type\":\"view\","?+?"\r\n";
????????????postData?+=?"???\"name\":\"聯(lián)系我們\",?"?+?"\r\n";
????????????postData?+=?"???\"url\":\"http://www.aaa.com/apps/contactus.aspx\""?+?"\r\n";
????????????postData?+=?"},"?+?"\r\n";
????????????postData?+=?"{?"?+?"\r\n";
????????????postData?+=?"???\"type\":\"view\","?+?"\r\n";
????????????postData?+=?"???\"name\":\"查詢訂單\",?"?+?"\r\n";
????????????postData?+=?"???\"url\":\"http://www.aaa.com/apps/orders_chaxun.aspx\""?+?"\r\n";
????????????postData?+=?"},"?+?"\r\n";
????????????postData?+=?"{?"?+?"\r\n";
????????????postData?+=?"???\"type\":\"view\","?+?"\r\n";
????????????postData?+=?"???\"name\":\"留言反饋\",?"?+?"\r\n";
????????????postData?+=?"???\"url\":\"http://www.aaa.com/apps/feedback.aspx\""?+?"\r\n";
????????????postData?+=?"?}]"?+?"\r\n";
????????????postData?+=?"}]"?+?"\r\n";
????????????postData?+=?"}"?+?"\r\n";
????????????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?=?"";?//微信里面開發(fā)者模式Token
????????private?string?devlopID?=?"";//微信里面開發(fā)者模式:開發(fā)者ID
????????private?string?devlogPsw?=?"";//微信里面開發(fā)者模式:?開發(fā)者密碼
????????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;
????????}
????????///?<summary>
????????///?驗證微信簽名
????????///?</summary>
????????///?*?將token、timestamp、nonce三個參數(shù)進行字典序排序
????????///?*?將三個參數(shù)字符串拼接成一個字符串進行sha1加密
????????///?*?開發(fā)者獲得加密后的字符串可與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;
????????????}
????????}
????}
????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;?}
????????}?
????}
?}
Atas ialah kandungan terperinci 使用c#開發(fā)公眾平臺自定義菜單功能實例代碼. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn