亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 微信小程式 微信開發(fā) 如何使用koa2建構(gòu)微信第三方公眾平臺(tái)

如何使用koa2建構(gòu)微信第三方公眾平臺(tái)

May 29, 2018 am 11:22 AM
koa2 搭建 第三方

這次帶給大家如何使用koa2建立微信第三方公眾平臺(tái),使用koa2建構(gòu)微信第三方公眾平臺(tái)的注意事項(xiàng)有哪些,以下就是實(shí)戰(zhàn)案例,一起來看一下。

在寫之前我想先說說koa,koa相比express,在執(zhí)行流程,以及組件方面優(yōu)秀的多,koa本身沒有提供過多的擴(kuò)展組建,但是它便捷的組建擴(kuò)展,可以讓你自由的發(fā)揮,可以想寫其他語言一樣並行執(zhí)行程式碼,如果說promise解放了繁瑣的callback,那麼koa 編寫web 應(yīng)用,透過組合不同的generator,可以免除重複繁瑣的回呼函數(shù)嵌套,並大幅提升錯(cuò)誤處理的效率。 koa 不在內(nèi)核方法中綁定任何中間件,它僅僅提供了一個(gè)輕量級(jí)優(yōu)雅的函數(shù)庫(kù),使得編寫Web 應(yīng)用變得得心應(yīng)手,nodejs的天生的異步處理流程,使得它很適合微信公眾號(hào)這種頻繁的訊息互動(dòng),再加上pm2的多進(jìn)程管理,可以說已經(jīng)很大程度的滿足大號(hào)的消息轉(zhuǎn)發(fā)互動(dòng)已經(jīng)公眾號(hào)內(nèi)部紅包玩法。

在使用koa2建立微信第三方公眾平臺(tái)是,首先要解決的是如果獲取微信返回的xml流,以及如何返回對(duì)應(yīng)的XML體給微信。
由於本身koa不是一個(gè)框架,所以得益於網(wǎng)上眾多的中間件,自己搭建了一個(gè)類似於express的框架,本框架已經(jīng)開源,詳情請(qǐng)看我的git地址:https:// github.com/yxz1025/koa-lana,所有的微信接發(fā)訊息均在此框架中,請(qǐng)讀者自行下載!

好了,首先,我們看看如何獲取微信返回的xml流:

======tool.js=====
//截獲微信返回的xml流文件
const?Promise?=?require('bluebird');
//普通post流轉(zhuǎn)化為promise
var?Tool?=?{
??convertPost:?function(req)?{
????let?post_data?=?"";
????return?new?Promise(function(resolve,?reject){
??????req.on('data',?function(chunk)?{
????????post_data?+=?chunk;
??????});
??????req.on('end',?function()?{
????????resolve(post_data);
??????});
????});
??},
};
module.exports?=?Tool;
=====weichat.js======
//微信響應(yīng)主體文件
const?router?=?require('koa-router')();
const?parseMessage?=?require('../common/parseMessage');
const?config?=?require('../config');
const?WXBizMsgCrypt?=?require('wechat-crypto');
const?middleware?=?require('../model/middleware');
const?validator?=?require('validator');
const?Aes?=?require('../common/aes');
const?Tool?=?require('../common/tool');
const?cryptor?=?new?WXBizMsgCrypt(config.component_config.token,?config.component_config.key,?config.component_config.component_appid);
//第三方授權(quán)路徑?/:appid/callback??/wechat/100234/callback
router.post('/:appid/callback',?async?function(ctx,?next)?{
??let?post_data?=?"";
??let?req?=?ctx.req;
??post_data?=?await?Tool.convertPost(req);
??let?xml?=?parseMessage(post_data);
??let?signature?=?cryptor.getSignature(ctx.query.timestamp,?ctx.query.nonce,?xml.encrypt);
??if?(ctx.query.msg_signature?!=?signature)?{
????ctx.body?=?'Auth?failed!';?//?指紋碼不匹配時(shí)返回錯(cuò)誤信息,禁止后面的消息接受及發(fā)送
??}
??let?message?=?middleware.decryptXml(xml);
??let?appid?=?ctx.params.appid;
??message.appId?=?appid;
??//發(fā)送消息隊(duì)列
??switch?(message.msgType)?{
????case?'text':
??????//測(cè)試
??????if?(message.toUserName?==?"gh_3c884a361561")?{
????????if?(message.content?==?"TESTCOMPONENT_MSG_TYPE_TEXT")?{
??????????let?text?=?middleware.text(message,?message.content?+?"_callback");
??????????let?reply?=?middleware.encryptXml(text);
??????????return?ctx.body?=?reply;
????????}
????????let?content?=?message.content;
????????if?(content.indexOf("QUERY_AUTH_CODE")?!=?-1)?{
??????????ctx.body?=?"";
??????????let?code_li?=?content.split(":");
??????????await?middleware.customSend(message.fromUserName,?code_li[1]);
??????????return;
????????}
??????}
??????let?keywords?=?validator.trim(message.content).toLowerCase();
??????let?member_config?=?await?middleware.getMemberConfig(message.toUserName,?keywords);
??????if?(!member_config)?{
????????await?middleware.sendMnsQuene(message);
????????return?ctx.body?=?"success";
??????}else{
?????????//匹配成功
????????message.packetsId?=?parseInt(member_config.hongbaoId);
????????message.keywords?=?keywords;
????????await?middleware.sendMnsQuene(message);
????????let?data?=?{
??????????title:?member_config.news_title?||?'點(diǎn)我領(lǐng)紅包',
??????????description:?member_config.description?||?'第一輪紅包雨開始了,手快有,手慢無!',
??????????picurl:?member_config.picurl?||?'http://7xqomp.com2.z0.glb.qiniucdn.com/17269743.png'
????????};
????????let?key?=?{
??????????fromUserName:?message.fromUserName,
??????????toUserName:?message.toUserName,
??????????keywords:?keywords,
??????????appId:?appid
????????};
????????key?=?JSON.stringify(key);
????????key?=?Aes.encypt(key);
????????key?=?Aes.base64_encode(key);
????????//獲取授權(quán)域名
????????let?auth_url?=?await?middleware.packetDomain();
????????data.url?=?"http://"?+?appid?+?"."?+?auth_url?+?"/redPackets/koulin?key="?+?key;
????????let?news?=?middleware.news(message,?[data]);
????????let?reply?=?middleware.encryptXml(news);
????????ctx.body?=?reply;?
????????return;???????
??????}
??????break;
????case?'event':
??????await?middleware.sendMnsQuene(message);
??????//測(cè)試專用
??????if?(message.toUserName?==?"gh_3c884a361561")?{
????????let?text?=?middleware.text(message,?message.event?+?"from_callback");
????????let?reply?=?middleware.encryptXml(text);
????????ctx.body?=?reply;
????????return;
??????}
??????break;
????default:
??????await?middleware.sendMnsQuene(message);
??????ctx.body?=?"success";
??????return;
??};
});
module.exports?=?router;

