возможность помнить кудав вернуться в квизе
Some checks failed
Deploy / CreateImage (push) Failing after 36s
Deploy / DeployService (push) Has been skipped

This commit is contained in:
Nastya 2025-06-09 17:13:51 +03:00
parent 0948e41294
commit ddc1467089
3 changed files with 36 additions and 15 deletions

@ -16,15 +16,25 @@ interface PaymentBody {
export const sendPayment = async ({ export const sendPayment = async ({
userId, userId,
wayback,
body, body,
fromSquiz, fromSquiz,
paymentPurpose, paymentPurpose,
}: { }: {
userId: string; userId: string;
wayback: string;
body: PaymentBody; body: PaymentBody;
fromSquiz: boolean; fromSquiz: boolean;
paymentPurpose: "paycart" | "replenishwallet"; paymentPurpose: "paycart" | "replenishwallet";
}): Promise<[SendPaymentResponse | null, string?]> => { }): 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 = { const reqeustBody = {
currency: "RUB", currency: "RUB",
bankCard: { bankCard: {
@ -36,9 +46,7 @@ export const sendPayment = async ({
}, },
phoneNumber: "79000000000", phoneNumber: "79000000000",
login: "login_test", login: "login_test",
returnUrl: `https://${isStaging}hub.pena.digital/afterpay?from=${ returnUrl,
fromSquiz ? "quiz" : "hub"
}&purpose=${paymentPurpose}&userid=${userId}`,
...body, ...body,
}; };

@ -20,6 +20,7 @@ export default () => {
const userId = useUserStore((state) => state.user?._id); const userId = useUserStore((state) => state.user?._id);
const [searchParams] = useSearchParams(); const [searchParams] = useSearchParams();
const paymentUserId = searchParams.get("userid"); const paymentUserId = searchParams.get("userid");
const wayback = searchParams.get("wayback");
useEffect(() => { useEffect(() => {
const from = searchParams.get("from") || "hub"; const from = searchParams.get("from") || "hub";
@ -70,9 +71,10 @@ export default () => {
const domain = (host.includes("s") ? "s" : "") + from; const domain = (host.includes("s") ? "s" : "") + from;
const pathname = from === "hub" ? "/tariffs" : "/list"; const pathname = from === "hub" ? "/tariffs" : "/list";
setRedirectUrl( let redirect = `https://${domain}.pena.digital${pathname}?afterpay=${true}&userid=${userId}`
`https://${domain}.pena.digital${pathname}?afterpay=${true}&userid=${userId}` if (wayback) redirect += `&wayback=${wayback}`
);
setRedirectUrl(redirect);
}, []); }, []);
return ( return (
@ -133,3 +135,5 @@ export default () => {
</Box> </Box>
); );
}; };
//https://shub.pena.digital/quizpayment?action=squizpay&dif=50000&data=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY4NDZlODc4hLWF1d__aACP1IpA&userid=6846e878c149e4d24ebf50f3&from=AI&wayback=ai_27964

@ -65,14 +65,18 @@ export default function Payment() {
const [sorryModalOpen, setSorryModalOpen] = useState<boolean>(false); const [sorryModalOpen, setSorryModalOpen] = useState<boolean>(false);
const [paymentValueField, setPaymentValueField] = useState<string>("0"); const [paymentValueField, setPaymentValueField] = useState<string>("0");
const [paymentLink, setPaymentLink] = useState<string>(""); const [paymentLink, setPaymentLink] = useState<string>("");
const [fromSquiz, setIsFromSquiz] = useState<boolean>(false);
const location = useLocation(); const location = useLocation();
const verificationStatus = useUserStore((state) => state.verificationStatus); const verificationStatus = useUserStore((state) => state.verificationStatus);
const userId = useUserStore((state) => state.userId); const userId = useUserStore((state) => state.userId);
const navigate = useNavigate(); const navigate = useNavigate();
const handleCustomBackNavigation = useHistoryTracker(); const handleCustomBackNavigation = useHistoryTracker();
const {diffMoney, setNewDiff} = useDiffMoney()
const [fromSquiz, setIsFromSquiz] = useState<boolean>(false);
const [waybackToSomeSite, setWaybackToSomeSite] = useState<string>("");
const { diffMoney, setNewDiff } = useDiffMoney()
const notEnoughMoneyAmount = const notEnoughMoneyAmount =
(location.state?.notEnoughMoneyAmount as number) ?? 0; (location.state?.notEnoughMoneyAmount as number) ?? 0;
@ -81,12 +85,12 @@ export default function Payment() {
bigDecimal.multiply(parseFloat(paymentValueField), 100) bigDecimal.multiply(parseFloat(paymentValueField), 100)
); );
useEffect(() => { useEffect(() => {
if (diffMoney > 0) { if (diffMoney > 0) {
setNewDiff(0) setNewDiff(0);
setPaymentValueField((diffMoney / 100).toString()) setPaymentValueField((diffMoney / 100).toString());
} }
}, [diffMoney]) }, [diffMoney])
useLayoutEffect(() => { useLayoutEffect(() => {
setPaymentValueField((notEnoughMoneyAmount / 100).toString()); setPaymentValueField((notEnoughMoneyAmount / 100).toString());
@ -96,10 +100,14 @@ export default function Payment() {
setIsFromSquiz(true); setIsFromSquiz(true);
setPaymentValueField((Number(params.get("dif") || "0") / 100).toString()); setPaymentValueField((Number(params.get("dif") || "0") / 100).toString());
} }
const wayback = params.get("wayback");
if (wayback) setWaybackToSomeSite(wayback);
navigate(`/payment`, { navigate(`/payment`, {
replace: true, replace: true,
}); });
}, [ ]); }, []);
async function handleChoosePaymentClick() { async function handleChoosePaymentClick() {
if (!selectedPaymentMethod) { if (!selectedPaymentMethod) {
@ -116,6 +124,7 @@ export default function Payment() {
const [sendPaymentResponse, sendPaymentError] = await sendPayment({ const [sendPaymentResponse, sendPaymentError] = await sendPayment({
userId: userId ?? "", userId: userId ?? "",
fromSquiz, fromSquiz,
wayback: waybackToSomeSite,
body: { body: {
type: selectedPaymentMethod, type: selectedPaymentMethod,
amount: Number( amount: Number(