import { FlutterWaveButton, closePaymentModal } from "flutterwave-react-v3"; import React, { useState } from "react"; import { useNavigate } from "react-router-dom"; import { toast } from "react-toastify"; import usersService from "../../../services/UsersService"; import LoadingSpinner from "../../Spinners/LoadingSpinner"; function ThePaymentText({ value }) { return (

{value.description} Card

Bank **************{value.digits}

); } function AmountSection({ currency, amount, country }) { const formattedAmount = (Number(amount) / 100).toFixed(2); return (

Amount({currency})

{formattedAmount}
); } function TransactionFeeSection({ currency, fee, country }) { const formattedFee = (Number(fee) / 100).toFixed(2); return (

Transaction Fee

{formattedFee}
); } function TotalSection({ currency, amount, fee, country }) { const total = (Number(amount) + Number(fee)) / 100; const formattedTotal = total.toFixed(2); return (

Total

{formattedTotal}
); } function ConfirmAddFund({ confirmCredit, onClose, walletItem, setConfirmCredit, }) { const __confirmData = confirmCredit?.data; const __confirmCountry = walletItem?.country; const __confirmCardDetails = __confirmData.card ? JSON.parse(__confirmData.card) : ""; const apiURL = new usersService(); const navigate = useNavigate(); const [requestStatus, setRequestStatus] = useState({ message: "", loading: false, status: false, }); const config = { public_key: process.env.REACT_APP_FLUTTERWAVE_APIKEY, tx_ref: Date.now(), currency: "NGN", payment_options: "card,mobilemoney,ussd", customizations: { title: "WrenchBoard", description: "Topup Payment", logo: "https://st2.depositphotos.com/4403291/7418/v/450/depositphotos_74189661-stock-illustration-online-shop-log.jpg", }, }; const fwConfig = { ...config, text: "Proceed", callback: (response) => { onSuccessPayment(); closePaymentModal(); }, onClose: () => {}, }; const onSuccessPayment = () => { setRequestStatus({ message: "", loading: true, status: false }); const reqData = { amount: __confirmData?.account, currency: "NGN" }; apiURL .startTopUp(reqData) .then((res) => { if (res.data.internal_return < 0) { setRequestStatus({ message: "Could not finish transaction", loading: false, status: false, }); toast.success("Opps! something went wrong"); } else { setRequestStatus({ message: "Topup successful", loading: false, status: true, }); toast.success("Account Topup was successful"); setTimeout(() => { navigate("/my-wallet", { replace: true }); }, 1000); } }) .catch((err) => { setRequestStatus({ message: "Opps! An Error Occured", loading: false, status: false, }); toast.success("Opps! something went wrong"); }); }; const handlePrevCard = async () => { const { amount, credit_reference, currency } = __confirmData; const { card_uid } = __confirmCardDetails; const reqData = { amount: amount * 100, card_uid, credit_reference, currency, }; try { setConfirmCredit((prev) => ({ ...prev, show: { acceptConfirm: { loader: true }, }, })); const res = await apiURL.getPaidPrevCard(reqData); const _response = res.data; if (res.data.internal_return < 0) { setConfirmCredit((prev) => ({ ...prev, show: { acceptConfirm: { loader: false }, }, })); return; } setTimeout(() => { setConfirmCredit((prev) => ({ ...prev, show: { awaitConfirm: { loader: false, state: false }, acceptConfirm: { loader: false, state: true }, }, data: _response, })); }, 1500); } catch (error) { setConfirmCredit((prev) => ({ ...prev, show: { acceptConfirm: { loader: false }, }, })); console.log(error); } }; return (
{confirmCredit?.show?.awaitConfirm?.state && (
{__confirmCountry === "US" && (
{__confirmCardDetails ? ( ) : null}
)}

Reference No

{__confirmData?.credit_reference}
)}

{__confirmCountry === "US" && ( )} {__confirmCountry === "NG" && ( )}
); } export default ConfirmAddFund;