相信看了本文案例你已經(jīng)掌握了方法,更多精彩請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

推薦閱讀:

如何操作Koa2微信公眾號(hào)開發(fā)之本地開發(fā)調(diào)試環(huán)境搭建

如何操作Koa2微信公眾號(hào)實(shí)現(xiàn)訊息管理

以上是如何使用koa2建構(gòu)微信第三方公眾平臺(tái)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
Vue框架下,如何快速建構(gòu)統(tǒng)計(jì)圖表系統(tǒng) Vue框架下,如何快速建構(gòu)統(tǒng)計(jì)圖表系統(tǒng) Aug 21, 2023 pm 05:48 PM

在Vue框架下,如何快速建立統(tǒng)計(jì)圖表系統(tǒng)在現(xiàn)代網(wǎng)頁應(yīng)用中,統(tǒng)計(jì)圖表是必不可少的組成部分。 Vue.js作為一個(gè)流行的前端框架,提供了許多方便的工具和元件,能夠幫助我們快速建立統(tǒng)計(jì)圖表系統(tǒng)。本文將介紹如何利用Vue框架以及一些外掛程式來建立一個(gè)簡(jiǎn)單的統(tǒng)計(jì)圖表系統(tǒng)。首先,我們需要準(zhǔn)備一個(gè)Vue.js的開發(fā)環(huán)境,包括安裝Vue腳手架以及一些相關(guān)的插件。在命令列中執(zhí)行以下命

霧鎖王國(guó)能野地搭建築嗎 霧鎖王國(guó)能野地搭建築嗎 Mar 07, 2024 pm 08:28 PM

玩家在霧鎖王國(guó)中進(jìn)行遊戲時(shí)可以收集不同的材料用來建造建築,有很多玩家想知道野地搭建築嗎,霧鎖王國(guó)能野地是不能搭建築的,必須要在祭壇的範(fàn)圍內(nèi)才可以搭建。霧鎖王國(guó)能野地搭建築嗎答:不能。 1.霧鎖王國(guó)能野地是不能搭建築的。 2、建築必須要在祭壇的範(fàn)圍內(nèi)才可以搭建。 3、玩家可以自行放置靈火祭壇,但一旦離開了範(fàn)圍,將無法進(jìn)行建築搭建。 4.我們也可以直接在山上挖個(gè)洞當(dāng)做我們的家,這樣不用耗建築材料。 5.玩家自己搭建的建築中,有舒適度機(jī)制,也就是說,內(nèi)裝越好,舒適度越高。 6.高舒適度將為玩家?guī)韺傩约映?,例?/p>

PyCharm使用指南:一鍵匯入第三方函式庫(kù) PyCharm使用指南:一鍵匯入第三方函式庫(kù) Feb 21, 2024 am 10:33 AM

PyCharm是一款廣受開發(fā)者歡迎的整合開發(fā)環(huán)境,它提供了豐富的功能和工具,使得Python開發(fā)變得更有效率和便利。其中,一鍵導(dǎo)入第三方函式庫(kù)是PyCharm的一個(gè)非常實(shí)用的功能,可以幫助開發(fā)者快速匯入所需的外部函式庫(kù),提高開發(fā)效率。本文將為大家介紹PyCharm的一鍵導(dǎo)入第三方函式庫(kù)的使用指南,並提供具體的程式碼範(fàn)例。 1.打開PyCharm首先,打開PyCharm並進(jìn)

