1.介绍微信公众号的介绍省略,自行搜索。更不用说注册过程了。我们直接注册测试账号来实现代码。这将是一个完整讲解微信开发的系列教程公众号。本篇为系列第一篇,搭建本地开发环境,接入微信。开始前最好阅读开发者文档微信公众平台技术文档2.本地开发调试环境搭建2.1开发环境-MacOs-Nodev8.9.1-Koa22.2微信公众平台开发基本原理一起来看看首先在微信公众平台开发的基本原则:在开发微信的时候,我们需要在自己的服务器上部署服务来处理微信消息。微信服务器相当于一个转发服务器。终端(手机、Pad等)向微信服务器发起请求,微信服务器将请求转发给自定义服务(这里是我们的具体实现)。业务处理完成后会转发给微信服务器,微信服务器会回复给终端一个具体的响应。通讯协议为:HTTP;数据格式为:XML。我们的服务需要做的就是响应请求,解析XML,进行适当的处??理,然后返回具体的XML。2.3ngrok微信本地开发这里我们了解到,接入微信开发需要自己的响应服务器,可以购买新浪云、百度云等服务器或服务。但是在我们开发阶段这样做是很麻烦的。我们需要搭建好用的本地调试环境,映射内网,让外网可以访问。这里推荐使用Ngrok服务。win和mac都好用稳定,外网域名固定。打开其网站https://www.ngrok.cc/注册登录并开通隧道。同时需要下载相应的客户端。这是win下的批处理文件。运行它并填写相应的隧道ID并回车。在Mac的命令行中执行以下命令。./sunnyclientidtunnelid运行成功,返回ngrok重新下发域名。更多信息请参考ngrok官网教程。下面我们运行node服务,通过ngrok域名的外网访问。mkdirkoa2-wechat&&cdkoa2-wechatnpminstallkoa--save新应用。)constapp=newKoa()app.use(asyncctx=>{ctx.body='ZenofJavaScript'});app.listen(7001);我们运行app.js,运行服务,打开浏览器localhost:7001我们就能看到返回的JavaScript之禅。这里推荐使用supervisor,它会监控你对代码的改动,并自动重启Nodepminstall-gsupervisorsupervisorapp.js接下来就是使用上面提到的ngrok进行内网转发。/sunnyclientid如果tunnelid没有问题你打开你的转发域名http://.free.ngrok.cc你也会看到JavaScript之禅三、微信公众平台开发接入3.1接入流程接入微信公众平台开发,开发者需要按照以下步骤进行:1.填写服务器配置2.验证服务器地址合法性3.根据接口文档实现业务逻辑。我们登录微信公众平台接口测试账号https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,登录后填写接口配置信息(你的urladdressandtoken),此时肯定不会配置成功。我们需要验证服务器地址的有效性。开发者提交信息后,微信服务器会向填写的服务器地址URL发送GET请求。GET请求携带参数如下表:参数说明签名微信加密签名,签名结合开发者在请求中填入token参数和timestamp参数和nonce参数。timestamptimestampnoncerandomnumberechostrrandomstring开发者通过检查签名来验证请求。如果确认GET请求来自微信服务器,并且原样返回echostr参数的内容,则接入生效,成为开发者成功,否则接入失败。加密/验证过程如下:将token、timestamp、nonce三个参数按字典顺序排序,将三个参数字符串拼接成一个字符串,进行sha1加密。开发者获取到的加密字符串可以与签名进行比对来识别请求。从WeChatTalk很便宜。showmethecode3.2koa2验证服务器地址合法性modifyapp.jsconstKoa=require('koa')constapp=newKoa()//引入节点加密模块进行sha1加密constcrypto=require('crypto')constconfig={wechat:{appID:'appID',appsecret:'appsecret',token:'zenofjavascript',}}app.use(asyncctx=>{const{signature,timestamp,nonce,echostr}=ctx.查询consttoken=config.wechat.tokenlethash=crypto.createHash('sha1')constarr=[token,timestamp,nonce].sort()hash.update(arr.join(''))constshasum=hash.digest('hex')if(shasum===signature){returnctx.body=echostr}ctx.status=401ctx.body='Invalidsignature'})app.listen(7001)进入页面测试号,重新提交接口配置信息,会看到配置成功的提示框。恭喜,这标志着你正式跳入微信开发的坑里了。GitHub地址https://github.com/liuxing/ko...本文到此结束,下一节将讲解公众号的消息回复功能参考链接微信公众平台开发者文档公众号测试账号Ngrokkoasupervisor大家可以跟着我的公众号一起玩吧。有技术干货和废话。回复888有干货领取左手码和右手砖。
