react-razorpay-magic
Version:
Integrate Razorpay Payment gateway in your react application.
66 lines • 2.7 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = require("react");
class Razorpay {
constructor(options) {
this.options = options;
if (typeof window !== "undefined")
this.rzrpayInstannce = new window.Razorpay(this.options);
}
on(event, callback) {
this.rzrpayInstannce.on(event, callback);
}
open() {
this.rzrpayInstannce.open();
}
}
const useRazorpay = (magicCheckout) => {
/* Constants */
const RAZORPAY_SCRIPT = magicCheckout
? "https://checkout.razorpay.com/v1/magic-checkout.js"
: "https://checkout.razorpay.com/v1/checkout.js";
const isClient = (0, react_1.useMemo)(() => typeof window !== "undefined", []);
const [isLoaded, setIsLoaded] = (0, react_1.useState)(false);
const checkScriptLoaded = (0, react_1.useCallback)(() => {
if (!isClient || !("Razorpay" in window))
return false;
return true;
}, []);
const loadScript = (0, react_1.useCallback)((scriptUrl) => {
if (!isClient)
return; // Don't execute this function if it's rendering on server side
return new Promise((resolve, reject) => {
const scriptTag = document.createElement("script");
scriptTag.src = scriptUrl;
scriptTag.onload = (ev) => {
setIsLoaded(true), resolve(ev);
};
scriptTag.onerror = (err) => reject(err);
document.body.appendChild(scriptTag);
});
}, []);
(0, react_1.useEffect)(() => {
if (!checkScriptLoaded()) {
(() => __awaiter(void 0, void 0, void 0, function* () {
try {
yield loadScript(RAZORPAY_SCRIPT);
}
catch (error) {
throw new Error(error);
}
}))();
}
}, []);
return [Razorpay, isLoaded];
};
exports.default = useRazorpay;
//# sourceMappingURL=index.js.map