在PyCharm中快速安裝PyTorch:簡(jiǎn)易指南 在PyCharm中快速安裝PyTorch:簡(jiǎn)易指南 Feb 24, 2024 pm 09:54 PM

PyTorch安裝指南:在PyCharm中快速搭建開發(fā)環(huán)境PyTorch是當(dāng)前深度學(xué)習(xí)領(lǐng)域中備受歡迎的框架之一,具有易用性和靈活性的特點(diǎn),深受開發(fā)者青睞。本文將為大家介紹如何在PyCharm中快速建置PyTorch的開發(fā)環(huán)境,方便大家開始深度學(xué)習(xí)專案的開發(fā)。步驟一:安裝PyTorch首先,我們需要安裝PyTorch。 PyTorch的安裝通常需要考慮到系統(tǒng)環(huán)境

CentOS 7下搭建web伺服器的最佳實(shí)務(wù)及注意事項(xiàng) CentOS 7下搭建web伺服器的最佳實(shí)務(wù)及注意事項(xiàng) Aug 25, 2023 pm 11:33 PM

CentOS7下搭建web伺服器的最佳實(shí)務(wù)及注意事項(xiàng)引言:在當(dāng)今網(wǎng)路時(shí)代,web伺服器是建置和託管網(wǎng)站的核心元件之一。 CentOS7是一個(gè)強(qiáng)大的Linux發(fā)行版,廣泛應(yīng)用於伺服器環(huán)境。本文將探討在CentOS7上建立web伺服器的最佳實(shí)務(wù)和注意事項(xiàng),並提供一些程式碼範(fàn)例以幫助您更好地理解。一、安裝ApacheHTTP伺服器Apache是??使用最廣泛的w

抖音帳號(hào)怎麼搭建最好?帳號(hào)搭建五件套是什麼? 抖音帳號(hào)怎麼搭建最好?帳號(hào)搭建五件套是什麼? Apr 02, 2024 am 09:52 AM

隨著行動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,短視訊應(yīng)用程式抖音已成為人們?nèi)粘I钪胁豢苫蛉钡囊徊糠帧碛幸粋€(gè)高人氣的抖音帳號(hào),不僅能吸引粉絲關(guān)注,還能帶來商業(yè)價(jià)值。那麼,如何搭建一個(gè)最好的抖音帳號(hào)呢?一、抖音帳號(hào)怎麼搭建最好? 1.定位清晰在創(chuàng)造抖音帳號(hào)之初,首先要明確自己的定位。你想成為搞笑幽默的段子手,還是專業(yè)知識(shí)分享者?明確定位有助於吸引精準(zhǔn)粉絲,進(jìn)而增加帳號(hào)的價(jià)值。 2.帳號(hào)命名一個(gè)好的帳號(hào)名字能讓粉絲一眼記得你。帳號(hào)名字應(yīng)簡(jiǎn)潔明了,與自己的定位相關(guān),同時(shí)具有一定的創(chuàng)意。避免使用過於常見的名字,以免與他人混淆

了解edge瀏覽器的第三方插件安裝情況 了解edge瀏覽器的第三方插件安裝情況 Dec 23, 2023 pm 06:25 PM

edge瀏覽器上的擴(kuò)充插件數(shù)量比較少很難滿足所有使用者的日常使用,這個(gè)時(shí)候就需要安裝第三方插件了,那麼可不可以在edge瀏覽器上安裝呢?下面就一起來看看吧。 edge瀏覽器可以安裝第三方外掛程式嗎:答:可以安裝。新版edge無法透過直接拖曳來快速安裝插件,將crx擴(kuò)充檔案拖曳到開發(fā)者頁面時(shí),edge會(huì)預(yù)設(shè)為另存文件,而導(dǎo)致無法直接安裝。 1.將檔案移到edge拓展應(yīng)用程式資料夾然後重新命名為zip格式,並進(jìn)行解壓縮。 2.新版edge的擴(kuò)充功能點(diǎn)擊右上角的三個(gè)點(diǎn)就能在工作列中看到。 3.在拓展頁面開啟「開發(fā)人員模式

手把手教你在CentOS上搭建web伺服器的詳細(xì)步驟 手把手教你在CentOS上搭建web伺服器的詳細(xì)步驟 Aug 07, 2023 pm 03:25 PM

手把手教你在CentOS上搭建Web伺服器的詳細(xì)步驟簡(jiǎn)介Web伺服器是支援HTTP協(xié)議,用於提供網(wǎng)頁和Web服務(wù)的軟體。在CentOS上建置Web伺服器可以使用Apache、Nginx等常用的軟體。本文將以Apache為例,介紹在CentOS上建置Web伺服器的詳細(xì)步驟。安裝Apache首先,開啟終端,輸入以下指令安裝Apache:sudoyuminst

See all articles