53 lines
1.3 KiB
TypeScript
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;
|