diff --git a/app/(components)/RazorpayButton.tsx b/app/(components)/RazorpayButton.tsx new file mode 100644 index 0000000..ef9ed49 --- /dev/null +++ b/app/(components)/RazorpayButton.tsx @@ -0,0 +1,34 @@ +import { useEffect, useState } from 'react'; + +export default function RazorpayButton() { + const [mounted, setMounted] = useState(false); + const [buttonId, setButtonId] = useState(null); + + useEffect(() => setMounted(true), []); + + useEffect(() => { + fetch("/api/getButtonId") + .then((res) => res.json()) + .then((data) => setButtonId(data.buttonId)); + }, []); + + useEffect(() => { + if (buttonId) { + const scriptElement = document.createElement("script"); + const formElement = document.getElementById("donateForm"); + + scriptElement.setAttribute( + "src", + "https://checkout.razorpay.com/v1/payment-button.js" + ); + + scriptElement.setAttribute("data-payment_button_id", buttonId); + + if (formElement) { + formElement.appendChild(scriptElement); + } + } + }, [mounted, buttonId]); + + return mounted ?
: null; +} diff --git a/app/giving/page.tsx b/app/giving/page.tsx index d1fac4c..32a6c23 100644 --- a/app/giving/page.tsx +++ b/app/giving/page.tsx @@ -5,6 +5,7 @@ import { makeRazorpayPayment, makeStripePayment } from "../../pages/api/hello"; import { getCheckoutSession } from "./getCheckoutSession"; import { Stripe } from "stripe"; import getStripe from "./getStripe"; +import RazorpayButton from "../(components)/RazorpayButton"; function Giving() { const [currentInputFieldValue, setCurrentInputFieldValue] = @@ -124,6 +125,8 @@ function Giving() { setIsDonateBtnLoading(false); }; + + return (