问题模块 |
---|
API和组件 |
wx.redirectTo
我在电脑端的微信开发者工具中正常跳转,但是手机扫码预览不跳转;
求教,有谁遇到过类似问题吗
网友回复
保尔baci柯察金:
我手机端的微信是ios版 6.5.18
保尔baci柯察金:
这段代码前面测试中都未发现问题,都可以成功触发fail,近期排查时发现了该问题。
保尔baci柯察金:
data: {
openid: openidGet,
out_trade_no: that.data.OrderNumber,
vipmeal_name: that.data.name,
price: that.data.payment
},
method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: function (res) {
//返回正确的预支付交易后调起支付
var appid = res.data.Wechat.PayForm.APPID;
var timeT = res.data.Wechat.PayForm.Timestamp;
var noceStrT = res.data.Wechat.PayForm.Noncestr;
var prepayIDT = res.data.Wechat.PrepayID;
wx.requestPayment({
appId: appid,
timeStamp: timeT,
nonceStr: noceStrT,
package: "prepay_id=" + prepayIDT,
signType: 'MD5',
paySign: res.data.Wechat.PayForm.Sign,
success: function (res) {
// success
wx.redirectTo({
url: '../my/paySuccess/paySuccess?orderNumber=' + that.data.OrderNumber
})
},
fail: function (res) {
// fail
console.log("-----fail-----",res)
wx.redirectTo({
url: '../my/payDefeat/payDefeat?orderNumber=' + that.data.OrderNumber + '&payment=' + that.data.payment
})
},
complete: function (res) {
// complete
}
})
},
fail: function (res) {
// fail
},
complete: function (res) {
// complete
}
});
wx.requestPayment的fail在真机测试中未触发。以下为实例代码
-----------------------------------------------------------------
wx.request({
url: '*****************',data: {
openid: openidGet,
out_trade_no: that.data.OrderNumber,
vipmeal_name: that.data.name,
price: that.data.payment
},
method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: function (res) {
//返回正确的预支付交易后调起支付
var appid = res.data.Wechat.PayForm.APPID;
var timeT = res.data.Wechat.PayForm.Timestamp;
var noceStrT = res.data.Wechat.PayForm.Noncestr;
var prepayIDT = res.data.Wechat.PrepayID;
wx.requestPayment({
appId: appid,
timeStamp: timeT,
nonceStr: noceStrT,
package: "prepay_id=" + prepayIDT,
signType: 'MD5',
paySign: res.data.Wechat.PayForm.Sign,
success: function (res) {
// success
wx.redirectTo({
url: '../my/paySuccess/paySuccess?orderNumber=' + that.data.OrderNumber
})
},
fail: function (res) {
// fail
console.log("-----fail-----",res)
wx.redirectTo({
url: '../my/payDefeat/payDefeat?orderNumber=' + that.data.OrderNumber + '&payment=' + that.data.payment
})
},
complete: function (res) {
// complete
}
})
},
fail: function (res) {
// fail
},
complete: function (res) {
// complete
}
});
白开水:
你好,请提供一下能复现问题的简单代码示例。
保尔baci柯察金:
为什么在真机测试时,取消支付或者支付失败,没有执行fail中的语句?
保尔baci柯察金:
我是调用wx.requestPayment(),然后在success和fail里用wx.redirectTo跳转,在开发工具中跳转正常,但是在真机测试下无法跳转,这样判断是因为我在complete中也做了跳转,是可以成功的。不知道为啥