收藏
回答

为什么云开发支付 支付完成后会一直重复去回调接口?

为什么云开发的支付 成功后老是重复返回呢?这个是调用完存储的云函数 这四个都是重复数据 相当于用户支付成功后回调调用了好多遍 这次调用了接口六遍......已经涉及到正常使用了 之前出现过然后限制完 过了一段时间又出现了.... 请大家帮我看看 是代码写的有问题吗?还是别的问题


这是支付的云函数

回调函数:callpay 我在这里面调用了后台的接口 告诉成功了 后台去存储 但是支付成功后重复返回...也相当于我重复去掉后台接口 后台就会重复存储...

页面调用使用

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

3 个回答

  • Larry
    Larry
    2021-12-27

    可以在数据库增加一个标记字段,收到第一次回调的时候值改为true,后续如果有重复的回调根据这个值判断一下,避免重复写入

    2021-12-27
    有用
    回复 1
    • SuperYang
      SuperYang
      2021-12-27
      是的,这也是一种解决办法,官方也有建议这样做,在执行回调逻辑之前,先判断一下是否已经执行过回调的逻辑。
      2021-12-27
      回复
  • SuperYang
    SuperYang
    2021-12-27

    返回给微信服务端的对象结构体不对。

    2021-12-27
    有用
    回复 10
    • SuperYang
      SuperYang
      2021-12-27
      关于云支付写得比较详细得一篇博客,可以看看。https://blog.csdn.net/weixin_44702572/article/details/120124392
      2021-12-27
      回复
    • SuperYang
      SuperYang
      2021-12-27
      不对,你只回调了几次,应该是返回的结构体是正确的,但是你返回之前有个耗时操作,导致返回给微信端的时间太久了,然后就一直回调。如果是返回结构体有错误,应该是不止回调4-6次的。
      2021-12-27
      回复
    • Fate_
      Fate_
      2021-12-27回复SuperYang
      是的 他只是一阵一阵的可能十个人中有一个人的返回会回调很多次,你说的这个耗时是什么意思 能解释一下吗 有方法避免吗
      2021-12-27
      回复
    • SuperYang
      SuperYang
      2021-12-27回复Fate_
      把支付回调的代码copy出来。网址你可以用XXXXX代替。我给你改一下试试。
      2021-12-27
      回复
    • Fate_
      Fate_
      2021-12-27回复SuperYang
      // 云函数入口文件
      const cloud = require('wx-server-sdk')
      cloud.init({
        env: cloud.DYNAMIC_CURRENT_ENV
      })
      const rp = require('request-promise')
      // 云函数入口函数
      exports.main = async (event, context) => {
        const orderId = event.outTradeNo
        if (event.returnCode == 'SUCCESS' && event.resultCode == 'SUCCESS' ) {
          cloud.database().collection('user').add({
            data:{
              log:event
            }
          })
        API_URL = 'xxxxx'
         await rp(API_URL)
          .then(function (res) {
            const status = {"errcode":0,"errmsg":' '}
            return status
          })
          .catch(function (err) {
            const status = {"errcode":0,"errmsg":' '}
            return status
          });
          }
      }
      2021-12-27
      回复
    查看更多(5)
  • 老张
    老张
    2021-12-27

    https://developers.weixin.qq.com/community/develop/article/doc/0006a267e3c92092ca5a31adb5b013

    你的return消息包结构不正确。

    2021-12-27
    有用
    回复 1
    • Fate_
      Fate_
      2021-12-27
      我之前的返回信息是你文章里面的那样 但是如果不正确的话 按理说应该每次支付成功都会回调很多次对吧 可是这个属于一阵阵的十个人支付成功回调可能会有一个人重复回调
      2021-12-27
      回复
登录 后发表内容