這次給大家?guī)砣绾问褂胟oa2搭建微信第三方公眾平臺,使用koa2搭建微信第三方公眾平臺的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。
在寫之前我想先說說koa,koa相比express,在執(zhí)行流程,以及組件方面優(yōu)秀的多,koa本身沒有提供過多的擴展組建,但是它便捷的組建擴展,可以讓你自由的發(fā)揮,可以想寫其他語言一樣并行執(zhí)行代碼,如果說promise解放了繁瑣的callback,那么 koa 編寫 web 應用,通過組合不同的 generator,可以免除重復繁瑣的回調(diào)函數(shù)嵌套,并極大地提升錯誤處理的效率。koa 不在內(nèi)核方法中綁定任何中間件,它僅僅提供了一個輕量優(yōu)雅的函數(shù)庫,使得編寫 Web 應用變得得心應手,nodejs的天生的異步處理流程,使得它很適合微信公眾號這種頻繁的消息互動,再加上pm2的多進程管理,可以說已經(jīng)很大程度的滿足大號的消息轉發(fā)互動已經(jīng)公眾號內(nèi)部紅包玩法。
在使用koa2搭建微信第三方公眾平臺是,首先要解決的是如果獲取微信返回的xml流,以及如何返回對應的XML體給微信。
由于本身koa不是一個框架,所以得益于網(wǎng)上眾多的中間件,自己搭建了一個類似于express的框架,本框架已經(jīng)開源,詳情請看我的git地址:https://github.com/yxz1025/koa-lana,所有的微信接發(fā)消息均在此框架中,請讀者自行下載!
好了,首先,我們看看如何獲取微信返回的xml流:
======tool.js===== //截獲微信返回的xml流文件 const?Promise?=?require('bluebird'); //普通post流轉化為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====== //微信響應主體文件 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); //第三方授權路徑?/: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!';?//?指紋碼不匹配時返回錯誤信息,禁止后面的消息接受及發(fā)送 ??} ??let?message?=?middleware.decryptXml(xml); ??let?appid?=?ctx.params.appid; ??message.appId?=?appid; ??//發(fā)送消息隊列 ??switch?(message.msgType)?{ ????case?'text': ??????//測試 ??????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?||?'點我領紅包', ??????????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); ????????//獲取授權域名 ????????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); ??????//測試專用 ??????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)掌握了方法,更多精彩請關注php中文網(wǎng)其它相關文章!
推薦閱讀:
如何操作Koa2微信公眾號開發(fā)之本地開發(fā)調(diào)試環(huán)境搭建
Atas ialah kandungan terperinci 如何使用koa2搭建微信第三方公眾平臺. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara cepat membina sistem carta statistik di bawah rangka kerja Vue Dalam aplikasi web moden, carta statistik merupakan komponen penting. Sebagai rangka kerja bahagian hadapan yang popular, Vue.js menyediakan banyak alatan dan komponen yang mudah yang boleh membantu kami membina sistem carta statistik dengan cepat. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Vue dan beberapa pemalam untuk membina sistem carta statistik ringkas. Pertama, kita perlu menyediakan persekitaran pembangunan Vue.js, termasuk memasang perancah Vue dan beberapa pemalam yang berkaitan. Jalankan arahan berikut dalam baris arahan

Pemain boleh mengumpul bahan yang berbeza untuk membina bangunan apabila bermain di Mistlock Kingdom Ramai pemain ingin tahu sama ada untuk membina bangunan di alam liar Bangunan tidak boleh dibina di dalam Mistlock Kingdom. . Bolehkah bangunan dibina di alam liar di Mistlock Kingdom? 1. Bangunan tidak boleh dibina di kawasan liar Kerajaan Mist Lock. 2. Bangunan mesti dibina dalam skop altar. 3. Pemain boleh meletakkan Spirit Fire Altar dengan sendirinya, tetapi apabila mereka meninggalkan julat, mereka tidak akan dapat membina bangunan. 4. Kita juga boleh terus menggali lubang di gunung sebagai rumah kita, jadi kita tidak perlu menggunakan bahan binaan. 5. Terdapat mekanisme keselesaan dalam bangunan yang dibina oleh pemain sendiri, iaitu, lebih baik dalaman, lebih tinggi keselesaan. 6. Keselesaan yang tinggi akan membawa bonus atribut kepada pemain, seperti

