支付宝支付"/>
uniapp转APP微信支付以及支付宝支付
按钮部分
<view @tap='toPay('alipay')' class=""></view> 支付宝支付
<view @tap='toPay('wxpay')' class=""></view> 微信支付
判断是否安卓微信或者支付宝
toPay(payType) {
uni.getProvider({
service: 'payment',
success: e => {
// e: {"errMsg":"getProvider:ok","service":"payment","provider":["alipay","wxpay"]}
let arrStr = e.provider.join(',');
if (payType == 'alipay') {
if (arrStr.indexOf('alipay') === -1) {
uni.showToast({
icon: 'none',
title: '请安装支付宝App'
});
return;
}
}
if (payType == 'wxpay') {
if (arrStr.indexOf('wxpay') === -1) {
uni.showToast({
icon: 'none',
title: '请安装微信App'
});
return;
}
}// 调用支付
this.requestPayment(payType);
},
fail: e => {}
});
},
根据订单获取支付的参数,支付宝需要穿入的参数是一串字符串。微信支付需要传入的是一个对象
// 2、异步调用支付,先**订单信息
async requestPayment(payType) {
let _this = this;
let orderInfo = await this.getOrderInfo(payType);
// orderInfo 的值:见下方
if (orderInfo.data.error_code != 0 && payType != 'wxpay') {
uni.showModal({
content: orderInfo.msg,
showCancel: false
});
return;
}var map;
if (payType == 'wxpay') {
let data = orderInfo.data.order_arr;
console.log(data)
map = {
appid: data.appid,
noncestr: data.noncestr,
package: data.package,
prepayid: data.prepayid,
partnerid: data.partnerid,
timestamp: Number(data.timestamp),
sign: data.sign
};
} else {
map = orderInfo.data.data;
}uni.requestPayment({
provider: payType,
orderInfo: map,
success: e => {uni.showToast({
title: '支付成功!',
icon: 'none',
duration: 2000
});
},
fail: e => {// uni.showModal({
// content: '支付失败,原因为: ' + e.errMsg,
// showCancel: false
// });
},
complete: () => {}
});
},
获取订单信息,支付数据
// 3、**订单信息
getOrderInfo(payType) {
var _this = this;
let url = this.web_url + '/doctor/';
let data = {
action: payType,
order_number: _this.order_number,
pay_hash: Math.ceil(Math.random() * 100),
amount: _this.projectPrice,
token: uni.getStorageSync('tokenData').token
};if (payType == 'wxpay') {
data.action = 'wxapp';
}
console.log(url)
console.log(data)
return new Promise(res => {
uni.request({
url: url,
data: data,
header: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' //自定义请求头信息
},
method: 'POST',
dataType: 'json',
success: result => {
console.log(result)
res(result);
},
fail: e => {res(e);
}
});
});
},
微信支付失败了会缓存支付的错误,微信支付失败了会缓存支付的错误,微信支付失败了会缓存支付的错误,所以最好用小号测试。一步步检查支付的参数是否正确。如果参数一个个对应的都正确还支付失败,建议卸载微信分身重新登录再支付。我做微信支付的时候被这个坑拦住了一两天才发现,希望可以帮到更多的人。
更多推荐
uniapp转APP微信支付以及支付宝支付
发布评论