TNW-開(kāi)啟公眾號(hào)開(kāi)發(fā)者模式
簡(jiǎn)介
TNW: TypeScript(The) + Node.js(Next) + WeChat 微信公眾號(hào)開(kāi)發(fā)腳手架袄膏,支持 http 模塊擴(kuò)展、支持任何 Node.js 的服務(wù)端框架(Express掺冠、NestJS 等)
安裝
NPM 依賴方式
1沉馆、下載
$ npm i tnw
2、Express 示例
3赫舒、Nest 示例
源碼方式
1悍及、下載項(xiàng)目并安裝依賴
$ git clone https://github.com/Javen205/TNW.git
或者
$ git clone https://gitee.com/Javen205/TNW.git
$ cd TNW
$ npm install
2、編譯并運(yùn)行
$ npm run build
$ npm run dev
3接癌、完整示例
配置公眾號(hào)參考
// 亦可以讀取配置文件
let apiConfig = new ApiConfig("Javen", "wx614c453e0d1dcd12", "19a02e4927d346484fc70327970457f9");
// 支持多公眾號(hào)
ApiConfigKit.putApiConfig(apiConfig);
// 開(kāi)啟開(kāi)發(fā)模式,方便調(diào)試
ApiConfigKit.devMode = true;
特別說(shuō)明
支持多公眾號(hào)配置心赶,如需要可以多實(shí)例化
ApiConfig
然后調(diào)用ApiConfigKit.putApiConfig(apiConfig)
進(jìn)行設(shè)置。-
ApiConfig
參數(shù)說(shuō)明第一個(gè)參數(shù):令牌 Token 可以任意填寫(xiě)
第二個(gè)參數(shù):開(kāi)發(fā)者ID appId
第三個(gè)參數(shù):開(kāi)發(fā)者密碼 appScrect
第四個(gè)參數(shù):是否開(kāi)啟加密 encryptMessage 默認(rèn)值為 false
第五個(gè)參數(shù):消息加解密密鑰 encodingAesKey 非必須
設(shè)置多個(gè)公眾號(hào)配置時(shí)默認(rèn)使用第一個(gè)
ApiConfig
切換公眾號(hào)配置可以調(diào)用
ApiConfigKit.setCurrentAppId(appId)
公眾號(hào)開(kāi)啟開(kāi)發(fā)者模式
TNW 中驗(yàn)證簽名的關(guān)鍵接口如下:
WeChat.checkSignature(signature, timestamp,nonce, echostr)
Express 示例如下:
app.get('/msg', (req: any, res: any) => {
console.log('get query...', req.query);
let appId: string = req.query.appId;
if (appId) {
ApiConfigKit.setCurrentAppId(appId);
}
let signature = req.query.signature,//微信加密簽名
timestamp = req.query.timestamp,//時(shí)間戳
nonce = req.query.nonce,//隨機(jī)數(shù)
echostr = req.query.echostr;//隨機(jī)字符串
res.send(WeChat.checkSignature(signature, timestamp,
nonce, echostr));
});
Nest 示例如下:
@Get('/msg')
getMsg(@Req() request: Request, @Res() response: Response) {
let appId: string = request.query.appId;
if (appId) {
ApiConfigKit.setCurrentAppId(appId);
}
let signature = request.query.signature,//微信加密簽名
timestamp = request.query.timestamp,//時(shí)間戳
nonce = request.query.nonce,//隨機(jī)數(shù)
echostr = request.query.echostr;//隨機(jī)字符串
response.send(WeChat.checkSignature(signature, timestamp,nonce, echostr));
}
特別說(shuō)明:
- 開(kāi)發(fā)者URL為:
http/https://域名/msg
或者http/https://域名/msg?appId=xxxxx
- 測(cè)試號(hào)的加密模式必須設(shè)置為
false
(上文提到的ApiConfig
第四個(gè)參數(shù)) - 正式號(hào)推薦開(kāi)啟加密模式并設(shè)置為
安全模式
本地端口映射工具
推薦使用 FRP 目前Github Start 已超越 2.2w缺猛。如有更好的工具歡迎推薦(留言區(qū)見(jiàn))
開(kāi)源推薦
-
TNW
微信公眾號(hào)開(kāi)發(fā)腳手架:https://gitee.com/javen205/TNW -
IJPay
讓支付觸手可及:https://gitee.com/javen205/IJPay - SpringBoot 微服務(wù)高效開(kāi)發(fā)
mica
工具集:https://gitee.com/596392912/mica -
Avue
一款基于 vue 可配置化的神奇框架:https://gitee.com/smallweigit/avue -
pig
宇宙最強(qiáng)微服務(wù)(架構(gòu)師必備):https://gitee.com/log4j/pig -
SpringBlade
完整的線上解決方案(企業(yè)開(kāi)發(fā)必備):https://gitee.com/smallc/SpringBlade