PyCharm ialah persekitaran pembangunan bersepadu yang dialu-alukan secara meluas oleh pembangun Ia menyediakan pelbagai fungsi dan alatan untuk menjadikan pembangunan Python lebih cekap dan mudah. Antaranya, import satu klik perpustakaan pihak ketiga ialah fungsi PyCharm yang sangat praktikal, yang boleh membantu pembangun mengimport perpustakaan luaran yang diperlukan dengan cepat dan meningkatkan kecekapan pembangunan. Artikel ini akan memperkenalkan anda kepada panduan penggunaan import satu klik PyCharm bagi perpustakaan pihak ketiga dan memberikan contoh kod khusus. 1. Buka PyCharm Pertama, buka PyCharm dan masukkan

Panduan Pemasangan PyTorch: Sediakan persekitaran pembangunan dengan pantas dalam PyCharm PyTorch ialah salah satu rangka kerja yang paling popular dalam bidang pembelajaran mendalam semasa Ia mempunyai ciri-ciri kemudahan penggunaan dan fleksibiliti, dan digemari oleh pembangun. Artikel ini akan memperkenalkan cara cepat menyediakan persekitaran pembangunan PyTorch dalam PyCharm, supaya anda boleh memulakan pembangunan projek pembelajaran mendalam. Langkah 1: Pasang PyTorch Mula-mula, kita perlu memasang PyTorch. Pemasangan PyTorch biasanya perlu mengambil kira persekitaran sistem

Amalan terbaik dan langkah berjaga-jaga untuk membina pelayan web di bawah CentOS7 Pengenalan: Dalam era Internet hari ini, pelayan web adalah salah satu komponen teras untuk membina dan mengehos laman web. CentOS7 ialah pengedaran Linux berkuasa yang digunakan secara meluas dalam persekitaran pelayan. Artikel ini akan meneroka amalan dan pertimbangan terbaik untuk membina pelayan web pada CentOS7, dan memberikan beberapa contoh kod untuk membantu anda memahami dengan lebih baik. 1. Pasang pelayan HTTP Apache Apache adalah w yang paling banyak digunakan

Dengan perkembangan pesat Internet mudah alih, aplikasi video pendek Douyin telah menjadi bahagian yang sangat diperlukan dalam kehidupan seharian orang ramai. Mempunyai akaun Douyin yang popular bukan sahaja dapat menarik perhatian peminat, tetapi juga membawa nilai komersial. Jadi, bagaimana untuk menyediakan akaun Douyin yang terbaik? 1. Apakah cara terbaik untuk menyediakan akaun Douyin? 1. Kedudukan yang jelas Apabila membuat akaun Douyin, anda mesti terlebih dahulu menjelaskan kedudukan anda. Adakah anda ingin menjadi pelawak lucu atau pekongsi pengetahuan profesional? Kedudukan yang jelas boleh membantu menarik peminat yang tepat, dengan itu meningkatkan nilai akaun anda. 2. Penamaan akaun: Nama akaun yang baik boleh membuatkan peminat mengingati anda sepintas lalu. Nama akaun hendaklah ringkas dan jelas, berkaitan dengan kedudukan anda, dan mempunyai tahap kreativiti tertentu. Elakkan menggunakan nama yang terlalu biasa untuk mengelakkan kekeliruan dengan orang lain

Bilangan pemalam sambungan pada pelayar tepi agak kecil dan sukar untuk memenuhi penggunaan harian semua pengguna Pada masa ini, pemalam pihak ketiga perlu dipasang. Jadi bolehkah ia dipasang di tepi pelayar? Mari lihat di bawah. Bolehkah pemalam pihak ketiga dipasang pada pelayar tepi? Versi baharu edge tidak boleh memasang pemalam dengan cepat dengan menyeretnya secara terus Apabila menyeret fail sambungan crx ke halaman pembangun, edge akan lalai untuk menyimpan fail sebagai fail, menjadikannya mustahil untuk memasangnya secara terus. 1. Alihkan fail ke folder aplikasi sambungan tepi dan namakan semula kepada format zip, dan nyahzipnya. 2. Fungsi lanjutan versi baharu Edge boleh dilihat dalam bar tugas dengan mengklik tiga titik di penjuru kanan sebelah atas. 3. Buka "Mod Pembangun" pada halaman sambungan

Ajar anda langkah demi langkah langkah terperinci untuk menyediakan pelayan web pada CentOS Pengenalan Pelayan web ialah perisian yang menyokong protokol HTTP dan digunakan untuk menyediakan halaman web dan perkhidmatan web. Anda boleh menggunakan perisian biasa seperti Apache dan Nginx untuk membina pelayan web pada CentOS. Artikel ini akan menggunakan Apache sebagai contoh untuk memperkenalkan langkah terperinci membina pelayan web pada CentOS. Pasang Apache Pertama, buka terminal dan masukkan arahan berikut untuk memasang Apache: sudoyuminst
