UNPKG

ogenzo-widgets

Version:
225 lines (224 loc) 9.64 kB
"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;