central-gateway
Version:
Simplify payments in Bangladesh with one unified library for AamarPay, SSLCommerz, and bKash. Skip the hassle of multiple gateway documentations—our consistent API does it all for you!
138 lines (137 loc) • 7.34 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
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());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PaymentService = void 0;
var PaymentError_1 = require("./errors/PaymentError");
var PaymentService = /** @class */ (function () {
function PaymentService(config) {
this.gateways = new Map();
// Initialize gateways asynchronously
this.initializeGateways(config).catch(function (error) {
throw new PaymentError_1.PaymentError(500, "Failed to initialize payment gateways: ".concat(error.message));
});
}
/**
* Dynamically import and initialize payment gateways.
* @param config The payment gateway configuration.
*/
PaymentService.prototype.initializeGateways = function (config) {
return __awaiter(this, void 0, void 0, function () {
var AamarPayGateway, SslCommerzGateway, BkashGateway;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!config.aamarpay) return [3 /*break*/, 2];
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require('./gateways/aamarpay.gateway')); })];
case 1:
AamarPayGateway = (_a.sent()).AamarPayGateway;
this.gateways.set('aamarpay', new AamarPayGateway(config.aamarpay));
_a.label = 2;
case 2:
if (!config.sslcommerz) return [3 /*break*/, 4];
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require('./gateways/sslcommerz.gateway')); })];
case 3:
SslCommerzGateway = (_a.sent()).SslCommerzGateway;
this.gateways.set('sslcommerz', new SslCommerzGateway(config.sslcommerz));
_a.label = 4;
case 4:
if (!config.bkash) return [3 /*break*/, 6];
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require('./gateways/bkash.gateway')); })];
case 5:
BkashGateway = (_a.sent()).BkashGateway;
this.gateways.set('bkash', new BkashGateway(config.bkash));
_a.label = 6;
case 6: return [2 /*return*/];
}
});
});
};
/**
* Get a specific payment gateway instance.
* @param gatewayName The name of the payment gateway.
* @returns The gateway instance.
* @throws PaymentError if the gateway is not configured.
*/
PaymentService.prototype.getGateway = function (gatewayName) {
var gateway = this.gateways.get(gatewayName);
if (!gateway) {
throw new PaymentError_1.PaymentError(400, "Payment gateway ".concat(gatewayName, " is not configured"));
}
return gateway;
};
return PaymentService;
}());
exports.PaymentService = PaymentService;
__exportStar(require("./errors/PaymentError"), exports);
__exportStar(require("./types/interfaces"), exports);