前言
搭建環境:
Ubuntu 18.04 64位 系統
準備工作
1.安裝nodejs及其包管理工具
$ sudo apt-get install nodejs
$ sudo apt-get install npm
2.在本地使用nodejs的koa框架編寫微信接口
在自己的項目目錄下安裝nodejs的koa和sha包
/Project$ sudo npm install koa sha1
在自己的項目目錄下建立文件app.js(微信的入口文件)以及wechat目錄下的g.jsapp.js代碼如下
var Koa = require('koa')
var wechat = require('./wechat/g')
var config = {
wechat: {
appID: '',
appSecret: '',
token:''
}
}
var app = new Koa()
app.use(wechat(config.wechat))
app.listen(3001)//此地可以設置爲其他端口,只要沒有其他進程佔用
g.js
var sha1 = require('sha1')
module.exports = function (opts) {
return function *(next) {
console.log(this.query)
var token = opts.token
var signature = this.query.signature
var nonce = this.query.nonce
var timestamp = this.query.timestamp
var echostr = this.query.echostr
var str = [token, timestamp, nonce].sort().join('')
var sha = sha1(str)
if (sha === signature) {
this.body = echostr + ''
}
else {
this.body = 'wrong'
}
}
}
/Project$ $ node --harmony app.js
koa deprecated Support for generators will be removed in v3. See the documentation for examples of how to convert old middleware https://github.com/koajs/koa/blob/master/docs/migration.md app.js:16:5
測試沒問題
本地ip映射到內網
方法一
nodejs的localtunnel包
/Project$ npm install -g localtunne
/Project$ $ lt --port 3001
這樣可以把本地的端口號映射到外網上並且動態分配一個URL
your url is: https://pretty-goose-2.localtunnel.me
但是由於localtunnel是國外項目速度很慢而且很容易崩所以建議用一下的方法
Error: connection refused: localtunnel.me:40982 (check your firewall settings)
方法二zuul-ngrok反向代理
$ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
$ unzip ngrok-stable-linux-amd64.zip
$ ./ngrok http 3001
但是這樣每次都需要申請一次很不方便
方法三
在http://center.tunnelnat.com上申請一個免費的ngrok代理會獲取一個永久的域名
最後鏈接測試號
鏈接成功後在自己本機終端上會接受到你在微信測試號中發出的所有請求
這樣自己本機的Ubuntu就可以作爲微信服務器了,非常nice