UNPKG

@spreeloop/orange_money

Version:
128 lines 5.05 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getTransferStatus = exports.DisbursementStep = void 0; const joi_1 = __importDefault(require("joi")); const https_1 = require("../../utils/https"); const disbursement_service_1 = require("../implementations/disbursement_service"); const status_1 = require("../utils/status"); const utils_1 = require("../utils/utils"); const GetTransferStatusRequestSchema = joi_1.default.object({ token: joi_1.default.string().required(), messageId: joi_1.default.string().required(), }).required(); var DisbursementStep; (function (DisbursementStep) { DisbursementStep["TransferSent"] = "2"; DisbursementStep["InitializingTransfer"] = "1"; })(DisbursementStep = exports.DisbursementStep || (exports.DisbursementStep = {})); /** * Retrieves the transfer status of a transaction. * * @param {DisbursementServiceConfig} configs - The disbursement service config. * @param {GetTransferStatusRequest} params - The parameters for retrieving the transfer status. * @return {GetTransferStatusResponse} - The method response containing the transfer status. */ async function getTransferStatus({ configs, params, endPoint, }) { const logger = configs.logger; logger.info(`getTransferStatus is running with params : ${JSON.stringify(params)}`); const { error: configsValidationError, value: configsValues } = disbursement_service_1.DisbursementServiceConfigSchema.validate(configs); if (configsValidationError) { logger.error(`Invalid DisbursementServiceConfig request parameters. params : ${JSON.stringify(configsValidationError.details)}`); return { error: configsValidationError.details }; } const { error: paramsValidationError, value: paramsValue } = GetTransferStatusRequestSchema.validate(params); if (paramsValidationError) { logger.error(`Invalid getTransferStatus request parameters. params : ${JSON.stringify(paramsValidationError)}`); return { error: paramsValidationError }; } const headers = { Authorization: `Bearer ${paramsValue.token}`, }; const body = { customerkey: configsValues.customerKey, customersecret: configsValues.customerSecret, }; const response = await (0, https_1.getRequest)({ logger: configsValues.logger, route: endPoint, headers: headers, data: body, rejectUnauthorized: false, }); if (!response.response) { return { error: response.error }; } const data = response.response.data; if (typeof data === 'string') { // Handle string response. return { error: data }; } else if ('result' in data) { // Remove the customer secret from the raw data, because // it is a very sensitive secret. if (data.parameters) { data.parameters.customer_secret = null; } const rawStatus = 'status' in data.result ? data.result.status : data.result.data.status; const status = (0, utils_1.getStatusFromProviderRawStatus)(rawStatus); if (data.RefundStep === DisbursementStep.InitializingTransfer) { return { data: { status: status === status_1.DisbursementStatus.succeeded ? status_1.DisbursementStatus.pending : status, refundStep: data.RefundStep, }, raw: data, }; } return { data: { status: status, refundStep: data.RefundStep, }, raw: data, }; } else if ('ErrorCode' in data) { if (data.parameters) { data.parameters.customer_secret = null; } if (data.ErrorCode === 5019) { return { data: { status: status_1.DisbursementStatus.failed, refundStep: data.RefundStep, }, raw: data, }; } configsValues.logger.error(`Unexpected ErrorCode : ${JSON.stringify(data)}`); return { data: { status: status_1.DisbursementStatus.pending, refundStep: data.RefundStep, }, raw: data, }; } else if (data.RefundStep === DisbursementStep.InitializingTransfer) { if (data.parameters) { data.parameters.customer_secret = null; } return { data: { status: status_1.DisbursementStatus.pending, refundStep: data.RefundStep, }, raw: data, }; } // By default, assume we failed to retrieve the disbursement status. return { error: data }; } exports.getTransferStatus = getTransferStatus; //# sourceMappingURL=get_transfer_status.js.map