UNPKG

xpresspay

Version:
74 lines (70 loc) 2.34 kB
// Function to load the XpressPay script function loadXpressPayScript(ENV_MODE) { return new Promise((resolve, reject) => { if (document.getElementById("xpresspay-script")) { resolve(); return; } const script = document.createElement("script"); script.setAttribute( "src", ENV_MODE === "LIVE" ? "https://myxpresspay.com:8032/inlineXpressPayPop.js" : ENV_MODE === "DEBUG" ? "https://pgsandbox.xpresspayments.com:8020/inlineXpressPayPop.js" : ENV_MODE === "TEST" ? "https://test.xpresspayments.com:8032/inlineXpressPayPop.js" : "https://myxpresspay.com:8032/inlineXpressPayPop.js" ); script.setAttribute("id", "xpresspay-script"); script.onload = resolve; script.onerror = reject; document.head.appendChild(script); }); } function payWithXpressPay(config) { loadXpressPayScript(config.ENV_MODE) .then(() => { XpressPayPop.setup({ public_key: config.public_key, email: config.email, amount: config.amount, transactionId: config.transactionId || "" + String(Date.now()), currency: config.currency || "NGN", callbackUrl: config.callbackUrl, metadata: config.metadata, productId: config.productId, productDescription: config.productDescription, applyConviniencyCharge: config.applyConviniencyCharge, mode: config.mode, bodyColor: config.bodyColor, buttonColor: config.buttonColor, footerText: config.footerText, footerLink: config.footerLink, footerLogo: config.footerLogo, isRecurring: config.isRecurring, authorizationUrl: config.authorizationUrl, ENV_MODE: config.ENV_MODE || "DEBUG", DISPLAY_MODE: config.DISPLAY_MODE || "POPUP", onClose: config.onClose || (() => { console.log("Payment modal closed"); }), onSuccess: config.onSuccess || (() => { console.log("Payment successful"); }), onError: config.onError || ((error) => { console.error("Payment error:", error); }), }); }) .catch((error) => { console.error("Failed to load XpressPay script:", error); }); } module.exports = { payWithXpressPay, };