Execute Liquiloans Transaction Script
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

137 lines
4.6 KiB

const request = require('request');
const db = require('../utils/db_config');
const { getCurrentDateTime } = require("./helper");
const crypto = require('crypto');
function generateHMACSHA256(input, key) {
const hmac = crypto.createHmac('sha256', key);
hmac.update(input, 'utf8');
return hmac.digest('hex');
}
function getHashCode(investor_id, request_id) {
const inputString_GetInvestorDashboard = `${request_id}||${investor_id}||${getCurrentDateTime()}`;
const key = "27E6A91CEE689";
const hash_GetInvestorDashboard = generateHMACSHA256(inputString_GetInvestorDashboard, key);
return hash_GetInvestorDashboard
}
//get Request_Id and Investor_Id....
const getReqAndInvId = async () => {
let allInvestorId = await db.investorSummary.findAll({
attributes: ['investor_id', 'request_id']
});
let sendId = JSON.stringify(allInvestorId, null, 2)
fetchReqAndInvId(sendId);
}
// Send Request_Id and Investor_Id to the getTransactionById fun
const fetchReqAndInvId = async (sendId) => {
let data = JSON.parse(sendId)
console.log("data",data.length)
for (let i = 0; i < data.length; i++) {
let checkInvestorId = data[i].investor_id;
let checkRequestId = data[i].request_id;
if (checkInvestorId && checkRequestId) {
setTimeout(() => {
getTransactionById(checkInvestorId, checkRequestId)
}, 10);
}
}
}
const getTransactionById = (checkInvestorId, checkRequestId) => {
try {
var options = {
method: 'POST',
url: 'https://supply-integration.liquiloans.com/api/v2/GetTransactionById',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
mid: "M00201",
checksum: getHashCode(checkInvestorId, checkRequestId),
timestamp: getCurrentDateTime(),
investor_id: checkInvestorId.toString(),
request_id: checkRequestId.toString()
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
if (response.body) {
setTimeout(() => {
fetchTransactionId(response.body);
}, 10);
}
});
} catch {
console.log(error, "ERROR...____");
}
}
const fetchTransactionId = async (data) => {
try {
let idDetails = JSON.parse(data);
let trnId = idDetails.data;
let item = {};
item.request_id = trnId.id,
item.investor_id = trnId.investor_id,
item.amount = trnId.amount,
item.transaction_type = trnId.transaction_type,
item.transaction_sub_type = trnId.transaction_sub_type,
item.withdrawal_method = trnId.withdrawal_method,
item.manual_parameters = trnId.manual_parameters,
item.old_investment_id = trnId.old_investment_id,
item.scheme_id = trnId.scheme_id,
item.mode = trnId.mode,
item.transaction_id = trnId.transaction_id,
item.order_id = trnId.order_id,
item.settlement_utr = trnId.settlement_utr,
item.transaction_source = trnId.transaction_source,
item.approval_status = trnId.approval_status,
item.transaction_status = trnId.transaction_status,
item.created_at = trnId.created_at,
item.authenticated_at = trnId.authenticated_at,
item.banking_date = trnId.banking_date,
item.execution_date = trnId.execution_date,
item.transaction_date = trnId.transaction_date,
item.ext_transaction_date = trnId.ext_transaction_date,
item.source_payment = trnId.source_payment,
item.last_updatedAt = new Date().toString()
let isRecordPresent = await handleRecordPresent(item);
if (isRecordPresent.length) {
await db.transactionById.update(item, {
where: {
request_id: item.request_id
}
});
} else {
await db.transactionById.create(item);
}
console.log("done--------->")
} catch (err) {
console.log(err, "ERROR.........");
}
}
const handleRecordPresent = async (item) => {
let id = item.request_id;
try {
let query = `select * from dbo.P2P_Liquiloans_Inv_Transactions where request_id= '${id}'`;
return await db.sequelize.query(query, { type: db.sequelize.QueryTypes.SELECT });
} catch (err) {
console.log("isInvestorPresent", err.message)
}
}
module.exports = {
getReqAndInvId
}

Powered by TurnKey Linux.