收藏
回答

微信支付问题

在微信支付中 我正常下订单支付 支付成功 微信进我回调 把状态从 1 改成 2 如果我在进行支付 把状态从2 改成 3 但是在今天10:00:02秒 用户进行支付 支付成功 状态更改 但是在10:00:06秒 又一次的进入回调 再一次的更改状态 间隔两秒 进了两次回调 状态丢失 这是什么原因呢

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

3 个回答

  • ㅤ
    2021-05-27

    一般自己不处理的话回调会走好多次的,你仔细看支付的文档

    两个办法

    1.第一次回调成功后返回正确的数据格式给微信,微信就不会再回调了

    2.加上判断,后续回调再进来的话如果说状态已经改变了,就不执行后续的逻辑就可以了

    2021-05-27
    有用
    回复
  • 跨商通
    跨商通
    2021-05-27

    重复发送通知,这种事是不可避免的。逻辑必须按这个前提来。

    收到回调通知后,在改状态的数据库update脚本里,增加一个条件:status:1,这样,只有当前状态是1的才会改成2,状态是3的不会改。

    比如我们的:

    db.collection('orders').where({

    out_trade_no,

    status:1

    }).update({

    data:{status:2}

    })

    2021-05-27
    有用
    回复 3
    • sikw.
      sikw.
      2021-05-27
      这样他也会更改的  我一次进去  修改状态 把一变成二 第二次再进来  他的状态的状态已经是二了  所以还是能修改成三  还是会丢失  我第一次修改成功了  我不明白为什么第二次会直接间隔几秒钟就会进来
      2021-05-27
      回复
    • 跨商通
      跨商通
      2021-05-27回复sikw.
      “我不明白为什么第二次会直接间隔几秒钟就会进来”。这是会有概率发生的,不要问为什么,任何重复发送通知的情况都可能发生。
      2021-05-27
      回复
    • 跨商通
      跨商通
      2021-05-27回复sikw.
      “这样他也会更改的 ”。你完全没看我的代码。
      2021-05-27
      回复
  • sikw.
    sikw.
    2021-05-27

    在回调中 我已经进行了 状态的判断

    2021-05-27
    有用
    回复
登录 后发表内容