Skip to content

Instantly share code, notes, and snippets.

@jaccon
Created July 29, 2020 14:20
Show Gist options
  • Save jaccon/5ad88f5f9385762c9cd6bf6957e22b42 to your computer and use it in GitHub Desktop.
Save jaccon/5ad88f5f9385762c9cd6bf6957e22b42 to your computer and use it in GitHub Desktop.
async lastTransactions(req, res) {
const { authorization, user } = req.headers;
const { id , page } = req.params;
if(authorization != SECRETKEY && !id){
return res.status(400).json({"message" : "bad request"});
}
if (!mongoose.Types.ObjectId.isValid(id)){
return res.status(400).json({error : "no contracts not found "});
}
let contract = await UserContracts.findOne({
_id: id, userId: user })
.select(['_id','transactionGtw','transactionGtwKey'])
.sort([['createdAt', 'descending']])
if(!contract || !contract.transactionGtwKey){
return res.status(400).json({ error: 'no transaction key found to contract'})
}
let paymentGateway = contract.transactionGtw
let transactionKey = contract.transactionGtwKey
if(paymentGateway === "gtw1"){
const PagarmeApiKey = "xxxxxxxxxxx";
const totalResults = 15;
const detDetails = async item => {
const api2 = `https://api.pagar.me/1/transactions/${item}?api_key=${PagarmeApiKey}`
const results = await axios.get(api2)
const data = {
id: results.data.id,
transaction_id: results.data.id,
status : transactionStatus(results.data.status),
status2 : results.data.status,
authorization_code: results.data.authorization_code,
date_created: results.data.date_created,
date_updated: results.data.date_updated,
amount: amountNormalize(results.data.amount),
authorized_amount: amountNormalize(results.data.authorized_amount),
paid_amount: amountNormalize(results.data.paid_amount),
card_holder_name: results.data.card_holder_name,
card_last_digits: results.data.card_last_digits,
card_first_digits: results.data.card_first_digits,
credit_card: results.data.card_first_digits+'.xxxx.xxxx.'+results.data.card_last_digits,
card_brand: results.data.card_brand,
payment_method: transactionType(results.data.payment_method),
boleto_url: results.data.boleto_url,
boleto_barcode: results.data.boleto_barcode,
boleto_expiration_date: results.data.boleto_expiration_date,
phone: results.data.phone.ddd+''+results.data.phone.number,
customer_name: results.data.customer.name,
email: results.data.customer.email,
metadata: results.data.metadata,
document_type: results.data.customer.document_type,
document_number: results.data.customer.document_number,
installments: results.data.installments,
gtw: 'gtw1'
}
console.log(data);
return data;
}
const api = `https://api.pagar.me/1/payables?recipient_id=${transactionKey}&count=${totalResults}&page=${page}&api_key=${PagarmeApiKey}`;
const response = await axios.get(api);
const list = response.data
const functionWithPromise = item => { //a function that returns a promise
console.log(item.transaction_id);
return Promise.resolve(detDetails(item.transaction_id))
}
const anAsyncFunction = async item => {
return functionWithPromise(item);
}
const getData = async () => {
return Promise.all(list.map(item => anAsyncFunction(item)))
}
getData().then(data => {
return res.status(200).json(data);
})
}
},
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment