UNPKG

@bebapps/rapyd-sdk

Version:

An un-official [Rapyd](https://rapyd.net) SDK for Node.js.

90 lines (80 loc) 4.46 kB
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>(); }