增加扫码支付页面

This commit is contained in:
2025-10-30 09:51:28 +08:00
parent 2882a50828
commit dbf6a61ac7
4 changed files with 143 additions and 2 deletions

121
pages/pay.vue Normal file
View File

@@ -0,0 +1,121 @@
<template>
<view> </view>
</template>
<script setup>
import { mchRecharge } from "@/http/api/pay";
import { onMounted, ref, reactive } from "vue";
import { onLoad } from "@dcloudio/uni-app";
const options = ref({});
function parseQueryString(queryString) {
const queryParams = queryString.split("&").map((param) => param.split("="));
const params = {};
for (const [key, value] of queryParams) {
params[key] = value;
}
return params;
}
onLoad((opt) => {
console.log(opt);
if (opt.q) {
const q = decodeURIComponent(opt.q);
const params = parseQueryString(q.split("?")[1]);
Object.assign(options.value, params);
} else {
Object.assign(options.value, opt);
}
console.log(options.value);
init();
});
function wxlogin() {
return new Promise((resolve, reject) => {
uni.login({
success: (res) => {
if (res.code) {
resolve(res.code);
} else {
reject(res.errMsg);
}
},
fail: (err) => {
reject(err.errMsg);
},
});
});
}
const pay = (res) => {
return new Promise((resolve, reject) => {
uni.requestPayment({
// #ifdef MP-WEIXIN
provider: "wxpay", //支付类型-固定值
partnerid: res.appId, // 微信支付商户号
timeStamp: res.timeStamp, // 时间戳(单位:秒)
nonceStr: res.nonceStr, // 随机字符串
package: res.package, // 固定值
signType: res.signType, //固定值
paySign: res.paySign, //签名
// #endif
// #ifdef MP-ALIPAY
provider: "alipay", //支付类型-固定值
orderInfo: res.tradeNo, // 微信支付商户号
// #endif
success: (res) => {
console.log("pay");
console.log(res);
// #ifdef MP-WEIXIN
uni.showToast({
title: "支付成功",
icon: "none",
});
console.log("支付成功");
resolve(true);
// #endif
// #ifdef MP-ALIPAY
if (res.resultCode == "9000") {
uni.showToast({
title: "支付成功",
icon: "none",
});
resolve(true);
} else {
uni.showToast({
title: "支付失败",
icon: "none",
});
reject(false);
}
// #endif
},
fail: (res) => {
setTimeout(() => {
uni.hideLoading();
}, 1000);
reject(false);
},
});
});
};
async function init() {
const code = await wxlogin();
const res = await mchRecharge({
...options.value,
code,
payType: options.value.payType || "wechatPay",
});
if(res){
const paySuccess= await pay(res);
if(paySuccess){
uni.showToast({
title: "支付成功",
icon: "none",
});
}
}
console.log(res);
}
</script>