UNPKG

paychangu-js

Version:

Paychangu JavaScript SDK for easy integration of payment services

77 lines (76 loc) 3.38 kB
"use strict"; 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 }); exports.PaychanguPopup = void 0; const constants_1 = require("../core/constants"); const config_1 = require("../core/config"); const validation_1 = require("../utils/validation"); const errors_1 = require("../utils/errors"); const helpers_1 = require("../utils/helpers"); class PaychanguPopup { constructor() { this.scriptLoaded = false; this.loadScript(); } static getInstance() { if (!PaychanguPopup.instance) { PaychanguPopup.instance = new PaychanguPopup(); } return PaychanguPopup.instance; } loadScript() { if (!document.querySelector(`script[src="${constants_1.PAYCHANGU_SCRIPT_URL}"]`)) { const script = document.createElement('script'); script.src = constants_1.PAYCHANGU_SCRIPT_URL; script.async = true; script.onload = () => { this.scriptLoaded = true; }; script.onerror = () => { throw new errors_1.PaychanguError('Failed to load Paychangu script'); }; document.body.appendChild(script); } } initialize(config) { try { (0, validation_1.validateConfig)(config); if (!(0, helpers_1.validateUrl)(config.callback_url) || !(0, helpers_1.validateUrl)(config.return_url)) { throw new errors_1.PaychanguError('Invalid URL format for callback_url or return_url'); } (0, config_1.setConfig)(config); } catch (error) { if (error instanceof errors_1.PaychanguError) { console.error('Paychangu initialization error:', error.message); } throw error; } } makePayment() { return __awaiter(this, void 0, void 0, function* () { const config = (0, config_1.getConfig)(); if (!config) { throw new errors_1.PaychanguError('PaychanguPopup not initialized. Call initialize() first.'); } if (!this.scriptLoaded) { throw new errors_1.PaychanguError('PaychanguCheckout script is still loading. Please wait.'); } return (0, helpers_1.retry)(() => __awaiter(this, void 0, void 0, function* () { if (typeof window.PaychanguCheckout !== 'function') { throw new errors_1.PaychanguError('PaychanguCheckout not loaded. Please wait for the script to load.'); } window.PaychanguCheckout(config); }), 5, 500); }); } } exports.PaychanguPopup = PaychanguPopup;