'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)
}
}
}
慕九州8384204
不偏不易
相关分类