Saltar al contenido principal

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: FlowCreateSubscriptionToPlanRequest incluye:

    • planId: string
    • customerId: string
    • subscription_start: string (opcional)
    • couponId: number (opcional)
    • trial_period_days: number (opcional)
    • periods_number: number (opcional)
  • Response: FlowCreateSubscriptionToPlanResponse incluye:

    • subscriptionId: string
    • planId: string
    • plan_name: string
    • customerId: string
    • created: string
    • subscription_start: string
    • subscription_end: string | null
    • period_start: string
    • period_end: string
    • next_invoice_date: string
    • trial_period_days: number
    • trial_start: string
    • trial_end: string
    • cancel_at_period_end: number
    • cancel_at: string
    • periods_number: number
    • days_until_due: number
    • status: number
    • discount_balance: string
    • newPlanId: number
    • new_plan_scheduled_change_date: string
    • in_new_plan_next_attempt_date: string
    • morose: number
    • discount:
      • id: number
      • type: string
      • created: string
      • start: string
      • end: string
      • deleted: string | null
      • status: number
      • coupon:
        • id: number
        • name: string
        • percent_off: number | null
        • currency: string | null
        • amount: number | null
        • created: string
        • duration: number
        • times: number
        • max_redemptions: number
        • expires: string
        • status: number
        • redemptions: number

Obtener Suscripción por ID​

subscriptions.get.bySubscriptionId(subscriptionId: string): Promise<FlowGetSubscriptionBySubscriptionIdResponse>
  • Request: subscriptionId
  • Response: FlowGetSubscriptionBySubscriptionIdResponse
    • subscriptionId: string
    • planId: string
    • plan_name: string
    • customerId: string
    • created: string
    • subscription_start: string
    • subscription_end: string | null
    • period_start: string
    • period_end: string
    • next_invoice_date: string
    • trial_period_days: number
    • trial_start: string
    • trial_end: string
    • cancel_at_period_end: number
    • cancel_at: string
    • periods_number: number
    • days_until_due: number
    • status: number
    • discount_balance: string
    • newPlanId: number
    • new_plan_scheduled_change_date: string
    • in_new_plan_next_attempt_date: string
    • morose: number
    • discount:
      • id: number
      • type: string
      • created: string
      • start: string
      • end: string
      • deleted: string | null
      • status: number
      • coupon:
        • id: number
        • name: string
        • percent_off: number | null
        • currency: string | null
        • amount: number | null
        • created: string
        • duration: number
        • times: number
        • max_redemptions: number
        • expires: string
        • status: number
        • redemptions: number

Obtener Lista de Suscripciones de un Plan​

subscriptions.getPlanSubscriptions(data: FlowGetPlanSubscriptionsRequest): Promise<FlowGetPlanSubscriptionsResponse>
  • Request: FlowGetPlanSubscriptionsRequest
  • Response: FlowGetPlanSubscriptionsResponse
    • total: number
    • hasMore: number (0 o 1)
    • 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: FlowUpdateSubscriptionTrialDays
    • subscriptionId: string
    • planId: string
    • plan_name: string
    • customerId: string
    • created: string
    • subscription_start: string
    • subscription_end: string | null
    • period_start: string
    • period_end: string
    • next_invoice_date: string
    • trial_period_days: number
    • trial_start: string
    • trial_end: string
    • cancel_at_period_end: number
    • cancel_at: string
    • periods_number: number
    • days_until_due: number
    • status: number
    • discount_balance: string
    • newPlanId: number
    • new_plan_scheduled_change_date: string
    • in_new_plan_next_attempt_date: string
    • morose: number
    • discount:
      • id: number
      • type: string
      • created: string
      • start: string
      • end: string
      • deleted: string | null
      • status: number
      • coupon:
        • id: number
        • name: string
        • percent_off: number | null
        • currency: string | null
        • amount: number | null
        • created: string
        • duration: number
        • times: number
        • max_redemptions: number
        • expires: string
        • status: number
        • redemptions: number

