paychangu-js
Version:
Paychangu JavaScript SDK for easy integration of payment services
77 lines (76 loc) • 3.38 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 });
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;