import * as plugins from './paypal.plugins'; import { PayPalAccount } from './paypal.classes.paypal'; export interface IPayPalOriginTransactionApiObject { paypal_account_id: string; transaction_id: string; transaction_event_code: string; transaction_initiation_date: string; transaction_updated_date: string; transaction_amount: { currency_code: string; value: string }; transaction_status: string; transaction_subject: string; ending_balance: { currency_code: string; value: string }; available_balance: { currency_code: string; value: string }; invoice_id: string; protection_eligibility: string; } export interface IPayPalTransactionOptions { id: string; originApiObject: IPayPalOriginTransactionApiObject amount: number; currency: 'USD' | 'EUR'; timestampIso: string; } export class PayPalTransaction { public static async getTransactionFor30days( paypalInstanceArg: PayPalAccount, startPointMillis: number = Date.now() - plugins.smarttime.units.days(30) ) { const startDate = startPointMillis; const endDate = startDate + plugins.smarttime.units.days(30); const startDateIso = plugins.smarttime.ExtendedDate.fromMillis(startDate).toISOString(); const endDateIso = plugins.smarttime.ExtendedDate.fromMillis(endDate).toISOString(); console.log(endDateIso); console.log(startDateIso); const response = await paypalInstanceArg.request( 'GET', `/v1/reporting/transactions?start_date=${startDateIso}&end_date=${endDateIso}`, {} ); const returnTransactions: PayPalTransaction[] = [] for (const transactionDetail of response.transaction_details) { const apiObject: IPayPalOriginTransactionApiObject = transactionDetail.transaction_info; const paypalTransaction = new PayPalTransaction({ originApiObject: apiObject, id: apiObject.transaction_id, amount: parseFloat(apiObject.transaction_amount.value), currency: apiObject.transaction_amount.currency_code as 'EUR' | 'USD', timestampIso: apiObject.transaction_initiation_date }); returnTransactions.push(paypalTransaction); } return returnTransactions; } public data: IPayPalTransactionOptions; constructor(dataArg: IPayPalTransactionOptions) { this.data = dataArg; } }