feat(MED-100): update montonio redirect

This commit is contained in:
2025-07-24 08:02:13 +03:00
parent 8633ac4bce
commit e59ad6af00
11 changed files with 261 additions and 166 deletions

View File

@@ -1,5 +1,7 @@
"use client";
import { useState } from "react";
import { Loader2 } from "lucide-react";
import { StoreCart, StoreCartLineItem } from "@medusajs/types"
import CartItems from "./cart-items"
import { Trans } from '@kit/ui/trans';
@@ -10,7 +12,6 @@ import {
CardHeader,
} from '@kit/ui/card';
import DiscountCode from "./discount-code";
import { useRouter } from "next/navigation";
import { initiatePaymentSession } from "@lib/data/cart";
import { formatCurrency } from "@/packages/shared/src/utils";
import { useTranslation } from "react-i18next";
@@ -27,9 +28,10 @@ export default function Cart({
analysisPackages: StoreCartLineItem[];
otherItems: StoreCartLineItem[];
}) {
const router = useRouter();
const { i18n: { language } } = useTranslation();
const [isInitiatingSession, setIsInitiatingSession] = useState(false);
const items = cart?.items ?? [];
if (!cart || items.length === 0) {
@@ -49,13 +51,18 @@ export default function Cart({
);
}
async function handlePayment() {
async function initiatePayment() {
setIsInitiatingSession(true);
const response = await initiatePaymentSession(cart!, {
provider_id: 'pp_system_default',
provider_id: 'pp_montonio_montonio',
});
if (response.payment_collection) {
const url = await handleNavigateToPayment({ language });
router.push(url);
const { payment_sessions } = response.payment_collection;
const paymentSessionId = payment_sessions![0]!.id;
const url = await handleNavigateToPayment({ language, paymentSessionId });
window.location.href = url;
} else {
setIsInitiatingSession(false);
}
}
@@ -102,7 +109,8 @@ export default function Cart({
</div>
<div>
<Button className="h-10" onClick={handlePayment}>
<Button className="h-10" onClick={initiatePayment} disabled={isInitiatingSession}>
{isInitiatingSession && <Loader2 className="w-4 h-4 mr-2 animate-spin" />}
<Trans i18nKey="cart:checkout.goToCheckout" />
</Button>
</div>