小程序
小游戏
企业微信
微信支付
扫描小程序码分享
自己发xml请求,可以显示出来,,微信支付的回调为空{}
接收的字段是ctx.request.body
自己发请求测试的xml是下面,可以正常获取到
<xml>
<return_code>SUCCESS</return_code>
<return_msg>OK</return_msg>
</xml>
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
解决了吗? 我这也是空
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
// xmlTool.js
const xml2js = require('xml2js')
exports.xmlToJson = (str) => {
return new Promise((resolve, reject) => {
const parseString = xml2js.parseString
parseString(str, (err, result) => {
if (err) {
reject(err)
} else {
resolve(result)
}
})
exports.jsonToXml = (obj) => {
const builder = new xml2js.Builder()
return builder.buildObject(obj)
// xmlParse.js
const xml = require('./xmlTool')
module.exports = () => {
return async (ctx, next) => {
if (ctx.method == 'POST' && ctx.is('text/xml')) {
let promise = new Promise(function (resolve, reject) {
let buf = ''
ctx.req.setEncoding('utf8')
ctx.req.on('data', (chunk) => {
buf += chunk
ctx.req.on('end', () => {
xml.xmlToJson(buf)
.then(resolve)
.catch(reject)
await promise.then((result) => {
ctx.req.body = result
.catch((e) => {
e.status = 400
next()
await next()
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
解决了吗? 我这也是空
加上了这个中间件,我们就可以正确接收到 XML 格式的参数了。
// xmlTool.js
const xml2js = require('xml2js')
exports.xmlToJson = (str) => {
return new Promise((resolve, reject) => {
const parseString = xml2js.parseString
parseString(str, (err, result) => {
if (err) {
reject(err)
} else {
resolve(result)
}
})
})
}
exports.jsonToXml = (obj) => {
const builder = new xml2js.Builder()
return builder.buildObject(obj)
}
// xmlParse.js
const xml = require('./xmlTool')
module.exports = () => {
return async (ctx, next) => {
if (ctx.method == 'POST' && ctx.is('text/xml')) {
let promise = new Promise(function (resolve, reject) {
let buf = ''
ctx.req.setEncoding('utf8')
ctx.req.on('data', (chunk) => {
buf += chunk
})
ctx.req.on('end', () => {
xml.xmlToJson(buf)
.then(resolve)
.catch(reject)
})
})
await promise.then((result) => {
ctx.req.body = result
})
.catch((e) => {
e.status = 400
})
next()
} else {
await next()
}
}
}