Cancelar una Suscripción​

subscriptions.cancelSubscription(subscriptionId: string, at_period_end: number): Promise<FlowCancelSubscriptionResponse>
  • Request: subscriptionId, at_period_end
  • Response: FlowCancelSubscriptionResponse
  • subscriptionId: string
  • planId: string
  • plan_name: string
  • customerId: string
  • created: string
  • subscription_start: string
  • subscription_end: string | null
  • period_start: string
  • period_end: string
  • next_invoice_date: string
  • trial_period_days: number
  • trial_start: string
  • trial_end: string
  • cancel_at_period_end: number
  • cancel_at: string
  • periods_number: number
  • days_until_due: number
  • status: number
  • discount_balance: string
  • newPlanId: number
  • new_plan_scheduled_change_date: string
  • in_new_plan_next_attempt_date: string
  • morose: number
  • discount:
    • id: number
    • type: string
    • created: string
    • start: string
    • end: string
    • deleted: string | null
    • status: number
    • coupon:
      • id: number
      • name: string
      • percent_off: number | null
      • currency: string | null
      • amount: number | null
      • created: string
      • duration: number
      • times: number
      • max_redemptions: number
      • expires: string
      • status: number
      • redemptions: number

Agregar Descuento a una Suscripción​

subscriptions.addDiscountToSubscription(subscriptionId: string, couponId: string): Promise<FlowAddDiscountToSubscriptionResponse>
  • Request: subscriptionId, couponId
  • Response: FlowAddDiscountToSubscriptionResponse
  • subscriptionId: string
  • planId: string
  • plan_name: string
  • customerId: string
  • created: string
  • subscription_start: string
  • subscription_end: string | null
  • period_start: string
  • period_end: string
  • next_invoice_date: string
  • trial_period_days: number
  • trial_start: string
  • trial_end: string
  • cancel_at_period_end: number
  • cancel_at: string
  • periods_number: number
  • days_until_due: number
  • status: number
  • discount_balance: string
  • newPlanId: number
  • new_plan_scheduled_change_date: string
  • in_new_plan_next_attempt_date: string
  • morose: number
  • discount:
    • id: number
    • type: string
    • created: string
    • start: string
    • end: string
    • deleted: string | null
    • status: number
    • coupon:
      • id: number
      • name: string
      • percent_off: number | null
      • currency: string | null
      • amount: number | null
      • created: string
      • duration: number
      • times: number
      • max_redemptions: number
      • expires: string
      • status: number
      • redemptions: number

Remover Descuento de una Suscripción​

subscriptions.removeDiscountFromSubscription(subscriptionId: string): Promise<FlowRemoveDiscountFromSubscriptionResponse>
  • Request: subscriptionId
  • Response: FlowRemoveDiscountFromSubscriptionResponse
  • subscriptionId: string
  • planId: string
  • plan_name: string
  • customerId: string
  • created: string
  • subscription_start: string
  • subscription_end: string | null
  • period_start: string
  • period_end: string
  • next_invoice_date: string
  • trial_period_days: number
  • trial_start: string
  • trial_end: string
  • cancel_at_period_end: number
  • cancel_at: string
  • periods_number: number
  • days_until_due: number
  • status: number
  • discount_balance: string
  • newPlanId: number
  • new_plan_scheduled_change_date: string
  • in_new_plan_next_attempt_date: string
  • morose: number
  • discount:
    • id: number
    • type: string
    • created: string
    • start: string
    • end: string
    • deleted: string | null
    • status: number
    • coupon:
      • id: number
      • name: string
      • percent_off: number | null
      • currency: string | null
      • amount: number | null
      • created: string
      • duration: number
      • times: number
      • max_redemptions: number
      • expires: string
      • status: number
      • redemptions: number

Agregar Item a una Suscripción​

