Files
automatisch/packages/backend/src/helpers/billing/paddle.ee.ts
2023-04-06 13:08:49 +00:00

53 lines
1.3 KiB
TypeScript

import axios from 'axios';
import appConfig from '../../config/app';
import { DateTime } from 'luxon';
const PADDLE_VENDOR_URL = appConfig.isDev
? 'https://sandbox-vendors.paddle.com'
: 'https://vendors.paddle.com';
const axiosInstance = axios.create({ baseURL: PADDLE_VENDOR_URL });
const getSubscription = async (subscriptionId: number) => {
const data = {
vendor_id: appConfig.paddleVendorId,
vendor_auth_code: appConfig.paddleVendorAuthCode,
subscription_id: subscriptionId,
};
const response = await axiosInstance.post(
'/api/2.0/subscription/users',
data
);
const subscription = response.data.response[0];
return subscription;
};
const getInvoices = async (subscriptionId: number) => {
// TODO: iterate over previous subscriptions and include their invoices
const data = {
vendor_id: appConfig.paddleVendorId,
vendor_auth_code: appConfig.paddleVendorAuthCode,
subscription_id: subscriptionId,
is_paid: 1,
from: DateTime.now().minus({ years: 3 }).toISODate(),
to: DateTime.now().plus({ days: 3 }).toISODate(),
};
const response = await axiosInstance.post(
'/api/2.0/subscription/payments',
data
);
const invoices = response.data.response;
return invoices;
};
const paddleClient = {
getSubscription,
getInvoices,
};
export default paddleClient;