收藏
回答

小程序微信支付回调问题

环境是基于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打印也是一致的。不能理解为何微信会判定通知失败

望大神解惑

回答关注问题邀请回答
收藏

2 个回答

  • 微信支付技术助手8
    微信支付技术助手8
    02-24

    添加一下WePayTS8(备注:微信社区。)

    02-24
    有用
    回复
  • roy
    roy
    02-23

    重新在代码中新建了个模块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信息

    02-23
    有用
    回复 2
    • roy
      roy
      02-23
      问题已解决,状态码从201 改成200就ok了
      02-23
      回复
    • Martin ~~
      Martin ~~
      08-08回复roy
      兄弟你好,我也是遇到这个问题。你是怎么处理的?
      08-08
      回复
登录 后发表内容
问题标签