import {PaymentIntention} from "@/interfaces/paymob"; import {DurationUnit} from "@/interfaces/paypal"; import {User} from "@/interfaces/user"; import axios from "axios"; 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; packageID: string; setIsPaymentLoading: (v: boolean) => void; duration: number; duration_unit: DurationUnit; onSuccess: (duration: number, duration_unit: DurationUnit) => void; } export default function PaymobPayment({user, price, packageID, setIsPaymentLoading, currency, duration, duration_unit, onSuccess}: Props) { const [isLoading, setIsLoading] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false); const [firstName, setFirstName] = useState(user.name.split(" ")[0]); const [lastName, setLastName] = useState([...user.name.split(" ")].pop()); const [street, setStreet] = useState(""); const [apartment, setApartment] = useState(""); const [building, setBuilding] = useState(""); const [state, setState] = useState(""); const [floor, setFloor] = useState(""); const handleCardPayment = async () => { try { setIsPaymentLoading(true); const paymentIntention: PaymentIntention = { amount: price * 1000, currency: "OMR", items: [], payment_methods: [1540], 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: apartment || "N/A", building: 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: floor || "N/A", phone_number: user.demographicInformation?.phone || "N/A", state: state || "N/A", street: street || "N/A", }, extras: { userID: user.id, packageID: packageID, }, }; const response = await axios.post<{iframeURL: string}>(`/api/paymob`, paymentIntention); window.open(response.data.iframeURL, "_blank", "noopener,noreferrer"); } catch (error) { console.error("Error starting card payment process:", error); } }; return ( <> setIsModalOpen(false)}>
); }