@nicotordev/flowcl-pagos
Version:
SDK en TypeScript para integrar pagos con la API de Flow.cl de manera sencilla y segura.
302 lines • 18.8 kB
TypeScript
import { FlowGetCustomerListResponse, FlowCreateCustomerRequest, FlowCreateCustomerResponse, FlowDeleteCustomerResponse, FlowEditCustomerRequest, FlowEditCustomerResponse, FlowGetCustomerListRequest, FlowGetCustomerResponse, FlowRegisterCardResponse, FlowRegisterCardRequest, FlowRegisterCardStatusResponse, FlowDeleteCardResponse, FlowChargeCardRequest, FlowChargeCardResponse, FlowSendChargeRequest, FlowSendChargeResponse, FlowSendMassiveChargeCardRequest, FlowSendMassiveChargeCardResponse, FlowMassiveChargeCardStatusResponse, FlowReverseChargeCardRequest, FlowReverseChargeCardResponse, FlowListChargesResponse, FlowListChargesRequest, FlowListFailedChargesResponse, FlowListFailedChargesRequest, FlowListPaginatedSubscriptionsRequest, FlowListPaginatedSubscriptionsResponse } from '../types/flow';
/**
* Cliente para interactuar con la API de clientes de Flow.
* Permite realizar operaciones con clientes en Flow.
*/
export default class FlowCustomers {
private apiKey;
private secretKey;
private axiosInstance;
/**
* Operaciones relacionadas con clientes
*/
/**
* Crea un nuevo cliente en Flow.
* @param {FlowCreateCustomerRequest} data Datos del cliente a crear.
* @returns {Promise<FlowCreateCustomerResponse>} Objeto con la información del cliente creado.
* @throws {FlowCreateCustomerError}
* @throws {FlowAPIError}
*/
create: (data: FlowCreateCustomerRequest) => Promise<FlowCreateCustomerResponse>;
/**
* Edita un cliente existente en Flow.
* @param {FlowEditCustomerRequest} data Datos del cliente a editar.
* @returns {Promise<FlowEditCustomerResponse>} Objeto con la información del cliente editado.
* @throws {FlowEditCustomerError}¿
* @throws {FlowAPIError}
*/
edit: (data: FlowEditCustomerRequest) => Promise<FlowEditCustomerResponse>;
/**
* Elimina un cliente en Flow.
* @param {string} customerId Identificador del cliente a eliminar.
* @returns {Promise<FlowDeleteCustomerResponse>} Objeto con la información del cliente eliminado.
* @throws {FlowDeleteCustomerError}
* @throws {FlowAPIError}
*/
delete: (customerId: string) => Promise<FlowDeleteCustomerResponse>;
/**
* Permite obtener los datos de un cliente en base a su customerId.
* @param {string} customerId Identificador del cliente a obtener.
* @returns {Promise<FlowGetCustomerResponse>} Objeto con la información del cliente.
* @throws {FlowGetCustomerError} Si hay problemas al crear el cliente.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*/
get: (customerId: string) => Promise<FlowGetCustomerResponse>;
/**
* Permite obtener la lista de clientes paginada de acuerdo a los parámetros de paginación. Además, se puede definir los siguientes filtros:
* filter: filtro por nombre del cliente
* status: filtro por estado del cliente
* @param {FlowGetCustomerListRequest} data Datos de la petición de la lista de clientes.
* @returns {Promise<FloeGetCustomerListResponse>} Objeto con la información de la lista de clientes.
* @throws {FlowGetCustomerListError} Si hay problemas al obtener la lista de clientes.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*/
list: (data: FlowGetCustomerListRequest) => Promise<FlowGetCustomerListResponse>;
card: {
/**
* Registra una tarjeta de crédito para un cliente en Flow.
* @param {FlowRegisterCardRequest} data Datos de la solicitud de registro de tarjeta.
* @returns {Promise<FlowRegisterCardResponse>} Información de la transacción con URL de redirección.
* @throws {FlowRegisterCardError}
* @throws {FlowAPIError}
*/
register: (data: FlowRegisterCardRequest) => Promise<FlowRegisterCardResponse>;
/**
* Obtiene el estado del registro de tarjeta de un cliente.
* @param {string} token Token de la transacción.
* @returns {Promise<FlowRegisterCardStatusResponse> } Estado del registro de la tarjeta.
* @throws {FlowRegisterCardStatusError}
* @throws {FlowAPIError}
*/
status: (token: string) => Promise<FlowRegisterCardStatusResponse>;
/**|
* Elimina el registro de la tarjeta de crédito de un cliente.
* @param {string} customerId Identificador del cliente.
* @returns {Promise<FlowDeleteCardResponse>} Información del registro de tarjeta eliminado.
* @throws {FlowDeleteCardError} Si hay problemas al eliminar el registro de la tarjeta.
* @throws {FlowDeleteCardError} Si hay problemas al eliminar el registro de la tarjeta.
*/
delete: (customerId: string) => Promise<FlowDeleteCardResponse>;
/**
* Este servicio permite efectuar un cargo automático en la tarjeta de crédito previamente registrada por el cliente. Si el cliente no tiene registrada una tarjeta el metodo retornará error.
* @param {FlowChargeCardRequest} data Datos de la petición de cargo.
* @returns {Promise<FlowChargeCardResponse>} Objeto con la información del cargo.
* @throws {FlowChargeCardError} Si hay problemas al realizar el cargo.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*/
charge: (data: FlowChargeCardRequest) => Promise<FlowChargeCardResponse>;
/**
* Este servicio envía un cobro a un cliente. Si el cliente tiene registrada una tarjeta de crédito se le hace un cargo automático, si no tiene registrada una tarjeta de credito se genera un cobro. Si se envía el parámetro byEmail = 1, se genera un cobro por email.
* @param {FlowSendChargeRequest} data Datos de la petición de cargo.
* @returns {Promise<FlowSendChargeResponse>} Objeto con la información del cargo.
* @throws {FlowSendChargeCardError} Si hay problemas al realizar el cargo.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*/
sendCharge: (data: FlowSendChargeRequest) => Promise<FlowSendChargeResponse>;
/**
* Este servicio envía de forma masiva un lote de cobros a clientes. Similar al servicio collect pero masivo y asíncrono. Este servicio responde con un token identificador del lote y el número de filas recibidas.
* @param {FlowSendMassiveChargeCardRequest} data Datos de la petición de cargo masivo.
* @returns {Promise<FlowSendMassiveChargeCardResponse>} Objeto con la información del cargo masivo.
* @throws {FlowSendMassiveChargeCardError} Si hay problemas al realizar el cargo.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*/
sendMassiveCharge: (data: FlowSendMassiveChargeCardRequest) => Promise<FlowSendMassiveChargeCardResponse>;
/**
* Este servicio permite consultar el estado de un lote de cobros enviados por medio del servicio batchCollect.
* @param {string} token Token del lote de cobros.
* @returns {Promise<FlowMassiveChargeCardStatusResponse>} Objeto con la información del estado del lote de cobros.
* @throws {FlowMassiveChargeCardStatusError} Si hay problemas al ver el estado del lote de cobros.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*/
massiveChargeStatus: (token: string) => Promise<FlowMassiveChargeCardStatusResponse>;
/**
* Este servicio permite reversar un cargo previamente efectuado a un cliente. Para que el cargo se reverse, este servicio debe ser invocado dentro de las 24 horas siguientes a efectuado el cargo, las 24 horas rigen desde las 14:00 hrs, es decir, si el cargo se efectuó a las 16:00 hrs, este puede reversarse hasta las 14:00 hrs del día siguiente.\n\n Puede enviar como parámetros el commerceOrder o el flowOrder.
* @param {FlowReverseChargeCardRequest} data Datos de la petición de reversa.
* @returns {Promise<FlowReverseChargeCardResponse>} Objeto con la información de la reversa.
* @throws {FlowReverseChargeCardError} Si hay problemas al realizar la reversa.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*
*/
reverseCharge: (data: FlowReverseChargeCardRequest) => Promise<FlowReverseChargeCardResponse>;
/**
* Este servicio obtiene la lista paginada de los cargos efectuados a un cliente.
* @param {FlowListChargesRequest} data Datos de la petición de lista de cargos.
* @returns {Promise<FlowListChargesResponse>} Objeto con la información de la lista de cargos.
* @throws {FlowListChargesCardError} Si hay problemas al listar los cargos.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*
*/
listCharges: (data: FlowListChargesRequest) => Promise<FlowListChargesResponse>;
/**
* Este servicio obtiene la lista paginada de los intentos de cargos fallidos a un cliente.
* @param {FlowListFailedChargesRequest} data Datos de la petición de lista de cargos fallidos.
* @returns {Promise<FlowListFailedChargesResponse>} Objeto con la información de la lista de cargos fallidos.
* @throws {FlowListFailedChargesCardError} Si hay problemas al listar los cargos fallidos.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*/
listFailedCharges: (data: FlowListFailedChargesRequest) => Promise<FlowListFailedChargesResponse>;
};
/**
* Operaciones relacionadas con las suscripciones de un cliente.
*/
subscriptions: {
/**
* Este servicio obtiene la lista paginada de las suscripciones de un cliente.
* @param {FlowListPaginatedSubscriptionsRequest} data Datos de la petición de lista de suscripciones.
* @returns {Promise<FlowListPaginatedSubscriptionsResponse>} Objeto con la información de la lista de suscripciones.
* @throws {FlowListPaginatedSubscriptionsError} Si hay problemas al listar las suscripciones.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*/
list: (data: FlowListPaginatedSubscriptionsRequest) => Promise<FlowListPaginatedSubscriptionsResponse>;
};
/**
* Constructor de la clase FlowClient.
* @param apiKey Clave de API proporcionada por Flow.
* @param secretKey Clave secreta proporcionada por Flow.
* @param baseURL URL base de la API de Flow.
* @throws FlowAuthenticationError Si no se proporciona apiKey o secretKey.
*/
constructor(apiKey: string, secretKey: string, baseURL: string);
/**
* Realiza una petición a la API de Flow.
* @param {string} endpoint URL del endpoint de la API.
* @param {string} data Datos a enviar en la petición.
* @param {string} method Método de la petición (POST o GET).
* @param {(err: unknown) => never} error - Error a lanzar en caso de error.
* @returns {Promise<T>} Respuesta de la API.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
* @throws {Error} Si hay problemas al realizar la petición.
*/
private request;
/**
* Crea un nuevo cliente en Flow.
* @param {FlowCreateCustomerRequest} data Datos del cliente a crear.
* @returns {Promise<FlowCreateCustomerResponse>} Objeto con la información del cliente creado.
* @throws {FlowCreateCustomerError}
* @throws {FlowAPIError}
*/
private createCustomer;
/**
* Edita un cliente existente en Flow.
* @param {FlowEditCustomerRequest} data Datos del cliente a editar.
* @returns {Promise<FlowEditCustomerResponse>} Objeto con la información del cliente editado.
* @throws {FlowEditCustomerError}¿
* @throws {FlowAPIError}
*/
private editCustomer;
/**
* Elimina un cliente en Flow.
* @param {string} customerId Identificador del cliente a eliminar.
* @returns {Promise<FlowDeleteCustomerResponse>} Objeto con la información del cliente eliminado.
* @throws {FlowDeleteCustomerError}
* @throws {FlowAPIError}
*/
private deleteCustomer;
/**
* Obtiene los datos de un cliente por su ID.
* @param {string} customerId Identificador del cliente.
* @returns {Promise<FlowGetCustomerResponse>} Objeto con la información del cliente.
* @throws {FlowGetCustomerError}
* @throws {FlowAPIError}
*/
private getCustomer;
/**
* Obtiene una lista de clientes con paginación y filtros.
* @param {FlowGetCustomerListRequest} data Parámetros de paginación y filtro.
* @returns {Promise<FlowGetCustomerListResponse>} Lista de clientes paginada.
* @throws {FlowGetCustomerListError}
* @throws {FlowAPIError}
*/
private getCustomerList;
/**
* Registra una tarjeta de crédito para un cliente en Flow.
* @param {FlowRegisterCardRequest} data Datos de la solicitud de registro de tarjeta.
* @returns {Promise<FlowRegisterCardResponse>} Información de la transacción con URL de redirección.
* @throws {FlowRegisterCardError}
* @throws {FlowAPIError}
*/
private registerCard;
/**
* Obtiene el estado del registro de tarjeta de un cliente.
* @param {string} token Token de la transacción.
* @returns {Promise<FlowRegisterCardStatusResponse> } Estado del registro de la tarjeta.
* @throws {FlowRegisterCardStatusError}
* @throws {FlowAPIError}
*/
private registerCardStatus;
/**
* Elimina el registro de la tarjeta de crédito de un cliente.
* @param {string} customerId Identificador del cliente.
* @returns {Promise<FlowDeleteCardResponse>} Información del registro de tarjeta eliminado.
* @throws {FlowDeleteCardError} Si hay problemas al eliminar el registro de la tarjeta.
* @throws {FlowDeleteCardError} Si hay problemas al eliminar el registro de la tarjeta.
*/
private deleteCard;
/**
* Este servicio permite efectuar un cargo automático en la tarjeta de crédito previamente registrada por el cliente. Si el cliente no tiene registrada una tarjeta el metodo retornará error.
* @param {FlowChargeCardRequest} data Datos de la petición de cargo.
* @returns {Promise<FlowChargeCardResponse>} Objeto con la información del cargo.
* @throws {FlowChargeCardError} Si hay problemas al realizar el cargo.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*/
private chargeCard;
/**
* Este servicio envía un cobro a un cliente. Si el cliente tiene registrada una tarjeta de crédito se le hace un cargo automático, si no tiene registrada una tarjeta de credito se genera un cobro. Si se envía el parámetro byEmail = 1, se genera un cobro por email.
* @param {FlowSendChargeRequest} data Datos de la petición de cargo.
* @returns {Promise<FlowSendChargeResponse>} Objeto con la información del cargo.
* @throws {FlowSendChargeCardError} Si hay problemas al realizar el cargo.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*/
private sendChargeCard;
/**
* Este servicio envía de forma masiva un lote de cobros a clientes. Similar al servicio collect pero masivo y asíncrono. Este servicio responde con un token identificador del lote y el número de filas recibidas.
* @param {FlowSendMassiveChargeCardRequest} data Datos de la petición de cargo masivo.
* @returns {Promise<FlowSendMassiveChargeCardResponse>} Objeto con la información del cargo masivo.
* @throws {FlowSendMassiveChargeCardError} Si hay problemas al realizar el cargo.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*/
private sendMassiveChargeCard;
/**
* Este servicio permite consultar el estado de un lote de cobros enviados por medio del servicio batchCollect.
* @param {string} token Token del lote de cobros.
* @returns {Promise<FlowMassiveChargeCardStatusResponse>} Objeto con la información del estado del lote de cobros.
* @throws {FlowMassiveChargeCardStatusError} Si hay problemas al ver el estado del lote de cobros.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*/
private massiveChargeCardStatus;
/**
* Este servicio permite reversar un cargo previamente efectuado a un cliente. Para que el cargo se reverse, este servicio debe ser invocado dentro de las 24 horas siguientes a efectuado el cargo, las 24 horas rigen desde las 14:00 hrs, es decir, si el cargo se efectuó a las 16:00 hrs, este puede reversarse hasta las 14:00 hrs del día siguiente.\n\n Puede enviar como parámetros el commerceOrder o el flowOrder.
* @param {FlowReverseChargeCardRequest} data Datos de la petición de reversa.
* @returns {Promise<FlowReverseChargeCardResponse>} Objeto con la información de la reversa.
* @throws {FlowReverseChargeCardError} Si hay problemas al realizar la reversa.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*
*/
private reverseChargeCard;
/**
* Este servicio obtiene la lista paginada de los cargos efectuados a un cliente.
* @param {FlowListChargesRequest} data Datos de la petición de lista de cargos.
* @returns {Promise<FlowListChargesResponse>} Objeto con la información de la lista de cargos.
* @throws {FlowListChargesCardError} Si hay problemas al listar los cargos.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*
*/
private listChargeCard;
/**
* Este servicio obtiene la lista paginada de los intentos de cargos fallidos a un cliente.
* @param {FlowListFailedChargesRequest} data Datos de la petición de lista de cargos fallidos.
* @returns {Promise<FlowListFailedChargesResponse>} Objeto con la información de la lista de cargos fallidos.
* @throws {FlowListFailedChargesCardError} Si hay problemas al listar los cargos fallidos.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*/
private listFailedChargesCard;
/**
* Este servicio obtiene la lista paginada de las suscripciones de un cliente.
* @param {FlowListPaginatedSubscriptionsRequest} data Datos de la petición de lista de suscripciones.
* @returns {Promise<FlowListPaginatedSubscriptionsResponse>} Objeto con la información de la lista de suscripciones.
* @throws {FlowListPaginatedSubscriptionsError} Si hay problemas al listar las suscripciones.
* @throws {FlowAPIError} Si hay problemas con la API de Flow.
*/
private listPaginatedSubscriptions;
}
//# sourceMappingURL=flow.customers.d.ts.map