Do something in wechat with nodejs
思路: 首先的话我们用这里用到koa和sha1用npm安装一下,切淘宝源会快点,然后我们知道微信的验证机制是 timestamp、nonce、以及自己创建的token, 进行字典排序然后sha1加密,出来的结果与signature进行对比,如果对的话,那么返回echostr,如果错误,在调试时候尽可能多的打点信息以便分析整个过程。
关于封装一个简单的中间件: 把代码写在app.js里面显然是不明智,通过分析,我们可以构造中间件,把需要暴露的接口暴露出去,这里关于token验证可以 封装在一个middleware里面,通过module.exports暴露出去好多了,这里关于把本地映射到公网localtunnel了解下,用npm安装下就好!
关于access_token: 这个就是票据啊,你只要知道两小时自动失效,所有针对这个问题要写个函数控制它两小时自动获取保证你得到的是有用的,这里nodeJS还是 有些坑的可以参考这个地址把这个问题解决用node做微信开发后台,获取access_token报错,还有就是 你要知道这个access_token是有次数限制的,所有要慎用啊,避免不必要的麻烦,兄弟!
关于微信客户端请求数据的监听: 看了下Node.JS真心不错,以前在用php写的时候发现就是很尬啦,输出信息很难看到,通过去方倍工作室的接口查看,或者ngrok映射监听,但是 node.js 6啊,console.log()一下控制台可见,测试了下在微信发的都能在控制台看到,以后有需要还可以写进日志。基于上面已经获取了access_token的值,然后么就可以做些开心 的事情喽,一分为二,一种GET请求,一种POST请求,GET请求返回echostr,POST请求根据业务逻辑判断,有个问题就是在刚开启服务的时候,access_token的值是undefined,这里进一步把 Wechat这个构造函数封装在wechat文件下,然后这里用到了raw-body模块来处理蛋疼的xml包请求数据,以及xml2js来解析收到的xml包返回的是一个标准的json格式的数据。返回的json是kv模式的 然后呢,这个value是数组,它里面是否有嵌套对象我们不得而知,所有要进行处理,总的来说 还是要注意大小写,还有在你代码逻辑正确的情况下,发现消息有问题,很可能是xml包这个坑,默认从微信粘贴 的回复文档可能因为有空格等原因,一直得不到返回的数据。