API de Suscripciones - FlowSubscriptions
La clase FlowSubscriptions permite interactuar fácilmente con la API de suscripciones de Flow.cl, ofreciendo métodos para gestionar suscripciones, planes y descuentos.
Inicialización
import Flow from "@nicotordev/flowcl-pagos";
const flow = new Flow("tu_api_key", "tu_secret_key", "sandbox"); // o 'production'
const subscriptions = flow.subscriptions;
Métodos Disponibles
Crear Suscripción a un Plan
subscriptions.createToPlan(data: FlowCreateSubscriptionToPlanRequest): Promise<FlowCreateSubscriptionToPlanResponse>
-
Request:
FlowCreateSubscriptionToPlanRequestincluye:planId:stringcustomerId:stringsubscription_start:string(opcional)couponId:number(opcional)trial_period_days:number(opcional)periods_number:number(opcional)
-
Response:
FlowCreateSubscriptionToPlanResponseincluye:subscriptionId:stringplanId:stringplan_name:stringcustomerId:stringcreated:stringsubscription_start:stringsubscription_end:string | nullperiod_start:stringperiod_end:stringnext_invoice_date:stringtrial_period_days:numbertrial_start:stringtrial_end:stringcancel_at_period_end:numbercancel_at:stringperiods_number:numberdays_until_due:numberstatus:numberdiscount_balance:stringnewPlanId:numbernew_plan_scheduled_change_date:stringin_new_plan_next_attempt_date:stringmorose:numberdiscount:id:numbertype:stringcreated:stringstart:stringend:stringdeleted:string | nullstatus:numbercoupon:id:numbername:stringpercent_off:number | nullcurrency:string | nullamount:number | nullcreated:stringduration:numbertimes:numbermax_redemptions:numberexpires:stringstatus:numberredemptions:number
Obtener Suscripción por ID
subscriptions.get.bySubscriptionId(subscriptionId: string): Promise<FlowGetSubscriptionBySubscriptionIdResponse>
- Request:
subscriptionId - Response:
FlowGetSubscriptionBySubscriptionIdResponsesubscriptionId:stringplanId:stringplan_name:stringcustomerId:stringcreated:stringsubscription_start:stringsubscription_end:string | nullperiod_start:stringperiod_end:stringnext_invoice_date:stringtrial_period_days:numbertrial_start:stringtrial_end:stringcancel_at_period_end:numbercancel_at:stringperiods_number:numberdays_until_due:numberstatus:numberdiscount_balance:stringnewPlanId:numbernew_plan_scheduled_change_date:stringin_new_plan_next_attempt_date:stringmorose:numberdiscount:id:numbertype:stringcreated:stringstart:stringend:stringdeleted:string | nullstatus:numbercoupon:id:numbername:stringpercent_off:number | nullcurrency:string | nullamount:number | nullcreated:stringduration:numbertimes:numbermax_redemptions:numberexpires:stringstatus:numberredemptions:number
Obtener Lista de Suscripciones de un Plan
subscriptions.getPlanSubscriptions(data: FlowGetPlanSubscriptionsRequest): Promise<FlowGetPlanSubscriptionsResponse>
- Request:
FlowGetPlanSubscriptionsRequest - Response:
FlowGetPlanSubscriptionsResponsetotal:numberhasMore:number(0o1)data:string
Modificar Días de Prueba de una Suscripción
subscriptions.update.trialDays(subscriptionId: string, trial_period_days: number): Promise<FlowUpdateSubscriptionTrialDays>
- Request:
subscriptionId,trial_period_days - Response:
FlowUpdateSubscriptionTrialDayssubscriptionId:stringplanId:stringplan_name:stringcustomerId:stringcreated:stringsubscription_start:stringsubscription_end:string | nullperiod_start:stringperiod_end:stringnext_invoice_date:stringtrial_period_days:numbertrial_start:stringtrial_end:stringcancel_at_period_end:numbercancel_at:stringperiods_number:numberdays_until_due:numberstatus:numberdiscount_balance:stringnewPlanId:numbernew_plan_scheduled_change_date:stringin_new_plan_next_attempt_date:stringmorose:numberdiscount:id:numbertype:stringcreated:stringstart:stringend:stringdeleted:string | nullstatus:numbercoupon:id:numbername:stringpercent_off:number | nullcurrency:string | nullamount:number | nullcreated:stringduration:numbertimes:numbermax_redemptions:numberexpires:stringstatus:numberredemptions:number
Cancelar una Suscripción
subscriptions.cancelSubscription(subscriptionId: string, at_period_end: number): Promise<FlowCancelSubscriptionResponse>
- Request:
subscriptionId,at_period_end - Response:
FlowCancelSubscriptionResponse subscriptionId:stringplanId:stringplan_name:stringcustomerId:stringcreated:stringsubscription_start:stringsubscription_end:string | nullperiod_start:stringperiod_end:stringnext_invoice_date:stringtrial_period_days:numbertrial_start:stringtrial_end:stringcancel_at_period_end:numbercancel_at:stringperiods_number:numberdays_until_due:numberstatus:numberdiscount_balance:stringnewPlanId:numbernew_plan_scheduled_change_date:stringin_new_plan_next_attempt_date:stringmorose:numberdiscount:id:numbertype:stringcreated:stringstart:stringend:stringdeleted:string | nullstatus:numbercoupon:id:numbername:stringpercent_off:number | nullcurrency:string | nullamount:number | nullcreated:stringduration:numbertimes:numbermax_redemptions:numberexpires:stringstatus:numberredemptions:number
Agregar Descuento a una Suscripción
subscriptions.addDiscountToSubscription(subscriptionId: string, couponId: string): Promise<FlowAddDiscountToSubscriptionResponse>
- Request:
subscriptionId,couponId - Response:
FlowAddDiscountToSubscriptionResponse subscriptionId:stringplanId:stringplan_name:stringcustomerId:stringcreated:stringsubscription_start:stringsubscription_end:string | nullperiod_start:stringperiod_end:stringnext_invoice_date:stringtrial_period_days:numbertrial_start:stringtrial_end:stringcancel_at_period_end:numbercancel_at:stringperiods_number:numberdays_until_due:numberstatus:numberdiscount_balance:stringnewPlanId:numbernew_plan_scheduled_change_date:stringin_new_plan_next_attempt_date:stringmorose:numberdiscount:id:numbertype:stringcreated:stringstart:stringend:stringdeleted:string | nullstatus:numbercoupon:id:numbername:stringpercent_off:number | nullcurrency:string | nullamount:number | nullcreated:stringduration:numbertimes:numbermax_redemptions:numberexpires:stringstatus:numberredemptions:number
Remover Descuento de una Suscripción
subscriptions.removeDiscountFromSubscription(subscriptionId: string): Promise<FlowRemoveDiscountFromSubscriptionResponse>
- Request:
subscriptionId - Response:
FlowRemoveDiscountFromSubscriptionResponse subscriptionId:stringplanId:stringplan_name:stringcustomerId:stringcreated:stringsubscription_start:stringsubscription_end:string | nullperiod_start:stringperiod_end:stringnext_invoice_date:stringtrial_period_days:numbertrial_start:stringtrial_end:stringcancel_at_period_end:numbercancel_at:stringperiods_number:numberdays_until_due:numberstatus:numberdiscount_balance:stringnewPlanId:numbernew_plan_scheduled_change_date:stringin_new_plan_next_attempt_date:stringmorose:numberdiscount:id:numbertype:stringcreated:stringstart:stringend:stringdeleted:string | nullstatus:numbercoupon:id:numbername:stringpercent_off:number | nullcurrency:string | nullamount:number | nullcreated:stringduration:numbertimes:numbermax_redemptions:numberexpires:stringstatus:numberredemptions:number
Agregar Item a una Suscripción
subscriptions.addItemToSubscription(subscriptionId: string, itemId: string): Promise<FlowAddItemToSubscriptionResponse>
- Request:
subscriptionId,itemId - Response:
FlowAddItemToSubscriptionResponsesub_id:stringitem_id:stringsuccess:boolean
Remover Item de una Suscripción
subscriptions.removeItemFromSubscription(subscriptionId: string, itemId: string): Promise<FlowRemoveItemFromSubscriptionResponse>
- Request:
subscriptionId,itemId - Response:
FlowRemoveItemFromSubscriptionResponsesub_id:stringitem_id:stringsuccess:boolean
Cambiar Plan de una Suscripción
subscriptions.changeAssociatedPlanToSubscription(data: FlowChangeAssociatedPlanToSubscriptionRequest): Promise<FlowChangeAssociatedPlanToSubscriptionResponse>
- Request:
FlowChangeAssociatedPlanToSubscriptionRequestsubscriptionId:stringnewPlanId:stringstartDateOfNewPlan:string(Fecha en formato(YYYY-mm-dd))
- Response:
FlowChangeAssociatedPlanToSubscriptionResponsestart_date_of_new_plan:stringnew_amount:stringnew_currency:stringnew_plan_id:stringbalance:numberold_amount:stringold_currency:stringold_plan_id:string
Previsualizar Cambio de Plan
subscriptions.previewSubscriptionPlanChange(data: FlowPreviewSubscriptionPlanChangeRequest): Promise<FlowPreviewSubscriptionPlanChangeResponse>
- Request:
FlowPreviewSubscriptionPlanChangeRequest:subscriptionId:stringnewPlanId:stringstartDateOfNewPlan:string(Fecha en formato(YYYY-mm-dd))
- Response:
FlowPreviewSubscriptionPlanChangeResponse: - Response:
FlowChangeAssociatedPlanToSubscriptionResponsebalance:{amount:numbercredit_expiration_date:string | nullcredit_expiration_amount:number | nullcredit_expiration_warning:string | null}
old_plan:{id:stringname:stringamount:stringcurrency:stringinterval:1 | 2 | 3 | 4interval_count:numberperiods_number:number | null}
new_plan:{id:stringname:stringamount:stringcurrency:stringinterval:1 | 2 | 3 | 4interval_count:numberperiods_number:number | null}
balance2:numbernext_invoice_date:string(Corresponde anext_invoice_date)
Cancelar Cambio de Plan Programado
subscriptions.cancelScheduledPlanChange(subscriptionId: string): Promise<FlowCancelScheduledPlanChangeResponse>
- Request:
subscriptionId - Response:
FlowCancelScheduledPlanChangeResponse success:boolean
Manejo de Errores
| Error | Descripción |
|---|---|
FlowAPIError | Error general de la API Flow. |
FlowCreateSubscriptionToPlanError | Error al crear suscripción. |
FlowGetSubscriptionBySubscriptionIdError | Error al obtener suscripción. |
FlowGetPlanSubscriptionsError | Error al listar suscripciones de un plan. |
FlowUpdateSubscriptionTrialDaysError | Error al modificar días de prueba. |
FlowCancelSubscriptionError | Error al cancelar suscripción. |
FlowAddDiscountToSubscriptionError | Error al agregar descuento. |
FlowRemoveDiscountFromSubscriptionError | Error al remover descuento. |
FlowAddItemToSubscriptionError | Error al agregar item. |
FlowRemoveItemFromSubscriptionError | Error al remover item. |
FlowChangeAssociatedPlanToSubscriptionError | Error al cambiar plan de suscripción. |
FlowPreviewSubscriptionPlanChangeError | Error al previsualizar cambio de plan. |
FlowCancelScheduledPlanChangeError | Error al cancelar cambio de plan programado. |
FlowAuthenticationError | Error de autenticación con la API de Flow. |
Para más detalles visita Flow.cl API Docs.