diff --git a/src/api/wallet.ts b/src/api/wallet.ts index f3d812f..2b356a9 100644 --- a/src/api/wallet.ts +++ b/src/api/wallet.ts @@ -16,10 +16,12 @@ interface PaymentBody { export async function sendPayment({ body, - fromSquiz + fromSquiz, + paymentPurpose, }: { body: PaymentBody; fromSquiz: boolean; + paymentPurpose: "paycart" | "replenishwallet"; }): Promise<[SendPaymentResponse | null, string?]> { try { const sendPaymentResponse = await makeRequest< @@ -42,7 +44,7 @@ export async function sendPayment({ }, phoneNumber: "79000000000", login: "login_test", - returnUrl: `https://${isStaging}hub.pena.digital/afterpay?from=${fromSquiz ? "quiz" : "hub"}`, + returnUrl: `https://${isStaging}hub.pena.digital/afterpay?from=${fromSquiz ? "quiz" : "hub"}&purpose=${paymentPurpose}`, ...body } }); diff --git a/src/pages/AfterPay/index.tsx b/src/pages/AfterPay/index.tsx index 65db29c..043a6ee 100644 --- a/src/pages/AfterPay/index.tsx +++ b/src/pages/AfterPay/index.tsx @@ -1,16 +1,44 @@ -import { Box, Button, Typography, useTheme, useMediaQuery } from "@mui/material" -import wallet_icon from "@root/assets/Icons/ColorWallet.svg" +import { Box, Button, Typography, useTheme, useMediaQuery } from "@mui/material"; +import { payCart } from "@root/api/cart"; +import wallet_icon from "@root/assets/Icons/ColorWallet.svg"; import { Link } from "react-router-dom"; -//Привет :) + + +const minute = 1000 * 60; + const { domain, pathname } = (() => { const params = new URLSearchParams(window.location.search); const from = params.get("from") || "hub"; + const purpose = params.get("purpose"); + + if (purpose === "paycart") { + const payCartPendingRequestDeadline = localStorage.getItem("payCartPendingRequestDeadline"); + const deadline = payCartPendingRequestDeadline + ? Number(payCartPendingRequestDeadline) + : Date.now() + 20 * minute; + + localStorage.setItem("payCartPendingRequestDeadline", deadline.toString()); + + tryPayCart(); + + async function tryPayCart() { + const [, payCartError] = await payCart(); + + if (!payCartError || Date.now() > deadline) { + localStorage.removeItem("payCartPendingRequestDeadline"); + return; + } + + setTimeout(tryPayCart, minute / 2); + } + } + const host = window.location.hostname; return { domain: (host.includes("s") ? "s" : "") + from, pathname: from === "hub" ? "/wallet" : "" - } + }; })(); export default () => { @@ -67,5 +95,5 @@ export default () => { >На главную - ) -} + ); +}; diff --git a/src/pages/Payment/Payment.tsx b/src/pages/Payment/Payment.tsx index 5cdf933..5b96675 100644 --- a/src/pages/Payment/Payment.tsx +++ b/src/pages/Payment/Payment.tsx @@ -68,8 +68,7 @@ export default function Payment() { const navigate = useNavigate(); const handleCustomBackNavigation = useHistoryTracker(); - const notEnoughMoneyAmount = - (location.state?.notEnoughMoneyAmount as number) ?? 0; + const notEnoughMoneyAmount = (location.state?.notEnoughMoneyAmount as number) ?? 0; const paymentValue = parseFloat(paymentValueField) * 100; @@ -103,6 +102,7 @@ export default function Payment() { type: selectedPaymentMethod, amount: Number(paymentValueField) * 100, }, + paymentPurpose: notEnoughMoneyAmount ? "paycart" : "replenishwallet", }); if (sendPaymentError) { @@ -120,7 +120,7 @@ export default function Payment() { return; } - console.log(paymentValueField); + if (Number(paymentValueField) < 900) { enqueueSnackbar("Минимальная сумма 900р");