环境是基于nestjs的node.js
小程序前端可以成功发起支付。
微信文档:后台通知交互时,如果微信收到商户的应答不符合规范或超时,微信会判定本次通知失败,重新发送通知,直到成功为止(在通知一直不成功的情况下,微信总共会发起多次通知,通知频率为15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h - 总计 24h4m),但微信不保证通知最终一定能成功。
现在的现象是后台会一直收到回调通知。已经尝试各种方式回复XML给微信服务器。按道理应该能成功才对
/**
* 微信异步通知
*/
@Post('weixinPayNotify')
// TODO 隐藏接口
async weixinPayNotify(@Req() req, @Res() res){
res.set('Content-Type', 'text/xml'); //'text/xml'); application
const ret = await this.wxService.weixinPayNotify(req)
console.log(`notify return ret @ ${Date.now()}`)
console.log(ret)
console.log(typeof ret)
res.end(ret)
}
返回的数据两种都有试验
<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>
第二种
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xml>
<return_code>SUCCESS</return_code>
</xml>
下面两种图是直接remote debug 连到阿里云服务器,看返回数据的,跟log打印也是一致的。不能理解为何微信会判定通知失败
望大神解惑
我的程序现在遇到了奇怪的问题,微信回调只回调一次,就再也不调了。我没有return 任何东西。
困扰很久,得以解决。感谢大佬
添加一下WePayTS8(备注:微信社区。)
重新在代码中新建了个模块weixin3.module.ts, 参考https://github.com/notadd/nt-addon-pay 的方法
新建了一个post函数wechat_order_notify。支付成功后,微信仍不断按照15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h的模式进行通知
代码如下
服务器端api日志
现在已经不知道问题到底出在哪里了,node版本v8.9.4 nginx信息