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;