【Node.js+Express微信公衆號開發】第一步:服務搭建及微信接入

1、前言

此前微信開發,都比較依賴後端。然而有時候後端小夥伴特別忙,最近又學習了一下node的基礎知識,索性就想着本身用node整一遍。

本教程環境爲linux系統centOs7系統vue

2、準備工做

1. 服務器

服務器我使用的是搬瓦工的,目前19.9美圓那款,網上有優惠券,對比下來也不貴,國外的也免備案,有興趣能夠去購買。
系統爲centOs7。node

2. 公衆號

https://mp.weixin.qq.comlinux

3、搭建服務

使用Xshell連接服務器。git

1. 安裝node

$ sudo yum -y install nodejsshell

2. 安裝express腳手架

$ npm install express-generator -gexpress

3. 建立項目

3.1 腳手架快速搭建

//建立源碼目錄,此處個人路徑爲/home/nodeApp,您能夠根據本身須要放置源碼
$ cd /home
$ mkdir dir nodeApp
// 進入目錄
$ cd nodeApp
//建立項目
$ express wxApp
$ cd wxApp
// 安裝項目所需依賴包
$ npm install

此時腳手架建立項目成功,可是應用默認的爲3000端口,而微信配置服務器地址時,只容許80和443端口,故這邊將咱們項目改成80端口:npm

3.2 修改項目服務端口

clipboard.png
修改的方法有兩種,上面截圖是在本身電腦本地修改後把文件放到服務器(如ftp),下面介紹服務器vi命令修改:json

$ cd bin 
$ vi www
而後保存

3.3 安裝nodemon(可跳過)

因習慣了vue熱加載,node服務更改的話都要重啓服務才能生效,這個nodemon插件就是至關於熱加載,自動重啓服務。後端

// 全局安裝nodemon插件
$ npm install -g nodemon
// 進入項目下的bin目錄
$ cd bin
// 建立並編寫 nodemon.json 配置文件
$ vi nodemon.json

下面是nodemon.json 配置文件內容:瀏覽器

{
    "restartable": "rs",
    "ignore": [
        ".git",
        ".svn",
        "node_modules/**/node_modules"
    ],
    "verbose": true,
    "execMap": {
        "js": "node --harmony"
    },
    "watch": [],
    "env": {
        "NODE_ENV": "development"
    },
    "ext": "js json"
}

保存完成。(一樣的,你也能夠本地編輯好再放到服務器)

3.4 運行項目

// 回到項目根目錄 /home/nodeApp/wxApp
$ cd ..
// 運行項目
$ nodemon npm start

clipboard.png

若是如圖同樣,就證實服務已經開啓了。
(注:若是遇到端口80衝突,請先關閉你服務器其餘80端口占用的服務,再進行啓動項目。)

在瀏覽器輸入你服務器的ip。若是看到下圖所示,證實你的項目已經搭建成功!!!

clipboard.png

4、微信配置

登陸微信公衆平臺,
找到基本配置---服務器配置:

clipboard.png

如上所示,配置填寫,此時提交,微信確定是會報錯的,由於咱們自定義的token沒有在服務器進行設置。

設置服務器token

// 安裝crypto
$ npm install crypto

將index.js的內容替換成下面內容
clipboard.png

var express = require('express');
var crypto = require('crypto');
var router = express.Router();
  
var token = "WeiChartToken"; //此處是咱們自定義的token,需與準備填寫到微信配置上的一致!
  
/* GET home page. */
router.get('/', function(req, res, next) {
  
    var signature = req.query.signature;
    var timestamp = req.query.timestamp;
    var nonce = req.query.nonce;
    var echostr = req.query.echostr;
  
    /*  加密/校驗流程以下: */
    //1. 將token、timestamp、nonce三個參數進行字典序排序
    var array = new Array(token,timestamp,nonce);
    array.sort();
    var str = array.toString().replace(/,/g,"");
  
    //2. 將三個參數字符串拼接成一個字符串進行sha1加密
    var sha1Code = crypto.createHash("sha1");
    var code = sha1Code.update(str,'utf-8').digest("hex");
  
    //3. 開發者得到加密後的字符串可與signature對比,標識該請求來源於微信
    if(code===signature){
        res.send(echostr)
    }else{
        res.send("error");
    }
});
module.exports = router;

配置完成,而後到公衆號再次按圖示配置確認便可。

相關文章
相關標籤/搜索