fix: payment

This commit is contained in:
IlyaDoronin 2024-04-01 17:48:22 +03:00
parent 1170b0bdc6
commit 822a6a2535
2 changed files with 102 additions and 85 deletions

@ -44,6 +44,8 @@ const { domain, pathname } = (() => {
export default () => { export default () => {
const theme = useTheme(); const theme = useTheme();
const phone = useMediaQuery(theme.breakpoints.down(375)); const phone = useMediaQuery(theme.breakpoints.down(375));
const redirectUrl = new URL(`https://${domain}.pena.digital${pathname}`);
redirectUrl.searchParams.append("afterpay", "true");
return ( return (
<Box <Box
@ -89,7 +91,7 @@ export default () => {
>Ваш платеж принят и в течение 10 минут товары будут зачислены</Typography> >Ваш платеж принят и в течение 10 минут товары будут зачислены</Typography>
<Button <Button
component={Link} component={Link}
to={`https://${domain}.pena.digital${pathname}`} to={redirectUrl.toString()}
replace={true} replace={true}
variant="pena-contained-dark" variant="pena-contained-dark"
>На главную</Button> >На главную</Button>

@ -1,70 +1,87 @@
import { useEffect, useState } from "react" import { useEffect, useState } from "react";
import axios, { AxiosResponse } from "axios" import axios, { AxiosResponse } from "axios";
import { ApologyPage } from "../ApologyPage" import { ApologyPage } from "../ApologyPage";
import { useNavigate } from "react-router-dom" import { useNavigate } from "react-router-dom";
import { clearAuthToken, getAuthToken, getMessageFromFetchError, setAuthToken, useUserAccountFetcher, useUserFetcher } from "@frontend/kitui"; import {
import { clearUserData, setUser, setUserAccount, setUserId, useUserStore } from "@root/stores/user"; clearAuthToken,
getMessageFromFetchError,
setAuthToken,
useUserAccountFetcher,
useUserFetcher,
getAuthToken,
} from "@frontend/kitui";
import {
clearUserData,
setUser,
setUserAccount,
setUserId,
useUserStore,
} from "@root/stores/user";
import { logout } from "@root/api/auth"; import { logout } from "@root/api/auth";
import { clearCustomTariffs } from "@root/stores/customTariffs"; import { clearCustomTariffs } from "@root/stores/customTariffs";
import { clearTickets } from "@root/stores/tickets"; import { clearTickets } from "@root/stores/tickets";
function refresh(token: string) { function refresh(token: string) {
return axios<never, AxiosResponse<{ accessToken: string; }>>(process.env.REACT_APP_DOMAIN + "/auth/refresh", { return axios<never, AxiosResponse<{ accessToken: string }>>(
process.env.REACT_APP_DOMAIN + "/auth/refresh",
{
headers: { headers: {
"Authorization": "Bearer " + token, Authorization: "Bearer " + token,
"Content-Type": "application/json", "Content-Type": "application/json",
}, },
method: "POST" method: "POST",
}); }
);
} }
const params = new URLSearchParams(window.location.search) const params = new URLSearchParams(window.location.search);
const action = params.get("action") const action = params.get("action");
const dif = params.get("dif") const dif = params.get("dif");
const token = params.get("data") const token = params.get("data");
const userId = params.get("userid") const userId = params.get("userid");
let first = true;
let first = true
export default function QuizPayment() { export default function QuizPayment() {
const navigate = useNavigate() const navigate = useNavigate();
const [message, setMessage] = useState("Идёт загрузка") const [message, setMessage] = useState("Идёт загрузка");
const user = useUserStore((state) => state.user); const user = useUserStore((state) => state.user);
useEffect( useEffect(
function redirectIfSignedIn() { function redirectIfSignedIn() {
console.log(user) if (!first && user?._id === userId)
if (user && !first && user._id === userId) navigate(`/payment?action=${action}&dif=${dif}`, { replace: true }) navigate(`/payment?action=${action}&dif=${dif}`, { replace: true });
}, },
[navigate, user] [navigate, user]
); );
console.log("Я начал работать") console.log("Я начал работать");
if (first) { if (first) {
history.pushState(null, document.title, "/quizpayment"); history.pushState(null, document.title, "/quizpayment");
try { try {
first = false first = false;
if (user?._id === userId) {
return;
}
if (action && dif && token) { if (action && dif && token) {
(async () => { (async () => {
// const data = await refresh(token) // const data = await refresh(token)
// console.log(token) // console.log(token)
console.log(getAuthToken())
if (getAuthToken()) { if (getAuthToken()) {
await logout() await logout();
clearAuthToken(); clearAuthToken();
clearUserData(); clearUserData();
clearCustomTariffs(); clearCustomTariffs();
clearTickets(); clearTickets();
} }
setAuthToken(token)
setAuthToken(token);
// setAuthToken(data.data.accessToken) // setAuthToken(data.data.accessToken)
console.log("делаем юзера ", userId) console.log("делаем юзера ", userId);
setUserId(userId); setUserId(userId);
// useUserFetcher({ // useUserFetcher({
@ -77,8 +94,8 @@ history.pushState(null, document.title, "/quizpayment");
// }, // },
// onError: () => { }, // onError: () => { },
// }) // })
return return;
})() })();
} else { } else {
var link = document.createElement("a"); var link = document.createElement("a");
link.href = "https://quiz.pena.digital/tariffs"; link.href = "https://quiz.pena.digital/tariffs";
@ -86,8 +103,8 @@ history.pushState(null, document.title, "/quizpayment");
link.click(); link.click();
} }
} catch (e) { } catch (e) {
console.log(e) console.log(e);
setMessage("Произошла ошибка") setMessage("Произошла ошибка");
var link = document.createElement("a"); var link = document.createElement("a");
link.href = "https://quiz.pena.digital/tariffs"; link.href = "https://quiz.pena.digital/tariffs";
document.body.appendChild(link); document.body.appendChild(link);
@ -95,7 +112,5 @@ history.pushState(null, document.title, "/quizpayment");
} }
} }
return ( return <ApologyPage message={message} />;
<ApologyPage message={message} /> }
)
};