From f0f49a3bc0fe2bca9c896192bec2b2fd706122de Mon Sep 17 00:00:00 2001 From: Nastya Date: Mon, 9 Jun 2025 17:13:51 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20=D0=BF=D0=BE=D0=BC=D0=BD=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BA=D1=83=D0=B4=D0=B0=D0=B2=20=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=BD=D1=83=D1=82=D1=8C=D1=81=D1=8F=20=D0=B2=20=D0=BA=D0=B2?= =?UTF-8?q?=D0=B8=D0=B7=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/wallet.ts | 14 +++++++++++--- src/pages/AfterPay/index.tsx | 10 +++++++--- src/pages/Payment/Payment.tsx | 27 ++++++++++++++++++--------- 3 files changed, 36 insertions(+), 15 deletions(-) diff --git a/src/api/wallet.ts b/src/api/wallet.ts index dd25e4b..3a473d0 100644 --- a/src/api/wallet.ts +++ b/src/api/wallet.ts @@ -16,15 +16,25 @@ interface PaymentBody { export const sendPayment = async ({ userId, + wayback, body, fromSquiz, paymentPurpose, }: { userId: string; + wayback: string; body: PaymentBody; fromSquiz: boolean; paymentPurpose: "paycart" | "replenishwallet"; }): Promise<[SendPaymentResponse | null, string?]> => { + + +let returnUrl= `https://${isStaging}hub.pena.digital/afterpay?from=${ + fromSquiz ? "quiz" : "hub" +}&purpose=${paymentPurpose}&userid=${userId}` + +if (wayback) returnUrl += `&wayback=${wayback}` + const reqeustBody = { currency: "RUB", bankCard: { @@ -36,9 +46,7 @@ export const sendPayment = async ({ }, phoneNumber: "79000000000", login: "login_test", - returnUrl: `https://${isStaging}hub.pena.digital/afterpay?from=${ - fromSquiz ? "quiz" : "hub" - }&purpose=${paymentPurpose}&userid=${userId}`, + returnUrl, ...body, }; diff --git a/src/pages/AfterPay/index.tsx b/src/pages/AfterPay/index.tsx index cc827c6..6fc5036 100644 --- a/src/pages/AfterPay/index.tsx +++ b/src/pages/AfterPay/index.tsx @@ -20,6 +20,7 @@ export default () => { const userId = useUserStore((state) => state.user?._id); const [searchParams] = useSearchParams(); const paymentUserId = searchParams.get("userid"); + const wayback = searchParams.get("wayback"); useEffect(() => { const from = searchParams.get("from") || "hub"; @@ -70,9 +71,10 @@ export default () => { const domain = (host.includes("s") ? "s" : "") + from; const pathname = from === "hub" ? "/tariffs" : "/list"; - setRedirectUrl( - `https://${domain}.pena.digital${pathname}?afterpay=${true}&userid=${userId}` - ); + let redirect = `https://${domain}.pena.digital${pathname}?afterpay=${true}&userid=${userId}` + if (wayback) redirect += `&wayback=${wayback}` + + setRedirectUrl(redirect); }, []); return ( @@ -133,3 +135,5 @@ export default () => { ); }; + +//https://shub.pena.digital/quizpayment?action=squizpay&dif=50000&data=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY4NDZlODc4hLWF1d__aACP1IpA&userid=6846e878c149e4d24ebf50f3&from=AI&wayback=ai_27964 \ No newline at end of file diff --git a/src/pages/Payment/Payment.tsx b/src/pages/Payment/Payment.tsx index c09005b..279dfdd 100644 --- a/src/pages/Payment/Payment.tsx +++ b/src/pages/Payment/Payment.tsx @@ -65,14 +65,18 @@ export default function Payment() { const [sorryModalOpen, setSorryModalOpen] = useState(false); const [paymentValueField, setPaymentValueField] = useState("0"); const [paymentLink, setPaymentLink] = useState(""); - const [fromSquiz, setIsFromSquiz] = useState(false); const location = useLocation(); const verificationStatus = useUserStore((state) => state.verificationStatus); const userId = useUserStore((state) => state.userId); const navigate = useNavigate(); const handleCustomBackNavigation = useHistoryTracker(); - const {diffMoney, setNewDiff} = useDiffMoney() + + const [fromSquiz, setIsFromSquiz] = useState(false); + const [waybackToSomeSite, setWaybackToSomeSite] = useState(""); + + + const { diffMoney, setNewDiff } = useDiffMoney() const notEnoughMoneyAmount = (location.state?.notEnoughMoneyAmount as number) ?? 0; @@ -81,12 +85,12 @@ export default function Payment() { bigDecimal.multiply(parseFloat(paymentValueField), 100) ); - useEffect(() => { - if (diffMoney > 0) { - setNewDiff(0) - setPaymentValueField((diffMoney / 100).toString()) - } - }, [diffMoney]) + useEffect(() => { + if (diffMoney > 0) { + setNewDiff(0); + setPaymentValueField((diffMoney / 100).toString()); + } + }, [diffMoney]) useLayoutEffect(() => { setPaymentValueField((notEnoughMoneyAmount / 100).toString()); @@ -96,10 +100,14 @@ export default function Payment() { setIsFromSquiz(true); setPaymentValueField((Number(params.get("dif") || "0") / 100).toString()); } + + const wayback = params.get("wayback"); + if (wayback) setWaybackToSomeSite(wayback); + navigate(`/payment`, { replace: true, }); - }, [ ]); + }, []); async function handleChoosePaymentClick() { if (!selectedPaymentMethod) { @@ -116,6 +124,7 @@ export default function Payment() { const [sendPaymentResponse, sendPaymentError] = await sendPayment({ userId: userId ?? "", fromSquiz, + wayback, body: { type: selectedPaymentMethod, amount: Number(