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(""); const dataId = ref(""); const channel = ref(""); const initParams = (data:any) => { openId.value = data.openId || ""; dataId.value = data.dataId || ""; channel.value = data.channel || ""; }; const payLsit = ref>([]); const receiveUser = ref({}); 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({}); 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;