收藏
回答

怎么在小程序支付完成后,传递数据给url后台?

支付可以正常运行,但是无法传递数据url到后台

button: function(e) {
   let orderId = Date.now();
   wx.cloud.callFunction({
     name: "getOpenid"
     data: {
       orderid: orderId,
       totalPrice: 0.1
     },
     success(res) {
       console.log("提交成功101", res.result)
       that.getOpenid(res.result)
     },
     fail(res) {
       console.log("提交失败101", res)
     },
     complete: function () {
       var uphone = wx.getStorageSync('uphone'); 
       wx.request({
         url: app.globalData.baseUrl + '/buyer/order/create'
         method: "POST"
         header: {
           "Content-Type": "application/x-www-form-urlencoded"
         },
         data: {
           openid: app.globalData.openid,
           name: app.globalData.userInfo.nickName
           phone: uphone,     
         },
         success: function (res) {
           console.log("支付成功10001:", res.data)
           if (res && res.data && res.data.data) {
             // 支付方式关闭动画
             that.animation.translate(, 285).step();
             that.setData({
               animationData: that.animation.export()
             });
             that.setData({
               maskFlag: true
             });           
             wx.setStorageSync('cart', ""
             wx.switchTab({
               url: '../index/index'
             })
           } else {
             // 支付方式关闭动画
             that.animation.translate(, 285).step();
             that.setData({
               animationData: that.animation.export()
             });
             that.setData({
               maskFlag: true
             });           
           }
         }
       })
     }
   })
 },
getOpenid(payData) {
    //console.log("入口支付成功11", res)
    wx.requestPayment({
      timeStamp: payData.timeStamp,
      nonceStr: payData.nonceStr,
      package: payData.package,
      signType: 'MD5',
      paySign: payData.paySign,
      success(res) {
        console.log("入口支付成功11", res.data)
      },
      fail(res) {
              console.log("入口支付失败11", res)
      }
    })
}

求大佬

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

8 个回答

  • ShowFaker
    ShowFaker
    2020-01-15
    为什么不把wx.request({ 写到 getOpenid 的success里 感觉是同步异步的问题
    


    2020-01-15
    有用 1
    回复 4
    • mediocre person
      mediocre person
      2020-01-15
      把wx.request({ 写到 getOpenid 的success里 还是报错,大佬。
      2020-01-15
      回复
    • ShowFaker
      ShowFaker
      2020-01-15回复mediocre person
      你getOpenid 里 that 没有定义吧
      2020-01-15
      回复
    • ShowFaker
      ShowFaker
      2020-01-15
      你在getOpenid(payData){ 后写一个  var that = this;
      2020-01-15
      回复
    • mediocre person
      mediocre person
      2020-01-16回复ShowFaker
      大佬,已经有,我只不过在这里省略了
      2020-01-16
      回复
  • จุ๊บ
    จุ๊บ
    2020-01-15

    支付成功,后端处理数据,走的支付回调接口,不需要前端传什么东西啊


    --↓↓👍如果觉得有帮助的话请点个【赞】吧

    2020-01-15
    有用 1
    回复 1
    • mediocre person
      mediocre person
      2020-01-15
      大佬,是传递到我们自己的官网后台
      2020-01-15
      回复
  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2020-01-15

    支付接口不是有个notify_url吗,在notify_url的程序逻辑里根据订单id去获取对应的openid,name和phone

    --↓↓👍点赞是回答的动力哦!!

    2020-01-15
    有用
    回复 4
  • mediocre person
    mediocre person
    2020-01-15

    把wx.request({})放到 wx.cloud.callFunction({})外面,就不会报错;

    但是是在支付完成前就已经传递参数到后台url了




    button: function) {
       let orderId = Date.now();
       wx.cloud.callFunction({
         name: "getOpenid"
         data: {
           orderid: orderId,
           totalPrice: 0.1
         },
         success(res) {
           console.log("提交成功101", res.result)
           that.getOpenid(res.result)
         },
         fail(res) {
           console.log("提交失败101", res)
         },
       })
      var uphone = wx.getStorageSync('uphone'); 
      wx.request({
             url: app.globalData.baseUrl + '/buyer/order/create'
             method: "POST"
             header: {
               "Content-Type": "application/x-www-form-urlencoded"
             },
             data: {
               openid: app.globalData.openid,
               name: app.globalData.userInfo.nickName
               phone: uphone,     
             },
             success: function (res) {
               console.log("支付成功10001:", res.data)
               if (res && res.data && res.data.data) {
                 // 支付方式关闭动画
                 that.animation.translate(, 285).step();
                 that.setData({
                   animationData: that.animation.export()
                 });
                 that.setData({
                   maskFlag: true
                 });           
                 wx.setStorageSync('cart', ""
                 wx.switchTab({
                   url: '../index/index'
                 })
               } else {
                 // 支付方式关闭动画
                 that.animation.translate(, 285).step();
                 that.setData({
                   animationData: that.animation.export()
                 });
                 that.setData({
                   maskFlag: true
                 });           
               }
             }
        })
     },
      getOpenid(payData) {
        //console.log("入口支付成功11", res)
        wx.requestPayment({
          timeStamp: payData.timeStamp,
          nonceStr: payData.nonceStr,
          package: payData.package,
          signType: 'MD5',
          paySign: payData.paySign,
          success(res) {
            console.log("入口支付成功11", res.data)
          },
          fail(res) {
                  console.log("入口支付失败11", res)
          }
        })
    

    }


    2020-01-15
    有用
    回复
  • 唏嘘
    唏嘘
    2020-01-15

    你的接口500了 去问问后台 接口坏了 先解决500 再解决关闭动画问题 500就是让你不能传输过去的原因

    --↓↓👍点赞是回答的动力哦

    2020-01-15
    有用
    回复 2
    • mediocre person
      mediocre person
      2020-01-15
      欢迎大佬!!!!
      如果把wx.request({})放到 wx.cloud.callFunction({})外面,就不会报错;
      但是是在支付完成前就已经传递参数到后台url
      2020-01-15
      回复
    • mediocre person
      mediocre person
      2020-01-15
      是不是调用wx.request({})的方式不对?大佬
      2020-01-15
      回复
  • 正周
    正周
    2020-01-15

    你这关闭动画的代码有问题啊

    2020-01-15
    有用
    回复 10
    • mediocre person
      mediocre person
      2020-01-15
      大佬,如果把wx.request({})放到 wx.cloud.callFunction({})外面,就不会报错;
      但是是在支付完成前就已经传递参数到后台url了
      2020-01-15
      回复
    • 唏嘘
      唏嘘
      2020-01-15回复mediocre person
      那你可以在支付完成函数 调用接口 我指的地方就是支付完成界面  这里传递参数到后台url 就行  你可以试试  

      --↓↓👍点赞是回答的动力哦

      2020-01-15
      1
      回复
    • mediocre person
      mediocre person
      2020-01-15回复唏嘘
      如果放在你说的位置的话,就没有办法访问到url,打咯
      2020-01-15
      回复
    • 唏嘘
      唏嘘
      2020-01-15回复mediocre person
      怎么没办法访问   报错还是啥的
      2020-01-15
      回复
    • mediocre person
      mediocre person
      2020-01-15回复唏嘘
      2020-01-15
      回复
    查看更多(5)
  • Charb
    Charb
    2020-01-15

    亲,你的代码报错啦

    2020-01-15
    有用
    回复 1
    • mediocre person
      mediocre person
      2020-01-15
      看我上面代码,大佬。
      大佬,如果把wx.request({})放到 wx.cloud.callFunction({})外面,就不会报错;
      但是是在支付完成前就已经传递参数到后台url了
      2020-01-15
      回复
  • 。。。。。。
    。。。。。。
    2020-01-15
    报错很明显了:that.animation.translate中的that.animation是undefined。
     我猜你这里应该是that.data.animation或者直接animation,看你这个animation变量是怎么定义的了
    


    2020-01-15
    有用
    回复 1
    • mediocre person
      mediocre person
      2020-01-15
      看我上面代码,大佬。
      大佬,如果把wx.request({})放到 wx.cloud.callFunction({})外面,就不会报错;
      但是是在支付完成前就已经传递参数到后台url了
      2020-01-15
      回复
登录 后发表内容
问题标签