微信程序開發(fā)系列教程(一)開發(fā)環(huán)境搭建

1. 您得從微信官方平臺注冊一個微信訂閱號:

為大城等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及大城網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計制作、成都做網(wǎng)站、大城網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

https://mp.weixin.qq.com

2. 這個教程使用nodejs開發(fā)微信訂閱號對應(yīng)的消息服務(wù)器,因此需要具備基本的nodejs開發(fā)技能。

微信程序開發(fā)系列教程(一)開發(fā)環(huán)境搭建

登錄微信公眾號平臺 https://mp.weixin.qq.com , 使用菜單:Development->Basic configuration:

微信程序開發(fā)系列教程(一)開發(fā)環(huán)境搭建

最重要的是在訂閱號的控制臺里指定一個消息服務(wù)器的url。如下圖所示。這個消息服務(wù)器的url從哪里來?

微信程序開發(fā)系列教程(一)開發(fā)環(huán)境搭建

我會用nodejs開發(fā)一個服務(wù)器,部署到Salesforce的云平臺Heroku上。

微信程序開發(fā)系列教程(一)開發(fā)環(huán)境搭建

當(dāng)您的微信訂閱號的粉絲通過微信App同您的訂閱號交互,比如發(fā)消息,或者使用您的微信訂閱號自定義菜單時,這些請求就會通過微信App轉(zhuǎn)發(fā)到您的nodejs消息服務(wù)器上。

但是當(dāng)您配置的消息服務(wù)器要真正起作用,還得先通過一個驗(yàn)證。驗(yàn)證流程在微信官網(wǎng)上:  https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1472017492_58YV5

微信程序開發(fā)系列教程(一)開發(fā)環(huán)境搭建

微信官網(wǎng)上提供的驗(yàn)證流程的實(shí)現(xiàn)是用Python寫的,我提供了一個nodejs版本的實(shí)現(xiàn)。

微信程序開發(fā)系列教程(一)開發(fā)環(huán)境搭建

我們在微信訂閱號的控制臺點(diǎn)了Submit按鈕之后,微信框架會發(fā)送一個HTTP請求到你的微信服務(wù)器去,請求明細(xì)如下:

https://<your server url>/?signature=096abd439b41f9610aeabe2d7534084fd8dafa20&echostr=16168327802220428137&timestamp=1512810825&nonce=384289189

您的微信服務(wù)器的職責(zé)就是:按照上面流程圖定義的規(guī)范,計算根據(jù)您微信訂閱號的token(令牌),時間戳和nonce字段,計算出一個簽名值,然后同發(fā)到消息服務(wù)器的簽名值做對比。如果對比發(fā)現(xiàn)兩者不一致,會收到錯誤消息“Token authentication failed”。

微信程序開發(fā)系列教程(一)開發(fā)環(huán)境搭建

下面是如何用nodejs開發(fā)使得消息服務(wù)器通過驗(yàn)證流程。

1. 創(chuàng)建一個新的nodejs工程,下列package.json文件里高亮部分是用于消息服務(wù)器通信的重要部分。

主要的邏輯位于server.js里。

微信程序開發(fā)系列教程(一)開發(fā)環(huán)境搭建

2. Server.js的主要代碼:

var express = require('express');var routesEngine = require('./index.js');var app = express();
routesEngine(app);
app.listen(process.env.PORT || 3000, function () {console.log('Listening on port, process.cwd(): ' + process.cwd() );
});
In implementation of index.js, now we need to implement verification process:var request = require('request');var jsSHA = require('jssha');module.exports = function (app) {
app.route('/').get(function(req,res){var token="jerry"; // replace it with your own tokenvar signature = req.query.signature,
timestamp = req.query.timestamp,
echostr = req.query.echostr,
nonce = req.query.nonce;
oriArray = new Array();
oriArray[0] = nonce;
oriArray[1] = timestamp;
oriArray[2] = token;
oriArray.sort();var original = oriArray.join('');var shaObj = new jsSHA("SHA-1", 'TEXT');
shaObj.update(original);var scyptoString = shaObj.getHash('HEX');console.log("calculated string: " + scyptoString);if (signature == scyptoString) {
res.send(echostr);
} else {
res.send('bad token');
}
});
};

3. 將該nodejs應(yīng)用部署到Heroku平臺。具體操作參考Heroku的操作手冊。

部署成功后,到微信訂閱號操作臺點(diǎn)Submit按鈕提交驗(yàn)證請求,然后在Heroku應(yīng)用的控制臺上能觀察到我們自己的微信服務(wù)器計算出的signature和微信平臺發(fā)送的signature完全一致,認(rèn)證通過。

微信程序開發(fā)系列教程(一)開發(fā)環(huán)境搭建

回到訂閱號的操作臺,發(fā)現(xiàn)我們的nodejs微信服務(wù)器認(rèn)證成功,可以做開發(fā)了。

微信程序開發(fā)系列教程(一)開發(fā)環(huán)境搭建

后續(xù)Jerry會帶來更多微信訂閱號開發(fā)的內(nèi)容。

要獲取更多Jerry的原創(chuàng)技術(shù)文章,請關(guān)注公眾號"汪子熙"或者掃描下面二維碼:

微信程序開發(fā)系列教程(一)開發(fā)環(huán)境搭建

微信程序開發(fā)系列教程(一)開發(fā)環(huán)境搭建

名稱欄目:微信程序開發(fā)系列教程(一)開發(fā)環(huán)境搭建
當(dāng)前網(wǎng)址:http://muchs.cn/article28/ghgocp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、網(wǎng)站改版、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)Google、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司