2024-08-11 04:42:49 +00:00
|
|
|
|
import { cartApi } from "@api/cart";
|
|
|
|
|
import { useUserStore } from "@/stores/user";
|
2024-08-03 09:19:35 +00:00
|
|
|
|
import moment from "moment";
|
|
|
|
|
import { enqueueSnackbar } from "notistack";
|
|
|
|
|
import { useEffect } from "react";
|
2024-08-18 09:24:27 +00:00
|
|
|
|
import { redirect, useNavigate, useSearchParams } from "react-router-dom";
|
2024-08-11 04:42:49 +00:00
|
|
|
|
import { calcTimeOfReadyPayCart, cancelPayCartProcess, startPayCartProcess, useNotEnoughMoneyAmount } from "@/stores/notEnoughMoneyAmount";
|
2024-08-18 09:24:27 +00:00
|
|
|
|
import { startCC } from "@/stores/cc";
|
2024-08-03 09:19:35 +00:00
|
|
|
|
|
|
|
|
|
export const useAfterPay = () => {
|
|
|
|
|
const navigate = useNavigate();
|
|
|
|
|
const [searchParams, setSearchParams] = useSearchParams();
|
|
|
|
|
const userId = useUserStore(store => store.userId)
|
2024-08-11 04:42:49 +00:00
|
|
|
|
const userAccount = useUserStore(state => state.userAccount);
|
|
|
|
|
const siteReadyPayCart = useNotEnoughMoneyAmount(state => state.siteReadyPayCart);
|
2024-08-03 09:19:35 +00:00
|
|
|
|
|
|
|
|
|
const purpose = searchParams.get("purpose");
|
2024-08-11 04:42:49 +00:00
|
|
|
|
const paymentUserId = searchParams.get("userid");
|
2024-08-18 09:24:27 +00:00
|
|
|
|
const currentCC = searchParams.get("cc");
|
2024-08-11 04:42:49 +00:00
|
|
|
|
|
2024-08-03 09:19:35 +00:00
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
//Звёзды сошлись, будем оплачивать корзину
|
2024-08-11 04:42:49 +00:00
|
|
|
|
if (paymentUserId && paymentUserId === userId) {
|
|
|
|
|
|
2024-08-03 09:19:35 +00:00
|
|
|
|
if (purpose === "paycart") {
|
2024-08-18 09:24:27 +00:00
|
|
|
|
setSearchParams({}, { replace: true });
|
|
|
|
|
if (currentCC) { startCC() }
|
2024-08-03 09:19:35 +00:00
|
|
|
|
(async () => {
|
|
|
|
|
|
|
|
|
|
//Проверяем можем ли мы оплатить корзину здесь и сейчас
|
2024-08-11 04:42:49 +00:00
|
|
|
|
const [, payCartError] = await cartApi.pay();
|
2024-08-03 09:19:35 +00:00
|
|
|
|
|
|
|
|
|
if (payCartError) {
|
2024-08-18 09:24:27 +00:00
|
|
|
|
console.log("попытка оплаты не удалась")
|
2024-08-11 04:42:49 +00:00
|
|
|
|
//Не получилось купить корзину. Ставим флаг, что сайт в состоянии ожидания пополнения счёта для оплаты
|
|
|
|
|
startPayCartProcess(paymentUserId)
|
2024-08-03 09:19:35 +00:00
|
|
|
|
} else {
|
|
|
|
|
enqueueSnackbar("Товары успешно приобретены")
|
2024-08-18 09:24:27 +00:00
|
|
|
|
if (currentCC) navigate("tariffs")
|
2024-08-11 04:42:49 +00:00
|
|
|
|
cancelPayCartProcess()
|
|
|
|
|
}
|
|
|
|
|
})()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}, [purpose, paymentUserId])
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (userId !== null && siteReadyPayCart !== null && siteReadyPayCart[userId] !== undefined) {
|
|
|
|
|
const deadline = siteReadyPayCart[userId]
|
|
|
|
|
if (calcTimeOfReadyPayCart(deadline)) {
|
|
|
|
|
|
|
|
|
|
//Время ещё не вышло. У нас стоит флаг покупать корзину если время не вышло.
|
|
|
|
|
(async () => {
|
|
|
|
|
console.log("Время ещё не вышло. У нас стоит флаг покупать корзину если время не вышло.")
|
|
|
|
|
const [, payCartError] = await cartApi.pay();
|
|
|
|
|
|
|
|
|
|
if (!payCartError) {
|
|
|
|
|
enqueueSnackbar("Товары успешно приобретены")
|
|
|
|
|
cancelPayCartProcess()
|
2024-08-03 09:19:35 +00:00
|
|
|
|
}
|
|
|
|
|
})()
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-08-11 04:42:49 +00:00
|
|
|
|
}, [userAccount, userId, siteReadyPayCart])
|
|
|
|
|
}
|