收藏
回答

微信小程序支付成功,但是notify_url接收不到回调如何排查此问题?


商户系统和微信支付系统主要交互:

1、小程序内调用登录接口,获取到用户的openid,api参见公共api

2、商户server调用支付统一下单,api参见公共api

3、商户server调用再次签名,api参见公共api

4、商户server接收支付通知,api参见公共api

5、商户server查询支付结果,api参见公共api


根据文档进行的开发,目前在开发环境中,付款也能走通,成功。


但是以上的第4步,商户server接收支付通知,在付款成功后,商户server接收不到支付的通知,


目前用的是  wx.requestPayment 的回调,进行的支付的确认,为了更高的可靠性,想用

notiry_url做二次确认。


在 第2步,商户server调用支付统一下单的时候,设置了

notify_url: https://1bzmr3y9.qcloud.la/weapp/pay_notify

这个url上,对get和post请求,均做了 console.log() 打印,自己用工具测试,均有打印结果 但是支付完成后,无法收到,微信支付服务器的 回调,请问如何排查此问题


调用wx.requestPayment(OBJECT)发起微信支付,成功返回

{errMsg: "requestPayment:ok"}


附上部分代码

payNotify.js

```js

async function get(ctx, next) {

   ctx.state.data = 'this is pay notify get'

   console.log('payNotify get ,ctx = ', ctx)

}

async function post(ctx, next) {

   ctx.state.data = 'this is pay notify post'

   console.log('payNotify post ,ctx = ', ctx)

}


module.exports = {

   get,

   post

}

```

routes/index.js

```js

// --- 微信支付服务器 回调 商户服务器  ---

router.get('/pay_notify', controllers.payNotify.get)

router.post('/pay_notify', controllers.payNotify.post)

```

统一下单 xml

```xml

<xml>

   <appid>wxxxxxxxxxxxxxxxx</appid>

   <body>微信支付</body>

   <mch_id>133xxxxxxxxxxx</mch_id>

   <nonce_str>xxxxxxxxxxxxxxxxxxxxxxxxx</nonce_str>

   <notify_url>https://1bzmr3y9.qcloud.la/weapp/pay_notify</notify_url>

   <openid>xxxxxxxxxxxxxxxxxxxxxxxx</openid>

   <out_trade_no>20180706000033</out_trade_no>

   <spbill_create_ip>193.112.197.110</spbill_create_ip>

   <time_start>20180706171407</time_start>

   <total_fee>1</total_fee>

   <trade_type>JSAPI</trade_type>

   <sign>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</sign>

</xml>

```

调试截图

get 请求



post 请求

服务器console

最后一次编辑于  2018-07-06
回答关注问题邀请回答
收藏

5 个回答

  • 风口上的猪²⁰¹⁹
    风口上的猪²⁰¹⁹
    11-18

    老哥们解决了吗? 我后台用的egg.js, 小程序支付也是收不到回调但是,H5支付就可以!

    11-18
    赞同
    回复
  • Y~wen
    Y~wen
    03-18

    遇到类似问题,另外一项目正常。但新的项目就出现了支付成功,但无回调的情况,http https都尝试过,url也是外网可访问的url ,但回调并没有执行。求解

    03-18
    赞同
    回复 5
    • 中国梦
      中国梦
      05-09

      今天,又调了一次代码,http,https都试了,还是不行。。。

      05-09
      回复
    • fenrir
      fenrir
      08-26回复中国梦
      请问问题解决了吗?我也遇到了同样的问题
      08-26
      回复
    • 中国梦
      中国梦
      08-26回复fenrir
      没有
      08-26
      回复
    • fenrir
      fenrir
      08-26回复中国梦
      - -我在考虑是不是放弃用回调地址,直接用查询订单来维护支付结果了
      08-26
      回复
    • fenrir
      fenrir
      08-26回复中国梦
      天呐。。你5月的问题。。到现在都没有得到解决吗?
      08-26
      回复
  • 猪猪の乐章
    猪猪の乐章
    02-19

    改成http就可以了 我之前用https也不行用http就可以不知道为什么

    02-19
    赞同
    回复
  • 康
    2018-07-08

    楼主,这个问题解决了么,,这个意思是小程序支付后主动通知后台?想想好像是可以的,不过没有看到别人用过,会不会有问题

    2018-07-08
    赞同
    回复 2
    • 中国梦
      中国梦
      2018-07-09

      还没解决,目前在赶项目进度,网上大多是php的例子,nodejs的少,用的官方小程序开发环境,不知道是不是开发服务器的关系,这个问题,应该具有普遍性,@官方大神

      2018-07-09
      回复
    • 风口上的猪²⁰¹⁹
      风口上的猪²⁰¹⁹
      11-18回复中国梦
      老哥解决了吗?虽然已经一年了
      11-18
      回复
  • Akira
    Akira
    2018-07-06

    https://1bzmr3y9.qcloud.la/weapp/pay_notify这个接口的一开始就写入一些日志,看看有没有东西

    2018-07-06
    赞同
    回复 4
    • Akira
      Akira
      2018-07-06

      如果有,证明微信回调执行过,接下来再做排查

      2018-07-06
      回复
    • 中国梦
      中国梦
      2018-07-06回复Akira

      整理了一下截图回复,都放到主贴里去了。

      2018-07-06
      回复
    • 康
      2018-07-11回复中国梦

      主贴在哪

      2018-07-11
      回复
    • 谢居助 | Joe Hsieh
      谢居助 | Joe Hsieh
      06-29

      接口根本没有接到微信的回调。微信这个回调太不可靠的。


      我的做法是单独写个 queryOrder 的接口,让客户端支付成功后呼叫,然后服务器去跟微信支付查询此订单的支付结果,再自己更新数据库的订单支付信息。

      06-29
      回复