使用Nodejs開發(fā)微信公眾號后臺服務(wù)實(shí)例
摘要:
微信,龐大的用戶基數(shù),極強(qiáng)的用戶粘性,在近兩年吸引了無數(shù)的開發(fā)者注意力。 Nodejs,近兩年發(fā)展非??斓拈_發(fā)工具,尤其適合構(gòu)建移動后臺。本文就以筆者自己開發(fā)的實(shí)例,來描述如何基于Nodejs開發(fā)屬于自己的微信公眾號。在這個(gè)實(shí)例中,主要使用到了express, wechat, mongodb, monk等模塊。
前期準(zhǔn)備:
1.申請微信公眾號,前往 https://mp.weixin.qq.com/ 申請,這里不做過多闡述。
2. 購買服務(wù)器, 這里推薦Amazon的EC2,首次用戶可選擇micro instance,一年免費(fèi),申請很方便,只需輸入自己的信用卡信息即可,只是整個(gè)過程是全英文,不過年免費(fèi)呦,多花點(diǎn)時(shí)間也是值得的。
安裝NodeJs開發(fā)環(huán)境:
1. yum -y install gcc
2. yum -y install gcc-c++
3. yum -y install make automake
4. wget http://nodejs.org/dist/v0.10.29/node-v0.10.29.tar.gz
5. tar -xvzf node-v0.10.29.tar.gz
6. cd 解壓目錄
7. ./configure
8. make
9. make install
安裝Mongodb:
1. wget http://downloads.10gen.com/linux/mongodb-linux-x86_64-enterprise-amzn64-2.6.3.tgz
2. tar -xvzf mongodb-linux-x86_64-enterprise-amzn64-2.6.3.tgz
3. sudo cp -R -n mongodb-linux-x86_64-enterprise-amzn64-2.6.3 /usr/local/mongodb
實(shí)例介紹:
筆者所在班級組了個(gè)足球隊(duì),大家統(tǒng)一把錢交到隊(duì)長手里,由隊(duì)長支付每次費(fèi)用,并記錄每人費(fèi)用和余額并通知大家。由于不是每次所有人都能來,而費(fèi)用只能由參加活動的人以AA方式平攤,記錄起來比較麻煩。于是筆者就做了個(gè)微信公眾號,每次只需要輸入活動消費(fèi)金額和選擇參與人數(shù),即可自動生成每人花費(fèi)和余額,此后把明細(xì)發(fā)到微信群里,每個(gè)人就可以看見了。
在這個(gè)實(shí)例中,筆者實(shí)際上搭建了一個(gè)微網(wǎng)站,通過Web頁面來記錄或顯示活動花費(fèi)和余額。微信公眾號就相當(dāng)于在用戶微信和微網(wǎng)站之間搭起了一個(gè)橋梁,當(dāng)微信用戶關(guān)注筆者的公眾賬號時(shí),通過微信公眾平臺開發(fā)者模式,即可自動給微信用戶回復(fù)使用幫助。在幫助里,包含了操作相應(yīng)的web link,只需要點(diǎn)擊即可進(jìn)入相應(yīng)頁面。
構(gòu)建微信公眾號后臺服務(wù):
萬事具備,只欠開發(fā)了:)
開始之前,先簡要介紹下express和wechat 兩個(gè)模塊:
express - 優(yōu)秀的Web開發(fā)框架, 使用express,可以非常快速的搭建自己的網(wǎng)站。由于微信服務(wù)器會通過HTTP Post請求來和開發(fā)者服務(wù)器交互,所以需要使用express框架。
下面是有新用戶關(guān)注時(shí)的log, 103.7.30.84為微信服務(wù)器的IP地址。
103.7.30.84 POST /wechat?signature=8a8e408fdae6bbdd6e470af98865a5f993cea283×tamp=1408610461&nonce=1572142586 2 200
wechat - 封裝了和微信服務(wù)器交互的細(xì)節(jié),使開發(fā)者只需關(guān)注自己的業(yè)務(wù)即可。
首先,我們要安裝express 并使用express 來創(chuàng)建工程:
2. express -e your_project 參數(shù) -e 表明使用ejs 引擎,無參數(shù)默認(rèn)使用jade 引擎。
3. cd your_project && npm install
安裝后的目錄結(jié)構(gòu)如下:
[ec2-user@ip-172-31-2-188 your_project]$ ls
app.js bin node_modules package.json public routes views
接下來安裝wechat:
1. npm install wechat
微信開發(fā)者模式配置:
配置URL和token,示例如下:
微信服務(wù)器接入認(rèn)證和自動回復(fù):
修改app.js,相應(yīng)代碼如下:
app.use('/users', users);
app.use('/weixin', weixin);
app.use(express.query()); // Or app.use(express.query());
app.use('/wechat', wechat('hchismylove', function (req, res, next) {
// 微信輸入信息都在req.weixin上
var message = req.weixin;
console.log(message);
if((message.MsgType == 'event') && (message.Event == 'subscribe'))
{
var refillStr = "<a href=\"http://your_IP/weixin/refill?weixinId=" + message.FromUserName + "\">1. 點(diǎn)擊記錄團(tuán)隊(duì)充值</a>"
var consumeStr = "<a href=\"http://your_IP/weixin/consume?weixinId=" + message.FromUserName + "\">2. 點(diǎn)擊記錄團(tuán)隊(duì)消費(fèi)</a>"
var deleteStr = "<a href=\"http://your_IP/weixin/delete?weixinId=" + message.FromUserName + "\">3. 點(diǎn)擊回退記錄</a>"
var historyStr = "<a href=\"http://your_IP/weixin/history?weixinId=" + message.FromUserName + "\">4. 點(diǎn)擊查詢歷史記錄</a>"
var emptyStr = " ";
var replyStr = "感謝你的關(guān)注!" + "\n"+ emptyStr + "\n" + refillStr + "\n"+ emptyStr + "\n" + consumeStr
+ "\n"+ emptyStr + "\n" + deleteStr + "\n"+ emptyStr + "\n" + historyStr;
res.reply(replyStr);
}
}));
通過下面這行代碼即可實(shí)現(xiàn)微信服務(wù)器接入認(rèn)證:
如下代碼實(shí)現(xiàn)了當(dāng)新用戶關(guān)注時(shí),自動發(fā)送使用幫助:
if((message.MsgType == 'event') && (message.Event == 'subscribe'))
{
....
res.reply(replyStr);
}
微信截圖如下:
- NodeJS實(shí)現(xiàn)微信公眾號關(guān)注后自動回復(fù)功能
- 詳解nodejs微信公眾號開發(fā)——6.自定義菜單
- 詳解nodejs微信公眾號開發(fā)——5.素材管理接口
- 詳解nodejs微信公眾號開發(fā)——4.自動回復(fù)各種消息
- 詳解nodejs微信公眾號開發(fā)——3.封裝消息響應(yīng)模塊
- 詳解nodejs微信公眾號開發(fā)——2.自動回復(fù)
- 詳解nodejs微信公眾號開發(fā)——1.接入微信公眾號
- nodejs微信公眾號支付開發(fā)
- 使用NodeJs 開發(fā)微信公眾號(三)微信事件交互實(shí)例
- 詳解NodeJs開發(fā)微信公眾號
相關(guān)文章
Highcharts+NodeJS搭建數(shù)據(jù)可視化平臺示例
本篇文章主要介紹了Highcharts+NodeJS搭建數(shù)據(jù)可視化平臺,詳細(xì)的介紹了使用Highcharts框架的經(jīng)驗(yàn),有興趣的可以了解一下。2017-01-01node.js報(bào)錯:npm?ERR?code?EPERM的解決過程
在學(xué)習(xí)vue+typescript的時(shí)候突然發(fā)現(xiàn)了個(gè)錯誤,所以下面這篇文章主要給大家介紹了關(guān)于node.js報(bào)錯:npm?ERR?code?EPERM的詳細(xì)解決過程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08詳解用Node.js實(shí)現(xiàn)Restful風(fēng)格webservice
本篇文章主要介紹了詳解用Node.js實(shí)現(xiàn)Restful風(fēng)格webservice,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09nodejs mysql 實(shí)現(xiàn)分頁的方法
本篇文章主要介紹了nodejs mysql 實(shí)現(xiàn)分頁的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06Node.js與MySQL交互操作及其注意事項(xiàng)
這篇文章給大家主要介紹了Node.js與MySQL交互操作及其注意事項(xiàng),非常的詳細(xì),有相同需求的小伙伴可以參考下2016-10-10