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