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!
122 lines (121 loc) • 6.67 kB
JavaScript
;
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.SslCommerzGateway = void 0;
var sslcommerz_1 = require("sslcommerz");
var PaymentError_1 = require("../errors/PaymentError");
var base_gateway_1 = require("./base.gateway");
var SslCommerzGateway = /** @class */ (function (_super) {
__extends(SslCommerzGateway, _super);
function SslCommerzGateway(config) {
var _this = _super.call(this) || this;
_this.storeId = config.storeId;
_this.storePassword = config.storePassword;
_this.isLive = config.isLive || false;
return _this;
}
SslCommerzGateway.prototype.processPayment = function (data) {
return __awaiter(this, void 0, void 0, function () {
var sslcommerzData, sslcommerz, response, gatewayPageUrl, error_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
sslcommerzData = this.mapToSslCommerz(data);
sslcommerz = new sslcommerz_1.SslCommerzPayment(this.storeId, this.storePassword, this.isLive);
return [4 /*yield*/, sslcommerz.init(sslcommerzData)];
case 1:
response = _a.sent();
gatewayPageUrl = response === null || response === void 0 ? void 0 : response.GatewayPageURL;
if (!gatewayPageUrl) {
throw new PaymentError_1.PaymentError(500, 'SSL Commerz session was not successful. No GatewayPageURL returned.');
}
return [2 /*return*/, gatewayPageUrl];
case 2:
error_1 = _a.sent();
if (error_1 instanceof PaymentError_1.PaymentError) {
throw error_1;
}
throw new PaymentError_1.PaymentError(500, "Failed to process SSL Commerz payment: ".concat(error_1.message), error_1);
case 3: return [2 /*return*/];
}
});
});
};
SslCommerzGateway.prototype.mapToSslCommerz = function (data) {
return {
total_amount: data.amount,
currency: data.currency,
tran_id: data.transactionId,
success_url: data.urls.success,
fail_url: data.urls.fail,
cancel_url: data.urls.cancel,
ipn_url: data.urls.ipn,
product_name: data.product.name,
product_category: data.product.category || 'default',
product_profile: 'default',
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,
shipping_method: 'NO',
};
};
return SslCommerzGateway;
}(base_gateway_1.BaseGateway));
exports.SslCommerzGateway = SslCommerzGateway;