在使用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);
}
})
代码应该怎么修改了? 什么原因了?
第一个
wx.request()
函数虽然接口返回404,但是你看打印的信息时成功了,就进入success()
回调函数了。你可以看看
wx.request()
文档,success()
是收到开发者服务成功返回的回调函数,而fail()
是接口调用失败的回调函数。你应该在第一个
success()
函数中判断是否成功了