欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

uniapp的微信支付

程序员文章站 2022-07-13 16:52:57
...

1. 封装public.js公共函数:

export const toNewPage=(url,callback)=>{  //1. 封装的跳转页面函数
	uni.redirectTo({
		url: url,
		success(){
			if(callback){
				callback()
			}
		}
	});
}
export const setCookieSync=(key,val)=>{  //2. 封装的将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。
	try {
		uni.setStorageSync(key,val);
	} catch (e) {
		console.log(e)
	}
}
export const getCookieSync=(key)=>{  //3. 从本地缓存中异步获取指定 key 对应的内容。
	try {
		return uni.getStorageSync(key);		
	} catch (e) {
		return "fail"
	}	
}
export const uniRequest=(url,data,sucfun,failfun=null,compfun=null)=>{  //4. 封装requst请求方	
	uni.request({
		url: url, 
		method:"POST",
		data: data,
		header: {'content-type': 'application/x-www-form-urlencoded'} ,
		success: (res) => {
			if(res.statusCode===200){
				sucfun(res)
			}else{
				console.log("获取信息失败,请重试!")
			}			
		},
		fail:(err)=>{
			if(failfun){
				failfun(err)
			}
		},
		complete:(result)=>{
			if(compfun){
				compfun(result)
			}
		}
	});
}
export const uniRequestGet=(url,data,sucfun,failfun=null,compfun=null)=>{  //5. 封装requst的get请求方	法
	uni.request({
		url: url, 
		method:"GET",
		data:data,
		success: (res) => {
			if(res.statusCode===200){
				sucfun(res)
			}else{
				console.log("获取信息失败,请重试!")
			}			
		},
		fail:(err)=>{
			if(failfun){
				failfun(err)
			}
		},
		complete:(result)=>{
			if(compfun){
				compfun(result)
			}
		}
	});
}
export const wxPayMoney=(timeStamp,nonceStr,pack,signType,paySign,sucfun,failfun=null,compfun=null)=>{  //6. 封装微信支付函数
	uni.requestPayment({
		provider: 'wxpay',
		orderInfo:"orderInfo",
		timeStamp:timeStamp,
		nonceStr: nonceStr,
		package: pack,
		signType: signType,
		paySign:paySign,
		success (res) {
			sucfun(res)
		},
		fail (err) {
			if(failfun){
				failfun(err)
			}
		},
		complete(result){
			if(compfun){
				compfun(result)
			}
		}
	});
}

2. 在需要的页面调用,如index.vue中:

onReady(){
    this.mockWxPayMoney()
},
methods:{
    mockWxPayMoney(){  //.模拟微信执行接口
		var data={
			orderAmt:"0.01",  //需要支付的金额
			shopId :2,       //自己的后台数据库需要支付给哪个商户的商户id
			token:getCookieSync("myToken"),   //微信用户授权登录,自己后台返回一个token
		}
		uniRequest(BaseUrl_orderCreate,data,(res)=>{  //自己的后台根据向哪个商户支付以及支付多少钱的参数,从而获得返回自己后台优惠折扣之后的实际支付金额。
			console.log(res)
			if(res.data.code===1){
			    var prame={
					payId:res.data.data.payId,
					money:res.data.data.realMoney,
					token:getCookieSync("myToken")
				}
			uniRequest(BaseUrl_payPrepay,prame,(result)=>{//自己后台与微信支付连接返回前端微信支付输入密码需要的参数timeStamp,nonceStr,pack,signType,paySign。						
				if(result.data.code===1){
					var req=result.data.data;
					console.log("支付的结果");
					console.log(req);	                                  w 
      wxPayMoney(String(req.timestamp),req.nonceStr,req.pack,req.signType,req.paySign,(payend)=>{    //调用uniapp的微信支付接口,传入参timeStamp,nonceStr,pack,signType,paySign,从而获得最终支付成功
				        console.log("最终支付成功")
						console.log(payend)
					 })
				}else{
					}							
				 })
			}else{						
				   console.log("支付失败,请重试")
			}
		})			
	}
}

 

 

 

 

 

 

 

 

 

 

 

 

相关标签: uniapp 微信支付