ogenzo-widgets
Version:
Ogenzo Payment Node js Module
225 lines (224 loc) • 9.64 kB
JavaScript
"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());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.OgenzoPayment = void 0;
const axios_1 = __importDefault(require("axios"));
const libphonenumber_js_1 = require("libphonenumber-js");
class OgenzoPayment {
constructor(email, password, airtelWallet, mtnWallet) {
this.email = email;
this.password = password;
this.airtelWallet = airtelWallet;
this.mtnWallet = mtnWallet;
}
login() {
return __awaiter(this, void 0, void 0, function* () {
try {
const response = yield axios_1.default.post(" https://payments.ogenzo.ml/api/v1/login", {
email: this.email,
password: this.password
});
if (response.data.hasOwnProperty("error")) {
return response.data.error;
}
if (response.data.hasOwnProperty("data")) {
return response.data.data.token;
}
}
catch (error) {
return error.errno;
}
});
}
formatPhoneNumber(phone) {
let phoneNumber = libphonenumber_js_1.parsePhoneNumberFromString(phone, 'UG');
if (phoneNumber) {
if (phoneNumber.isValid()) {
return `0${phoneNumber.nationalNumber}`;
}
else {
return `Wrong Number Format`;
}
}
else {
return 'No number';
}
}
determineNetwork(phone) {
if (/(075)[0-9]{7}/.test(phone) || /(070)[0-9]{7}/.test(phone)) {
return 'Airtel';
}
else if (/(077)[0-9]{7}/.test(phone) || /(078)[0-9]{7}/.test(phone) || /(039)[0-9]{7}/.test(phone)) {
return 'MTN';
}
else {
return 'None';
}
}
determineRequestPayload(requestObj) {
return __awaiter(this, void 0, void 0, function* () {
let formatPhoneNumber = this.formatPhoneNumber(requestObj.phone);
if (formatPhoneNumber === 'Wrong Number Format' || formatPhoneNumber === 'No number') {
return formatPhoneNumber;
}
if (this.determineNetwork(formatPhoneNumber) === 'MTN') {
requestObj.slug = this.mtnWallet;
}
else if (this.determineNetwork(formatPhoneNumber) === 'Airtel') {
requestObj.slug = this.airtelWallet;
}
else {
return `${formatPhoneNumber} Network is Not yet Supported`;
}
return requestObj;
});
}
getDepositStatus(payload) {
return __awaiter(this, void 0, void 0, function* () {
try {
let token = yield this.login();
if (token === 'ENOTFOUND' || token[0] === 'invalid_credentials') {
return token;
}
let payloadObj = yield this.determineRequestPayload(payload);
const checkStatus = yield axios_1.default.post("https://payments.ogenzo.ml/api/v1/user/wallet/deposit/status", payloadObj, {
headers: {
Authorization: "Bearer " + token
}
});
if (checkStatus.data.hasOwnProperty("error")) {
return checkStatus.data.error;
}
if (checkStatus.data.hasOwnProperty("data")) {
return { status: checkStatus.status, data: checkStatus.data.data };
}
}
catch (error) {
return error;
}
});
}
getTransacionStatus(payload) {
return __awaiter(this, void 0, void 0, function* () {
try {
let token = yield this.login();
if (token === 'ENOTFOUND' || token[0] === 'invalid_credentials') {
return token;
}
let payloadObj = yield this.determineRequestPayload(payload);
const checkStatus = yield axios_1.default.post("https://payments.ogenzo.ml/api/v1/user/wallet/deposit/status", payloadObj, {
headers: {
Authorization: "Bearer " + token
}
});
if (checkStatus.data.hasOwnProperty("error")) {
return checkStatus.data.error;
}
if (checkStatus.data.hasOwnProperty("data")) {
return { status: checkStatus.status, data: checkStatus.data.data };
}
}
catch (error) {
return error;
}
});
}
getWithdrawStatus(payload) {
return __awaiter(this, void 0, void 0, function* () {
try {
let token = yield this.login();
if (token === 'ENOTFOUND' || token[0] === 'invalid_credentials') {
return token;
}
let payloadObj = yield this.determineRequestPayload(payload);
const checkStatus = yield axios_1.default.post("https://payments.ogenzo.ml/api/v1/user/wallet/withdraw/status", payloadObj, {
headers: {
Authorization: "Bearer " + token
}
});
if (checkStatus.data.hasOwnProperty("error")) {
return checkStatus.data.error;
}
if (checkStatus.data.hasOwnProperty("data")) {
return { status: checkStatus.status, data: checkStatus.data.data };
}
}
catch (error) {
return error;
}
});
}
deposit(deposit) {
return __awaiter(this, void 0, void 0, function* () {
try {
let token = yield this.login();
if (token === 'ENOTFOUND' || token[0] === 'invalid_credentials') {
return token;
}
let depositObj = yield this.determineRequestPayload(Object.assign(Object.assign({}, deposit), { note: deposit.msg }));
const response = yield axios_1.default.post("https://payments.ogenzo.ml/api/v1/user/wallet/deposit", depositObj, {
headers: {
Authorization: "Bearer " + token
}
});
if (response.data.hasOwnProperty("error")) {
return response.data.error;
}
if (response.data.hasOwnProperty("data")) {
const checkStatus = yield axios_1.default.post("https://payments.ogenzo.ml/api/v1/user/wallet/deposit/status", depositObj, {
headers: {
Authorization: "Bearer " + token
}
});
return { status: checkStatus.status, data: checkStatus.data };
}
}
catch (error) {
return error.errno;
}
});
}
;
withdraw(withdraw) {
return __awaiter(this, void 0, void 0, function* () {
try {
let token = yield this.login();
if (token === 'ENOTFOUND' || token[0] === 'invalid_credentials') {
return token;
}
let withdrawObj = yield this.determineRequestPayload(Object.assign(Object.assign({}, withdraw), { note: withdraw.msg }));
const response = yield axios_1.default.post("https://payments.ogenzo.ml/api/v1/user/wallet/withdraw", withdrawObj, {
headers: {
Authorization: "Bearer " + token
}
});
if (response.data.hasOwnProperty("error")) {
return response.data.error;
}
if (response.data.hasOwnProperty("data")) {
const checkStatus = yield axios_1.default.post("https://payments.ogenzo.ml/api/v1/user/wallet/withdraw/status", withdrawObj, {
headers: {
Authorization: "Bearer " + token
}
});
return { status: checkStatus.status, data: checkStatus.data };
}
}
catch (error) {
return error;
}
});
}
}
exports.OgenzoPayment = OgenzoPayment;