@spreeloop/orange_money
Version:
A orange money api integration package
74 lines • 3.18 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transfer = exports.TransferRequestSchema = exports.TransferMethod = void 0;
const joi_1 = __importDefault(require("joi"));
const https_1 = require("../../utils/https");
const disbursement_service_1 = require("../implementations/disbursement_service");
const regex_1 = require("../utils/regex");
var TransferMethod;
(function (TransferMethod) {
TransferMethod["OrangeMoney"] = "OrangeMoney";
})(TransferMethod = exports.TransferMethod || (exports.TransferMethod = {}));
exports.TransferRequestSchema = joi_1.default.object({
webhook: joi_1.default.string().uri().required(),
amount: joi_1.default.number().integer().min(1).required(),
customerPhone: joi_1.default.string()
.pattern(regex_1.orangeMoneyPhoneNumberWithoutCountryCodeRegex)
.required(),
customerName: joi_1.default.string().required(),
token: joi_1.default.string().required(),
});
/**
* Transfers the specified amount of currency to the specified party.
*
* @param {DisbursementServiceConfig} configs - The disbursement service config.
* @param {TransferRequest} params - The transfer parameters.
* @return {MethodResponse<string, TransferRawData>} - The method response.
*/
async function transfer({ configs, params, endPoint, }) {
const logger = configs.logger;
logger.info(`transfer is running with params : ${JSON.stringify(params)}`);
const { error: configsValidationError, value: configValues } = 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: paramsValues } = exports.TransferRequestSchema.validate(params);
if (paramsValidationError) {
return {
error: `Invalid transfer request parameters. params : ${JSON.stringify(params)}`,
};
}
const header = {
Authorization: `Bearer ${paramsValues.token}`,
};
const body = {
customerkey: configValues.customerKey,
customersecret: configValues.customerSecret,
channelUserMsisdn: configValues.channelUserMsisdn,
pin: configValues.pin,
webhook: paramsValues.webhook,
amount: `${paramsValues.amount}`,
final_customer_phone: paramsValues.customerPhone,
final_customer_name: paramsValues.customerName,
refund_method: TransferMethod.OrangeMoney,
};
const response = await (0, https_1.postRequest)({
logger: logger,
route: endPoint,
data: body,
headers: header,
});
if (!response.response) {
return { error: response.error };
}
return {
data: response.response.data.MessageId,
raw: response.response.data,
};
}
exports.transfer = transfer;
//# sourceMappingURL=transfer.js.map