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("支付失败,请重试")
}
})
}
}
上一篇: tomcat源码分析 tomcat源码java源码分析
下一篇: 微信的支付流程