139 lines
3.8 KiB
TypeScript
139 lines
3.8 KiB
TypeScript
import { ref, computed } from "vue";
|
|
import { defineStore } from "pinia";
|
|
import { showNotify, showToast } from "vant";
|
|
import { chargeprodList, chargeUser, submitPay } from "@/api/index";
|
|
import { onBridgeReady } from "@/wx/index";
|
|
|
|
|
|
const pay = defineStore("pay", () => {
|
|
const openId = ref<any>("");
|
|
const dataId = ref<any>("");
|
|
const channel = ref<any>("");
|
|
|
|
const initParams = (data:any) => {
|
|
openId.value = data.openId || "";
|
|
dataId.value = data.dataId || "";
|
|
channel.value = data.channel || "";
|
|
};
|
|
|
|
const payLsit = ref<Array<any>>([]);
|
|
|
|
const receiveUser = ref<any>({});
|
|
|
|
const getChargeprod = () => {
|
|
return new Promise((resolve, reject) => {
|
|
chargeprodList()
|
|
.then((res: any) => {
|
|
const { code, data } = res;
|
|
if (code === 200) {
|
|
payLsit.value = data;
|
|
}
|
|
resolve(res);
|
|
})
|
|
.catch((err: any) => {
|
|
reject(err);
|
|
});
|
|
});
|
|
};
|
|
|
|
|
|
const selectItemIndex = ref(0);
|
|
|
|
const selectItem = computed(() => {
|
|
if (payLsit.value.length > 0) {
|
|
return payLsit.value[selectItemIndex.value];
|
|
}
|
|
else {
|
|
return null;
|
|
}
|
|
});
|
|
|
|
const setSelectIndex = (value: number) => {
|
|
selectItemIndex.value = value;
|
|
};
|
|
|
|
|
|
const getChargeUser = (erbanNo: string | number) => {
|
|
return new Promise((resolve, reject) => {
|
|
chargeUser({ erbanNo: erbanNo })
|
|
.then((res: any) => {
|
|
const { code, data, message } = res;
|
|
if (code === 200) {
|
|
receiveUser.value = data;
|
|
} else if (code === 1404) {
|
|
showNotify({ type: "warning", message: "您输入的账号不存在" });
|
|
}
|
|
else {
|
|
showNotify({ type: "warning", message: message });
|
|
}
|
|
resolve(res);
|
|
})
|
|
.catch((err: any) => {
|
|
reject(err);
|
|
});
|
|
});
|
|
};
|
|
|
|
const wxConfig = ref<any>({});
|
|
|
|
const payRequest = (data:any) => {
|
|
const params = Object.assign({
|
|
chargeProdId: selectItem.value.chargeProdId,
|
|
openId: openId.value,
|
|
app: "toupai",
|
|
data: dataId.value,
|
|
channel: channel.value
|
|
}, data);
|
|
return new Promise((resolve, reject) => {
|
|
submitPay(params)
|
|
.then((res: any) => {
|
|
const { code, data, message } = res;
|
|
if (code === 200) {
|
|
wxConfig.value = {
|
|
timeStamp: data.timestamp, //时间戳
|
|
nonceStr: data.nonce_str,
|
|
package: data.prepay_id,
|
|
paySign: data.sign,
|
|
appid: data.appid,
|
|
signType: data.sign_type
|
|
};
|
|
onBridgeReady(wxConfig.value);
|
|
resolve(res);
|
|
}
|
|
else if (code === 10108){
|
|
showToast("充值金额过大,需要进行身份认证");
|
|
} else if (code === 4002) {
|
|
showToast("该手机号未注册账号");
|
|
} else if (code === 1404) {
|
|
showToast("用户ID不存在");
|
|
} else if (code === 10960) {
|
|
showToast("功能暂未开放");
|
|
} else if (code === 1412) {
|
|
showToast("请输入用户ID进行充值");
|
|
} else if (code === 4005) {
|
|
showToast("订单超时,请重新进入页面操作!");
|
|
} else if (code === 7064) {
|
|
showToast("你的账号已被封禁,无法充值!");
|
|
} else {
|
|
showToast(message);
|
|
}
|
|
})
|
|
.catch((err: any) => {
|
|
reject(err);
|
|
});
|
|
});
|
|
};
|
|
|
|
|
|
const prizeList = computed(() => {
|
|
return payLsit.value;
|
|
});
|
|
|
|
const receiveUserInfo = computed(() => {
|
|
return receiveUser.value;
|
|
});
|
|
|
|
return { openId, dataId, channel, getChargeprod, getChargeUser, prizeList, receiveUserInfo, selectItem, selectItemIndex, setSelectIndex, payRequest, initParams };
|
|
});
|
|
|
|
export default pay; |