'use strict'var sha1 = require('sha1')var getRawBody = require('raw-body')var Wechat = require('./wechat')var util = require('./util')module.exports = function(opts,handler){ var wechat = new Wechat(opts) return function *(next){ var that = this var token = opts.token var signature = this.query.signature var nonce = this.query.nonce var timestamp = this.query.timestamp var echostr = this.query.echostr var str = [token,timestamp,nonce].sort().join('') var sha = sha1(str)//把str用sha1加密 if (this.method === 'GET') {//判断是否是GET提交 if (sha === signature) {//判断加密之后的数据是否与微信返回的一样 this.body = echostr + '' } else { this.body = 'wrong' } } else if (this.method === 'POST') {//判断是否是POST提交 if (sha !== signature) {//处理错误 this.body = 'wrong' return false } var data = yield getRawBody(this.req,{//通过getRawBody拿到POST过来异步请求的原始XML数据 length: this.length, limit: '1mb', encoding: this.charset }) var content = yield util.paresXMLAsync(data)//解析data //console.log(content) var message = util.formatMessage(content.xml)//解析content xml格式数据 // console.log(message) this.weixin = message yield handler.call(this, next) wechat.reply.call(this) } }}
添加回答
举报
0/150
提交
取消