"use client" import type React from "react" import { useState } from "react" import { useRouter } from "next/navigation" import { useCart } from "@/contexts/cart-context" import { Button } from "@/components/ui/button" import { Label } from "@/components/ui/label" import { Textarea } from "@/components/ui/textarea" import { CheckCircle2, ExternalLink } from "lucide-react" import Cookies from "js-cookie" const setTotalPriceCookie = (totalPrice: number) => { Cookies.set("totalPrice", totalPrice.toString(), { expires: 1 }) // Expires in 1 day } export function CheckoutForm() { const [address, setAddress] = useState("") const [isProcessing, setIsProcessing] = useState(false) const [isOrderPlaced, setIsOrderPlaced] = useState(false) const [step, setStep] = useState(0) const [paymentLink, setPaymentLink] = useState("") const [error, setError] = useState(null) const router = useRouter() const { items, clearCart, getTotalItems } = useCart() const totalPrice = items.reduce((sum, item) => sum + item.price * item.quantity, 0) const handleAddressSubmit = (e: React.FormEvent) => { e.preventDefault() if (address.trim()) { setStep(1) } } const handleInitiatePayment = async () => { setIsProcessing(true) setError(null) try { setTotalPriceCookie(totalPrice) const response = await fetch("http://localhost:8081/api/pay", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ amount: totalPrice, address: address, items: items.map((item) => ({ id: item.id, title: item.title, price: item.price, quantity: item.quantity, })), }), }) if (!response.ok) { throw new Error("Ошибка при создании платежа") } const data = await response.json() if (!data.paymentUrl) { throw new Error("Не получена ссылка на оплату") } setPaymentLink(data.paymentUrl) setStep(2) } catch (error) { console.error("Error generating payment link:", error) setError("Не удалось создать ссылку для оплаты. Пожалуйста, попробуйте еще раз.") } finally { setIsProcessing(false) } } const handlePaymentConfirmation = async () => { setIsProcessing(true) setError(null) try { // Here you would typically check the payment status with your backend clearCart() setIsOrderPlaced(true) } catch (error) { console.error("Error verifying payment:", error) setError("Не удалось проверить статус оплаты. Пожалуйста, попробуйте еще раз.") } finally { setIsProcessing(false) } } if (getTotalItems() === 0) { return (

Ваша корзина пуста. Добавьте товары перед оформлением заказа.

) } if (isOrderPlaced) { return (

Заказ успешно оформлен!

Спасибо за покупку. Ваш заказ будет доставлен по указанному адресу.

) } return (
{error &&
{error}
} {step === 0 && (

Адрес доставки