subscriptions.addItemToSubscription(subscriptionId: string, itemId: string): Promise<FlowAddItemToSubscriptionResponse>
  • Request: subscriptionId, itemId
  • Response: FlowAddItemToSubscriptionResponse
    • sub_id: string
    • item_id: string
    • success: boolean

Remover Item de una Suscripción​

subscriptions.removeItemFromSubscription(subscriptionId: string, itemId: string): Promise<FlowRemoveItemFromSubscriptionResponse>
  • Request: subscriptionId, itemId
  • Response: FlowRemoveItemFromSubscriptionResponse
    • sub_id: string
    • item_id: string
    • success: boolean

Cambiar Plan de una Suscripción​

subscriptions.changeAssociatedPlanToSubscription(data: FlowChangeAssociatedPlanToSubscriptionRequest): Promise<FlowChangeAssociatedPlanToSubscriptionResponse>
  • Request: FlowChangeAssociatedPlanToSubscriptionRequest
    • subscriptionId: string
    • newPlanId: string
    • startDateOfNewPlan: string (Fecha en formato (YYYY-mm-dd))
  • Response: FlowChangeAssociatedPlanToSubscriptionResponse
    • start_date_of_new_plan: string
    • new_amount: string
    • new_currency: string
    • new_plan_id: string
    • balance: number
    • old_amount: string
    • old_currency: string
    • old_plan_id: string

Previsualizar Cambio de Plan​

subscriptions.previewSubscriptionPlanChange(data: FlowPreviewSubscriptionPlanChangeRequest): Promise<FlowPreviewSubscriptionPlanChangeResponse>
  • Request: FlowPreviewSubscriptionPlanChangeRequest:
    • subscriptionId: string
    • newPlanId: string
    • startDateOfNewPlan: string (Fecha en formato (YYYY-mm-dd))
  • Response: FlowPreviewSubscriptionPlanChangeResponse:
  • Response: FlowChangeAssociatedPlanToSubscriptionResponse
    • balance: {
      • amount: number
      • credit_expiration_date: string | null
      • credit_expiration_amount: number | null
      • credit_expiration_warning: string | null }
    • old_plan: {
      • id: string
      • name: string
      • amount: string
      • currency: string
      • interval: 1 | 2 | 3 | 4
      • interval_count: number
      • periods_number: number | null }
    • new_plan: {
      • id: string
      • name: string
      • amount: string
      • currency: string
      • interval: 1 | 2 | 3 | 4
      • interval_count: number
      • periods_number: number | null }
    • balance2: number
    • next_invoice_date: string (Corresponde a next_invoice_date)

Cancelar Cambio de Plan Programado​

subscriptions.cancelScheduledPlanChange(subscriptionId: string): Promise<FlowCancelScheduledPlanChangeResponse>
  • Request: subscriptionId
  • Response: FlowCancelScheduledPlanChangeResponse
  • success: boolean

Manejo de Errores​

ErrorDescripción
FlowAPIErrorError general de la API Flow.
FlowCreateSubscriptionToPlanErrorError al crear suscripción.
FlowGetSubscriptionBySubscriptionIdErrorError al obtener suscripción.
FlowGetPlanSubscriptionsErrorError al listar suscripciones de un plan.
FlowUpdateSubscriptionTrialDaysErrorError al modificar días de prueba.
FlowCancelSubscriptionErrorError al cancelar suscripción.
FlowAddDiscountToSubscriptionErrorError al agregar descuento.
FlowRemoveDiscountFromSubscriptionErrorError al remover descuento.
FlowAddItemToSubscriptionErrorError al agregar item.
FlowRemoveItemFromSubscriptionErrorError al remover item.
FlowChangeAssociatedPlanToSubscriptionErrorError al cambiar plan de suscripción.
FlowPreviewSubscriptionPlanChangeErrorError al previsualizar cambio de plan.
FlowCancelScheduledPlanChangeErrorError al cancelar cambio de plan programado.
FlowAuthenticationErrorError de autenticación con la API de Flow.

Para más detalles visita Flow.cl API Docs.