API de Clientes - FlowCustomers
La clase FlowCustomers permite interactuar fácilmente con la API de clientes de Flow.cl, ofreciendo métodos para gestionar clientes, tarjetas de crédito y cobros automáticos.
Inicialización
import Flow from '@nicotordev/flowcl-pagos';
const flow = new Flow('tu_api_key', 'tu_secret_key', 'sandbox'); // o 'production'
const customers = flow.customers;
Métodos Disponibles
Clientes
- Crear cliente:
customers.create(data: FlowCreateCustomerRequest): Promise<FlowCreateCustomerResponse>
-
Request:
FlowCreateCustomerRequestincluye:name:stringemail:stringexternalId:string
-
Response:
FlowCreateCustomerResponseincluye:customerId:stringcreated:stringemail:stringname:stringpay_mode:numbercreditCardType:stringlast4CardDigits:stringexternalId:stringstatus:numberregisterDate:string
-
Editar cliente:
customers.edit(data: FlowEditCustomerRequest): Promise<FlowEditCustomerResponse>
-
Request:
FlowEditCustomerRequestincluye:customerId:stringname:string(opcional)email:string(opcional)externalId:string(opcional)
-
Response:
FlowEditCustomerResponseincluye:customerId:stringcreated:stringemail:stringname:stringpay_mode:numbercreditCardType:stringlast4CardDigits:stringexternalId:stringstatus:numberregisterDate:string
-
Eliminar cliente:
customers.delete(customerId: string): Promise<FlowDeleteCustomerResponse>
-
Request:
customerId. -
Response:
FlowDeleteCustomerResponseincluye:customerId:stringcreated:stringemail:stringname:stringpay_mode:numbercreditCardType:stringlast4CardDigits:stringexternalId:stringstatus:numberregisterDate:string
-
Obtener cliente:
customers.get(customerId: string): Promise<FlowGetCustomerResponse>
-
Request:
customerId. -
Response:
FlowGetCustomerResponseincluye:customerId:stringcreated:stringemail:stringname:stringpay_mode:numbercreditCardType:stringlast4CardDigits:stringexternalId:stringstatus:numberregisterDate:string
-
Listar clientes:
customers.list(data: FlowGetCustomerListRequest): Promise<FlowListCustomersResponse>
-
Request:
FlowGetCustomerListRequestincluye:start:number(opcional)limit:number(opcional)filter:string(opcional)status:number(opcional)
-
Response:
FlowListCustomersResponseincluye:total:numberhasMore:number(0|1)data:string(arreglo con clientes)
Tarjetas de Crédito
- Registrar tarjeta:
customers.card.register(data: FlowRegisterCardRequest): Promise<FlowRegisterCardResponse>
-
Request:
FlowRegisterCardRequestincluye:customerId:stringurl_return:string
-
Response:
FlowRegisterCardResponseincluye:url:stringtoken:stringredirectUrl:string
-
Estado registro tarjeta:
customers.card.status(token: string): Promise<FlowRegisterCardStatusResponse>
-
Request:
token -
Response:
FlowRegisterCardStatusResponseincluye:status:number(0|1)customerId:stringcreditCardType:stringlast4CardDigits:string
-
Eliminar tarjeta registrada:
customers.card.delete(customerId: string): Promise<FlowDeleteCardResponse>
- Request:
customerId - Response:
FlowDeleteCardResponseincluye:customerId:stringcreated:stringemail:stringname:stringpay_mode:numbercreditCardType:stringlast4CardDigits:stringexternalId:stringstatus:numberregisterDate:string
Cobros
- Cobro automático a tarjeta:
customers.card.charge(data: FlowChargeCardRequest): Promise<FlowChargeCardResponse>
-
Request:
FlowChargeCardRequestincluye:customerId:stringamount:numbersubject:stringcommerceOrder:stringcurrency:string(opcional)optionals:string(opcional)
-
Response:
FlowChargeCardResponseincluye:flowOrder:numbercommerceOrder:stringstatus:number(0|1)subject:stringcurrency:stringamount:numberpayer:stringoptional:string(opcional)pending_info: que incluye:media:stringdate:string
paymentData: que incluye:date:stringamount:numbercurrency:stringfee:numberbalance:number
merchantId:string
-
Enviar cobro único:
customers.card.sendCharge(data: FlowSendChargeRequest): Promise<FlowSendChargeResponse>
-
Request:
FlowSendChargeRequestincluye:customerId:stringcommerceOrder:stringsubject:stringamount:numberurlConfirmation:stringurlReturn:stringcurrency:string(opcional)paymentMethod:stringFlowPaymentMethods(opcional) // Este parametro es un numero en la API de Flow, se hace una conversión interna a stringbyEmail:number(opcional) (1)forward_days_after:number(opcional)forward_times:number(opcional)ignore_auto_charging:number(1) (opcional)optionals:string(opcional)timeout:number(opcional)
-
Response:
FlowSendChargeResponseincluye:type:number(1|2|3)commerceOrder:stringflowOrder:numbertoken:stringstatus:number(0|1)paymentData, que incluye:flowOrder:numbercommerceOrder:stringrequestDate:stringstatusnumber(1|2|3|4)subject:stringcurrency:stringamount:numberpayer:stringoptional:string(opcional)pending_info:mediastring(opcional)datestring(opcional)
paymentData:date:string(opcional)amount:number(opcional)currency:string(opcional)fee:number(opcional)balance:number(opcional)
merchantId:string
-
Enviar cobros masivos:
customers.card.sendMassiveCharge(data: FlowSendMassiveChargeCardRequest): Promise<FlowSendMassiveChargeCardResponse>
-
Request:
FlowSendMassiveChargeCardRequestincluye:urlCallBack:stringurlConfirmation:stringurlReturn:stringbatchRows: arreglo que incluye:customerId:stringcommerceOrder:stringsubject:stringamount:numbercurrency:string(opcional)paymentMethod:stringFlowPaymentMethods(opcional) // Este parametro es un numero en la API de Flow, se hace una conversión interna a stringoptional:string(opcional)
byEmail:1(opcional)forward_days_after:number(opcional)forward_times:number(opcional)timeout:number(opcional)
-
Response:
FlowSendMassiveChargeCardResponseincluye:token:stringreceivedRows:numberacceptedRows:numberrejectedRows: arreglo que incluye:customerId:stringcommerceOrder:stringrowNumber:numberparameter:stringerrorCode:number(100|101|102|103|104|105|106|107|108|109|110)errorMsg:string
-
Estado de cobros masivos:
customers.card.massiveChargeStatus(token: string): Promise<FlowMassiveChargeCardStatusResponse>
-
Request:
token -
Response:
FlowMassiveChargeCardStatusResponseincluye:token:stringcreatedDate:string(fecha en formatoyyyy-mm-dd hh:mm:ss)processedDate:string(fecha en formatoyyyy-mm-dd hh:mm:ss)status:string('created'|'processing'|'processed')collectRows: arreglo que incluye:commerceOrder:stringtype:number(1|2|3)flowOrder:numberurl:stringtoken:stringstatus: ('unprocessed'|'collected'|'uncollected')erroorCode:numbererrorMsg:string
-
Revertir cobro:
customers.card.reverseCharge(data: FlowReverseChargeCardRequest): Promise<FlowReverseChargeCardResponse>
-
Request:
FlowReverseChargeCardRequestincluye:commerceOrder:string(opcional)flowOrder:number(opcional)
-
Response:
FlowMassiveChargeCardStatusResponseincluye:status:number(0|1)message:string
-
FlowReverseChargeCardRequest:commerceOrder,flowOrder(ambos opcionales).
Consultas y Listados
- Listar cargos efectuados:
customers.card.listCharges(data: FlowListChargesRequest): Promise<FlowListChargesResponse>
-
Request:
FlowListChargesRequestincluye:customerIdfromDate:string(fecha en formato<yyyy-mm-dd>) (opcional)start:number(opcional)limit:number(opcional)filter:string(opcional)status:number(opcional)
-
Response:
FlowListChargesResponseincluye:total:numberhasMore:number(0|1)data(arreglo con cargos)
-
Listar intentos fallidos:
customers.card.listFailedCharges(data: FlowListFailedChargesRequest): Promise<FlowListChargesResponse>
-
Request:
FlowListFailedChargesRequestincluye:customerId:stringcommerceOrder:number(opcional)fromDate:string(fecha en formato<yyyy-mm-dd>) (opcional)start:number(opcional)limit:number(opcional)filter:string(opcional)
-
Response:
FlowListChargesResponseincluye:total:numberhasMore:number(0|1)data(arreglo con cargos)
-
Listar suscripciones:
customers.card.subscriptions.list(data: FlowListPaginatedSubscriptionsRequest): Promise<FlowListPaginatedSubscriptionsResponse>
- Request:
FlowListPaginatedSubscriptionsRequestincluye:customerId:stringstart:number(opcional)limit:number(opcional)filter:string(opcional)
- Response:
FlowListChargesResponseincluye:totalnumberhasMore:number(0|1)data:string(arreglo con cargos)
Manejo de Errores
| Error | Descripción |
|---|---|
FlowAPIError | Error genérico de la API Flow. |
FlowAuthenticationError | Error de autenticación. |
FlowChargeCardError | Error al efectuar cobro automático. |
FlowCreateCustomerError | Error al crear cliente. |
FlowDeleteCardError | Error al eliminar tarjeta. |
FlowDeleteCustomerError | Error al eliminar cliente. |
FlowEditCustomerError | Error al editar cliente. |
FlowGetCustomerError | Error al obtener cliente. |
FlowGetCustomerListError | Error al listar clientes. |
FlowListChargesCardError | Error al listar cargos. |
FlowListFailedChargesCardError | Error al listar intentos fallidos. |
FlowListPaginatedSubscriptionsError | Error al listar suscripciones. |
FlowMassiveChargeCardStatusError | Error al obtener estado de cobros masivos. |
FlowRegisterCardError | Error al registrar tarjeta. |
FlowRegisterCardStatusError | Error al consultar estado de registro de tarjeta. |
FlowReverseChargeCardError | Error al revertir cobro. |
FlowSendChargeCardError | Error al enviar cobro único. |
FlowSendMassiveChargeCardError | Error al enviar cobros masivos. |
Para más detalles visita Flow.cl API Docs.
Nota: Maneja correctamente todas las excepciones en tu aplicación.