@bebapps/rapyd-sdk
Version:
An un-official [Rapyd](https://rapyd.net) SDK for Node.js.
90 lines (80 loc) • 4.46 kB
text/typescript
import { RapydClient } from '../../../core/RapydClient';
import { Subscription } from '../types/Subscription';
import { SubscriptionError } from '../enums/SubscriptionError';
import { CreateSubscriptionRequest } from '../requests/CreateSubscriptionRequest';
import { UpdateSubscriptionRequest } from '../requests/UpdateSubscriptionRequest';
import { CompleteACycleRequest } from '../requests/CompleteACycleRequest';
import { StartANewCycleRequest } from '../requests/StartANewCycleRequest';
import { RetrieveSubscriptionRequest } from '../requests/RetrieveSubscriptionRequest';
import { ListSubscriptionsRequest } from '../requests/ListSubscriptionsRequest';
import { CancelSubscriptionRequest } from '../requests/CancelSubscriptionRequest';
import { DeleteDiscountFromSubscriptionRequest } from '../requests/DeleteDiscountFromSubscriptionRequest';
export async function createSubscription<R = Subscription>(client: RapydClient, request: CreateSubscriptionRequest): Promise<R> {
const response = await client.post('/v1/payments/subscriptions', {
billing: request.billing,
billing_cycle_anchor: request.billing_cycle_anchor,
cancel_at_period_end: request.cancel_at_period_end,
coupon: request.coupon,
customer: request.customer,
days_until_due: request.days_until_due,
metadata: request.metadata,
payment_fields: request.payment_fields,
payment_method: request.payment_method,
subscription_items: request.subscription_items,
tax_percent: request.tax_percent,
trial_end: request.trial_end,
trial_from_plan: request.trial_from_plan,
trial_period_days: request.trial_period_days,
});
return await response.data<R, SubscriptionError>();
}
export async function updateSubscription<R = Subscription>(client: RapydClient, request: UpdateSubscriptionRequest): Promise<R> {
const response = await client.post('/v1/payments/subscriptions/{}', request.subscription, {
billing: request.billing,
billing_cycle_anchor: request.billing_cycle_anchor,
cancel_at_period_end: request.cancel_at_period_end,
coupon: request.coupon,
days_until_due: request.days_until_due,
metadata: request.metadata,
payment_fields: request.payment_fields,
tax_percent: request.tax_percent,
trial_end: request.trial_end,
trial_from_plan: request.trial_from_plan,
trial_period_days: request.trial_period_days,
});
return await response.data<R, SubscriptionError>();
}
export async function completeACycle<R = Subscription>(client: RapydClient, request: CompleteACycleRequest): Promise<R> {
const response = await client.post('/v1/subscriptions/{}/complete_cycle', request.subscription);
return await response.data<R, SubscriptionError>();
}
export async function startANewCycle<R = Subscription>(client: RapydClient, request: StartANewCycleRequest): Promise<R> {
const response = await client.post('/v1/subscriptions/{}/start_new_cycle', request.subscription);
return await response.data<R, SubscriptionError>();
}
export async function retrieveSubscription<R = Subscription>(client: RapydClient, request: RetrieveSubscriptionRequest): Promise<R> {
const response = await client.get('/v1/payments/subscriptions/{}', request.subscription);
return await response.data<R, SubscriptionError>();
}
export async function listSubscriptions<R = Subscription>(client: RapydClient, request: ListSubscriptionsRequest): Promise<R> {
const queryParams = client.queryParams({
billing: request.billing,
customer: request.customer,
ending_before: request.ending_before,
limit: request.limit,
starting_after: request.starting_after,
status: request.status,
});
const response = await client.get('/v1/payments/subscriptions' + queryParams);
return await response.data<R, SubscriptionError>();
}
export async function cancelSubscription<R = Subscription>(client: RapydClient, request: CancelSubscriptionRequest): Promise<R> {
const response = await client.delete('/v1/payments/subscriptions/{}', request.subscription, {
cancel_at_period_end: request.cancel_at_period_end,
});
return await response.data<R, SubscriptionError>();
}
export async function deleteDiscountFromSubscription<R = Subscription>(client: RapydClient, request: DeleteDiscountFromSubscriptionRequest): Promise<R> {
const response = await client.delete('/v1/payments/subscriptions/{}/discount', request.subscription);
return await response.data<R, SubscriptionError>();
}