import {PaymentIntention} from "@/interfaces/paymob"; import {DurationUnit} from "@/interfaces/paypal"; import {User} from "@/interfaces/user"; import axios from "axios"; import {useRouter} from "next/router"; import {useState} from "react"; import Button from "./Low/Button"; import Input from "./Low/Input"; import Modal from "./Modal"; interface Props { user: User; currency: string; price: number; setIsPaymentLoading: (v: boolean) => void; duration: number; duration_unit: DurationUnit; onSuccess: (duration: number, duration_unit: DurationUnit) => void; } export default function PaymobPayment({user, price, setIsPaymentLoading, currency, duration, duration_unit, onSuccess}: Props) { const [isLoading, setIsLoading] = useState(false); const router = useRouter(); const handleCardPayment = async () => { try { setIsPaymentLoading(true); const paymentIntention: PaymentIntention = { amount: price * 1000, currency: "OMR", items: [], payment_methods: [], customer: { email: user.email, first_name: user.name.split(" ")[0], last_name: [...user.name.split(" ")].pop() || "N/A", extras: { re: user.id, }, }, billing_data: { apartment: "N/A", building: "N/A", country: user.demographicInformation?.country || "N/A", email: user.email, first_name: user.name.split(" ")[0], last_name: [...user.name.split(" ")].pop() || "N/A", floor: "N/A", phone_number: user.demographicInformation?.phone || "N/A", state: "N/A", street: "N/A", }, extras: { userID: user.id, duration, duration_unit, }, }; const response = await axios.post<{iframeURL: string}>(`/api/paymob`, paymentIntention); router.push(response.data.iframeURL); } catch (error) { console.error("Error starting card payment process:", error); } }; return ( <> ); }