enrich refunds/chargebacks

This commit is contained in:
Kiara Grouwstra 2021-10-25 17:38:33 +02:00
parent 296c7b43b5
commit 27959eb811
1 changed files with 11 additions and 8 deletions

View File

@ -6,37 +6,40 @@ import { log, mapKeys, prepend } from './utils';
import { mollieKeys, listAll } from './mollie';
import assert from 'assert';
type PaymentObj = { [k: string]: any };
async function main() {
const apiKey = mollieKeys.leden;
const mollie = createMollieClient({ apiKey });
const customers = await exportMollieCustomers(mollie);
const customerObj = Object.fromEntries(customers.map(({ id, name, email, createdAt }) => ([id, { name, email, createdAt }])));
const customerObj = Object.fromEntries(customers.map(({ id, ...rest }) => [id, rest]));
const payments = await exportMolliePayments(mollie, customerObj);
const paymentObj: PaymentObj = Object.fromEntries(payments.map(({ id, ...rest }) => [id, rest]));
assert(apiKey.slice(0,5) == 'live_');
const refunds = await exportMollieRefunds(mollie);
const chargebacks = await exportMollieChargebacks(mollie);
const refunds = await exportMollieRefunds(mollie, paymentObj);
const chargebacks = await exportMollieChargebacks(mollie, paymentObj);
}
async function exportMollieCustomers(mollie: MollieClient): Promise<{[k: string]: any}[]> {
const page$ = mollie.customers.list();
const list = (await listAll(page$, 500))
.map(({ id, name, email, createdAt }) => ({ id, name, email, createdAt }));
// .map(({ id, name, email, createdAt }) => ({ id, name, email, createdAt }));
writeFileSync('./data/customers.csv', unparse(list));
return list;
}
async function exportMollieRefunds(mollie: MollieClient): Promise<{[k: string]: any}[]> {
async function exportMollieRefunds(mollie: MollieClient, paymentObj: PaymentObj): Promise<{[k: string]: any}[]> {
const page$ = mollie.refunds.list();
const list = (await listAll(page$, 500))
.map(({ resource, id, amount, status, createdAt, description, metadata, paymentId, settlementId, settlementAmount, _links, lines }) => ({ resource, id, status, createdAt, description, metadata, paymentId, settlementId, lines, ...mapKeys(prepend('amount.'))(amount), ...mapKeys(prepend('settlementAmount.'))(settlementAmount)/*, ...mapKeys(prepend('_links.'))(_links)*/ }));
.map(({ resource, id, amount, status, createdAt, description, metadata, paymentId, settlementId, settlementAmount, _links, lines }) => ({ resource, id, status, createdAt, description, metadata, paymentId, settlementId, lines, ...mapKeys(prepend('amount.'))(amount), ...mapKeys(prepend('settlementAmount.'))(settlementAmount)/*, ...mapKeys(prepend('_links.'))(_links)*/, ...mapKeys(prepend('payment.'))(paymentObj[paymentId || '']) }));
writeFileSync('./data/refunds.csv', unparse(list));
return list;
}
async function exportMollieChargebacks(mollie: MollieClient): Promise<{[k: string]: any}[]> {
async function exportMollieChargebacks(mollie: MollieClient, paymentObj: PaymentObj): Promise<{[k: string]: any}[]> {
const page$ = mollie.chargebacks.list();
const list = (await listAll(page$, 500))
.map(({ resource, id, amount, createdAt, reason, paymentId, settlementAmount, _links }) => ({ resource, id, createdAt, paymentId, ...mapKeys(prepend('reason.'))(reason), ...mapKeys(prepend('amount.'))(amount), ...mapKeys(prepend('settlementAmount.'))(settlementAmount)/*, ...mapKeys(prepend('_links.'))(_links)*/ }));
.map(({ resource, id, amount, createdAt, reason, paymentId, settlementAmount, _links }) => ({ resource, id, createdAt, paymentId, ...mapKeys(prepend('reason.'))(reason), ...mapKeys(prepend('amount.'))(amount), ...mapKeys(prepend('settlementAmount.'))(settlementAmount)/*, ...mapKeys(prepend('_links.'))(_links)*/, ...mapKeys(prepend('payment.'))(paymentObj[paymentId || '']) }));
writeFileSync('./data/chargebacks.csv', unparse(list));
return list;
}