Closed thinkive closed 7 years ago
@thinkive 鄙人发表下自己解决方案,其实原理都差不多,看了@tvrcgo的源码也无非是在useWeixinCallback方法里做了对xml格式的处理,express能做的,koa一样也能做。
npm install --save xml2js
import Promise from 'bluebird'
import xml2js from 'xml2js'
// tool.js /**
/**
module.exports = { xmlToJson: xmlToJson, jsonToXml: jsonToXml }
3. 编写自己的回调路由
router.post('/api/pay/notify', async (ctx, next) => { // 处理商户业务逻辑,需要将ctx.req的文件流合并下,然后转成json let promise = new Promise(function (resolve, reject) { let buf = '' ctx.req.setEncoding('utf8') ctx.req.on('data', (chunk) => { buf += chunk }) ctx.req.on('end', () => { tool.xmlToJson(buf) .then(resolve) .catch(reject) }) })
await promise.then((result) => {
console.log(result) // 这里就能看到微信给你返回的支付参数了,剩下的自己去处理吧~
}).catch((e) => {
e.status = 400
})
next()
})
@Andyliwr 很简单的封装调用而已,欢迎自己实现
@thinkive 不支持。你可以 fork 了自己加。