Files
paidui-wechat/src/store/pay.ts
T
2023-04-19 18:03:28 +08:00

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;