UNPKG

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!

131 lines (130 loc) • 6.98 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); 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.AamarPayGateway = void 0; var PaymentError_1 = require("../errors/PaymentError"); var base_gateway_1 = require("./base.gateway"); var AamarPayGateway = /** @class */ (function (_super) { __extends(AamarPayGateway, _super); function AamarPayGateway(config) { var _this = _super.call(this) || this; _this.storeId = config.storeId; _this.signatureKey = config.signatureKey; _this.serverUrl = config.serverUrl; return _this; } AamarPayGateway.prototype.processPayment = function (data) { return __awaiter(this, void 0, void 0, function () { var aamarpayData, response, responseData, paymentUrl, error_1; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); aamarpayData = this.mapToAamarPay(data); return [4 /*yield*/, fetch(this.serverUrl, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(aamarpayData), })]; case 1: response = _a.sent(); if (!response.ok) { throw new Error("HTTP error! status: ".concat(response.status)); } return [4 /*yield*/, response.json()]; case 2: responseData = _a.sent(); paymentUrl = responseData === null || responseData === void 0 ? void 0 : responseData.payment_url; if (!paymentUrl) { throw new PaymentError_1.PaymentError(500, 'Aamarpay session was not successful. No payment URL returned.'); } return [2 /*return*/, paymentUrl]; case 3: error_1 = _a.sent(); if (error_1 instanceof PaymentError_1.PaymentError) { throw error_1; } throw new PaymentError_1.PaymentError(500, "Failed to process Aamarpay payment: ".concat(error_1.message), error_1); case 4: return [2 /*return*/]; } }); }); }; AamarPayGateway.prototype.mapToAamarPay = function (data) { return { store_id: this.storeId, signature_key: this.signatureKey, tran_id: data.transactionId, amount: data.amount, currency: data.currency, success_url: data.urls.success, fail_url: data.urls.fail, cancel_url: data.urls.cancel, desc: data.product.description, cus_name: data.customer.name, cus_email: data.customer.email, cus_phone: data.customer.phone, cus_add1: data.customer.address.line1, cus_add2: data.customer.address.line2, cus_city: data.customer.address.city, cus_state: data.customer.address.state, cus_postcode: data.customer.address.postcode, cus_country: data.customer.address.country, type: 'json', }; }; return AamarPayGateway; }(base_gateway_1.BaseGateway)); exports.AamarPayGateway = AamarPayGateway;