uniapp的微信支付

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("支付失敗,請重試")
			}
		})			
	}
}

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章