/**支付功能(支付宝以及微信支付)*/
const getPaymentAction = (type = 'wxpay') => {
return new Promise((resolve, reject) => {
if([ 'wxpay', 'alipay' ].includes(type)){
uni.getProvider({
service: 'payment',
success: (res) => {
if(~res.provider.indexOf(type)){
//此方法将在支付调起成功时,回调给Promise作为函数体。
//当请求完成后将后端返回的参数,传入这个函数并且调用。
const requestPayment = (payInfo) => {
return new Promise((resolve, reject) =>{
uni.requestPayment({
provider: type, //必须先将当前支付类型赋值
orderInfo: payInfo, //这个是后端返回的参数
success: () => {
resolve('支付成功');
},
fail: (e) => {
reject('支付失败,请稍后重试');
}
})
})
}
//将支付函数传给res,在通过res()去调用支付。
resolve(requestPayment);
}else{
reject('调起微信失败。');
}
}
})
}else{
console.error('你传入的支付类型错误, 只能为(wxpay/alipay)');
reject('支付失败。');
}
})
}
导入使用:
async onPaymentClick(){
//不传参数默认是微信支付 (wxpay, alipay)
//返回的是一个Promise函数体
try{
//如果订单生成成功,那么就请求接口获取需要的参数
const fn = await getPaymentAction();
//这里会去请求你自己的接口
----------------------------
/*
当接口响应返回数据data,
调用fn方法, 这个data就是后端返回的uni.requestPayment需要的orderInfo
订单参数
*/
try {
//并且将数据传入封装的方法,这样fn会通过你返回的数据去调用api
const result = await fn(data);
console.log(result); //支付成功。
}catch(e){
//支付失败返回
}
}catch(e){
//错误的情况下会进入此方法
}