tvrcgo / weixin-pay

微信支付 Nodejs SDK
MIT License
919 stars 241 forks source link

能支持CO或者koa写法吗? #29

Closed thinkive closed 7 years ago

tvrcgo commented 7 years ago

@thinkive 不支持。你可以 fork 了自己加。

Andyliwr commented 6 years ago

@thinkive 鄙人发表下自己解决方案,其实原理都差不多,看了@tvrcgo的源码也无非是在useWeixinCallback方法里做了对xml格式的处理,express能做的,koa一样也能做。

  1. 安装处理xml的插件
    npm install --save xml2js
  2. 在自己的工具类中新建一个xmlToJson方法:
    
    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()

})

tvrcgo commented 6 years ago

@Andyliwr 很简单的封装调用而已,欢迎自己实现