.NET微信公眾號(hào)開發(fā)之創(chuàng)建自定義菜單
一.前言
開發(fā)之前,我們需要閱讀官方的接口說明文檔,不得不吐槽一下,微信的這個(gè)官方文檔真的很爛,但是,為了開發(fā)我們需要的功能,我們也不得不去看這些文檔.
接口文檔地址:http://mp.weixin.qq.com/wiki/13/43de8269be54a0a6f64413e4dfa94f39.html
看了這些個(gè)文檔,基本意思明白了,就是我們把我們要?jiǎng)?chuàng)建的菜單創(chuàng)建好,post到微信的服務(wù)器上面,微信服務(wù)器然后給我們一些狀態(tài)碼,從而判斷我們的菜單是否創(chuàng)建成功,只是在發(fā)送json數(shù)據(jù)以前我們要做一些身份驗(yàn)證。
二.準(zhǔn)備工作
首先把我們要?jiǎng)?chuàng)建的菜單寫在一個(gè)txt文本中:
{
"button":[
{
"type":"view",
"name":"付停車費(fèi)",
"url":"http://www.baidu.com"
},{
"name":"個(gè)人中心",
"sub_button":[
{
"type":"view",
"name":"個(gè)人信息",
"url":"http://www.baidu.com"
},
{
"type":"view",
"name":"訂單查詢",
"url":"http://www.baidu.com"
},
{
"type":"view",
"name":"使用幫助",
"url":"http://www.baidu.com"
},
{
"type":"view",
"name":"下載APP",
"url":"http://www.baidu.com"
}]
}]
}
三.開始編碼
首先我們創(chuàng)建一個(gè)一般處理程序createMenu.ashx.
public string access_token { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
FileStream fs1 = new FileStream(Server.MapPath(".") + "\\menu.txt", FileMode.Open);
StreamReader sr = new StreamReader(fs1, Encoding.GetEncoding("UTF-8"));
string menu = sr.ReadToEnd();
sr.Close();
fs1.Close();
var str = GetPage(" JObject jo = JObject.Parse(str);
access_token = jo["access_token"].ToString();
GetPage(" }
這里需要注意的是appid,secret這些參數(shù)需要換成我們自己的,這些參數(shù)我們可以放在配置文件中。也可以單獨(dú)的放在一個(gè)幫助類里面。
同時(shí)在創(chuàng)建菜單的時(shí)候我們需要帶上我的access_token這個(gè)令牌來驗(yàn)證我們的身份,那么我們首先要做的就是獲取我們的這個(gè)令牌,那個(gè)這個(gè)令牌要如何獲取了,我們可以通過一個(gè)接口獲取,只需要傳遞我們的appid和secret這個(gè)兩個(gè)參數(shù)
{"access_token":"jVLAT9Rp9dNgxI4pb4RWlSx_9HJLXICmk_uWDlRtAug8wcaWhZZ10eqZCYRZrEwCIJf1-vBhS9YEX00Dj7q__lJCyTIWOxTruOd25opkf-0","expires_in":7200}
上面的GetPage方法的返回值。這樣我們就可以獲取我們的令牌了。
最后一步:帶上我們的令牌,post我們的json菜單數(shù)據(jù)就可以創(chuàng)建菜單了。
當(dāng)你看到如下代碼:
{"errcode":0,"errmsg":"ok"}
說明你的菜單創(chuàng)建成功了。
四:GetPage
代碼如下:
public string GetPage(string posturl, string postData)
{
Stream outstream = null;
Stream instream = null;
StreamReader sr = null;
HttpWebResponse response = null;
HttpWebRequest request = null;
Encoding encoding = Encoding.UTF8;
byte[] data = encoding.GetBytes(postData);
// 準(zhǔn)備請(qǐng)求...
try
{
// 設(shè)置參數(shù)
request = WebRequest.Create(posturl) as HttpWebRequest;
CookieContainer cookieContainer = new CookieContainer();
request.CookieContainer = cookieContainer;
request.AllowAutoRedirect = true;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
outstream = request.GetRequestStream();
outstream.Write(data, 0, data.Length);
outstream.Close();
//發(fā)送請(qǐng)求并獲取相應(yīng)回應(yīng)數(shù)據(jù)
response = request.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程序才開始向目標(biāo)網(wǎng)頁發(fā)送Post請(qǐng)求
instream = response.GetResponseStream();
sr = new StreamReader(instream, encoding);
//返回結(jié)果網(wǎng)頁(html)代碼
string content = sr.ReadToEnd();
string err = string.Empty;
Response.Write(content);
return content;
}
catch (Exception ex)
{
string err = ex.Message;
return string.Empty;
}
}
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡
- .NET微信公眾號(hào)開發(fā)之查詢自定義菜單
- 微信公眾號(hào)支付(一)如何獲取用戶openId
- C#實(shí)現(xiàn)微信公眾號(hào)群發(fā)消息(解決一天只能發(fā)一次的限制)實(shí)例分享
- 微信支付PHP SDK之微信公眾號(hào)支付代碼詳解
- 微信公眾號(hào)開發(fā)之微信公共平臺(tái)消息回復(fù)類實(shí)例
- php實(shí)現(xiàn)微信公眾號(hào)主動(dòng)推送消息
- java微信公眾號(hào)開發(fā)(搭建本地測(cè)試環(huán)境)
- java微信公眾號(hào)開發(fā)第一步 公眾號(hào)接入和access_token管理
- C#微信公眾號(hào)開發(fā)之接收事件推送與消息排重的方法
- 微信公眾號(hào)支付之坑:調(diào)用支付jsapi缺少參數(shù) timeStamp等錯(cuò)誤解決方法
- 微信公眾號(hào)開發(fā) 自定義菜單跳轉(zhuǎn)頁面并獲取用戶信息實(shí)例詳解
相關(guān)文章
swiper動(dòng)態(tài)改變滑動(dòng)內(nèi)容的實(shí)現(xiàn)方法
假設(shè)當(dāng)前顯示的是1,往左滑動(dòng)一個(gè)遞減1,往右滑動(dòng)一個(gè)遞增1。下面通過實(shí)例代碼給大家講解swiper動(dòng)態(tài)改變滑動(dòng)內(nèi)容的實(shí)現(xiàn)方法,感興趣的朋友一起看看吧2018-01-01
json前后端數(shù)據(jù)交互相關(guān)代碼
本篇文章給大家分享了關(guān)于json前后端數(shù)據(jù)交互方法實(shí)現(xiàn)的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的讀者們可以參考學(xué)習(xí)下。2018-09-09
用javascript實(shí)現(xiàn)給出的盒子的序列是否可連為一矩型
用javascript實(shí)現(xiàn)給出的盒子的序列是否可連為一矩型...2007-08-08
使用html+js+css 實(shí)現(xiàn)頁面輪播圖效果(實(shí)例講解)
下面小編就為大家?guī)硪黄褂胔tml+js+css 實(shí)現(xiàn)頁面輪播圖效果(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09
Js實(shí)現(xiàn)動(dòng)態(tài)添加刪除Table行示例
這篇文章主要介紹了Js動(dòng)態(tài)添加刪除Table行的具體實(shí)現(xiàn),需要的朋友可以參考下2014-04-04
防止頁面url緩存中ajax中post請(qǐng)求的處理方法
這篇文章主要介紹了防止頁面url緩存中ajax中post請(qǐng)求的處理方式的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-10-10

