thinkphp5 微信小程序开发的问题

在使用thinkphp5.1x做微信小程序支付时遇到一个问题,很困惑
前端流程是:先请求下单接口,下单接口成功后请求支付接口.
前端代码:

getpay:function(){
  var token=wx.getStorageSync('token');
  wx.request({
    // 请求订单接口
    url: 'http://restcms.cncyz.com/api/v1/placeOrder',
    method:"POST",
    header:{
      token:token
    },
    data:{
      // 订单数据
      products:[
        {product_id:1, count:3},
        {product_id:11,count:5}
      ]
    },
    success:function(res){
      console.log(res);
      // 调用服务器支付接口
      wx.request({
        url: 'http://restcms.cncyz.com/api/v1/pay',
        method: "POST",
        header: {
          token: token
        },
        data: {
          id: res.data.order_id
        },
        success:function(resn){
          // 使用微信的支付接口
          console.log(resn);
        }
      })
    }
  })
}

遇到的问题是:
http://restcms.cncyz.com/api/... 订单接口因为用户地址不存在抛出了一个异常

        $data=UserAddress::where('user_id','=',$this->uid)->find();
        if(empty($data)){
            throw new UserException(['msg'=>'用户地址不存在']);
        }
        return $data;

微信开发者工具的报错
图片描述

不明白的地方,第一个订单异常抛出就应该终止了吧,为什么还会有支付的报错信息.
下面代码不是不应该执行了,抛出异常了,为啥还会执行,并且有报错信息了

success:function(res){
      console.log(res);
      // 调用服务器支付接口
      wx.request({
        url: 'http://restcms.cncyz.com/api/v1/pay',
        method: "POST",
        header: {
          token: token
        },
        data: {
          id: res.data.order_id
        },
        success:function(resn){
          // 使用微信的支付接口
          console.log(resn);
        }
      })

代码应该怎么修改了? 什么原因了?

阅读 3.2k
2 个回答

第一个wx.request()函数虽然接口返回404,但是你看打印的信息时成功了,就进入success()回调函数了。

你可以看看wx.request()文档,success()是收到开发者服务成功返回的回调函数,而fail()是接口调用失败的回调函数。

你应该在第一个success()函数中判断是否成功了

wx.request({
    // 请求订单接口
    url: 'http://restcms.cncyz.com/api/v1/placeOrder',
    method:"POST",
    header:{
      token:token
    },
    data:{
      // 订单数据
      products:[
        {product_id:1, count:3},
        {product_id:11,count:5}
      ]
    },
    success:function(res){
        if(res.statusCode !== 200){
            //提示
            return
        }
        //判断业务是否是成功的
        
        
        //调用支付接口
        
        
    }
   }) 

后端简化下接口,就做成一个接口

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题