useutility-flowcl-api
Version:
Este proyecto es una herramienta de gestión de tareas diseñada para hacer transacciones de manera rápida y eficaz con FLOWCL.
583 lines (556 loc) • 21.7 kB
TypeScript
interface responseFlowAPI {
flowOrder: number;
commerceOrder: string;
requestDate: string;
status: number;
subject: string;
currency: string;
amount: number;
payer: string;
optional: string | null;
pending_info: pending_info;
merchantId: string | null;
}
interface paymentData {
date: string | null;
media: string | null;
conversionDate: string | null;
conversionRate: number | null;
amount: number | null;
fee: number | null;
balance: number | null;
transferDate: string | null;
}
interface pending_info {
media: string | null;
date: string | null;
}
interface lastError {
code: string | null;
message: string | null;
medioCode: string | null;
}
interface Payment_GetTransactions_Options {
date: string;
start: number;
limit: number;
}
interface Payment_GetTransactions_Result {
total: number;
hasMore: boolean;
data: responseFlowAPI & {
paymentData: paymentData & {
currency: "CLP" | string | null;
};
};
}
interface Flow_API {
apiKey: string | undefined;
secretKey: string | undefined;
production?: string | undefined;
debug?: boolean;
}
interface Request_Signataure {
apiKey: string;
s: string;
}
interface FlowAPI_Error_Result {
code: number;
message: string;
}
declare class Transaction {
protected API_KEY: string;
protected SECRET_KEY: string;
protected API_URL: string;
constructor(apiKey: string, secretKey: string, apiUrl: string);
/**
* @function service
*
*
* Language:
*
* en -> adds the APIKEY property, purifies and uses the parameters by returning the object with the "s" property needed for FLOWCL
*
* es -> añade la propiedad de APIKEY , purifica y utiliza los parametros retornando el objeto con la propiedad "s" necesaria para FLOWCL
*/
protected service<T>(params: T): Request_Signataure & T;
protected get<T>(URL: string, params: T): Promise<unknown>;
protected post<T>(URL: string, params: T): Promise<unknown>;
}
/**
* Iniciamos el envio de los parametros.
* @property {string} commerceOrder - El orden del comercio : required
* @property {string} subject - La Descripción de la orden : required
* @property {number} amount - El Monto de la orden : required
* @property {string} email - El email del pagador : required
* @property {uri} urlConfirmation - <uri> El url callback del comercio donde Flow confirmará el pago : required
* @property {string} urlReturn - <uri> El url de retorno del comercio donde Flow redirigirá al pagador : required
* @property {number} paymentMethod ? - Identificador del medio de pago. Si se envía el identificador, el pagador será redireccionado directamente al medio de pago que se indique, de lo contrario Flow le presentará una página para seleccionarlo. El medio de pago debe haber sido previamente contratado. Podrá ver los identificadores de sus medios de pago en la sección "Mis Datos" ingresando a Flow con sus credenciales. Para indicar todos los medios de pago utilice el identificador: 9 Todos los medios
* @property {number} timeout ? - tiempo en segundos para que una orden expire después de haber sido creada. Si no se envía este parámetro la orden no expirará y estará vigente para pago por tiempo indefinido. Si envía un valor en segundos, la orden expirará x segundos después de haber sido creada y no podrá pagarse.
* @property {string} merchantId ? - El Id de comercio asociado. Solo aplica si usted es comercio integrador.
* @property {string} payment_currency ? - La moneda en que se espera se pague la orden
* @property {string} currency ? - La moneda de la orden
*
*
*/
interface Payment_Create_Options {
commerceOrder: string;
subject: string;
amount: number;
email: string;
urlConfirmation: string;
urlReturn: string;
paymentMethod?: number;
optional?: object;
timeout?: number;
merchantId?: string;
payment_currency?: string;
currency?: string;
}
interface Payment_Create_Result {
token: string;
url: string;
flowOrder: number;
}
/**
* Iniciamos el envio de los parametros.
* @property {string} commerceOrder - Orden del comercio : required
* @property {string} subject - Descripción de la orden : required
* @property {number} amount - Monto de la orden : required
* @property {string} email - email del pagador : required
* @property {string} urlConfirmation - url callbak del comercio donde Flow confirmará el pago : required
* @property {string} urlReturn - url de retorno del comercio donde Flow redirigirá al pagador : required
* @property {string} currency? - Moneda de la orden
* @property {number} forward_days_after? - Número de días posteriores al envío del cobro para enviar una nueva notificación de persistencia si la orden no está pagada.
* @property {number} forward_times? - Número de veces de envío de mail de persistencia.
* @property {object} optional? - Datos opcionales en formato JSON clave = valor, ejemplo: {"rut":"9999999-9","nombre":"cliente 1"}
* @property {number} timeout? - tiempo en segundos para que una orden expire después de haber sido creada. Si no se envía este parámetro la orden no expirará y estará vigente para pago por tiempo indefinido. Si envía un valor en segundos, la orden expirará x segundos después de haber sido creada y no podrá pagarse.
* @property {string} merchantId? - Id de comercio asociado. Solo aplica si usted es comercio integrador.
* @property {string} commerceOrder? - Moneda en que se espera se pague la orden.
*
*/
interface Payment_CreateEmail_Options {
commerceOrder: string;
subject: string;
amount: number;
email: string;
urlConfirmation: string;
urlReturn: string;
currency?: string;
forward_days_after?: number;
forward_times?: number;
optional?: Object;
timeout?: number;
merchantId?: string;
payment_currency?: string;
}
interface Payment_CreateEmail_Result {
url: string;
token: string;
flowOrder: number;
}
/**
* Iniciamos el envio de los parametros.
* @property {string} flowOrder: - número de orden Flow : required
*
*/
interface Payment_GetStatusByFlowOrder_Options {
flowOrder: string;
}
interface Payment_GetStatusByFlowOrder_Result extends responseFlowAPI {
paymentData: paymentData & {
mediaType: string | null;
cardLast4Numbers: string | null;
};
lastError: lastError;
}
/**
* Iniciamos el envio de los parametros.
* @property {string} token - token de la solicitud : required
*
*/
interface Payment_GetStatus_Options {
token: string;
}
interface Payment_GetStatus_Result extends responseFlowAPI {
paymentData: paymentData & {
currency: "CLP" | string | null;
};
}
/**
* Iniciamos el envio de los parametros.
* @property {string} commerceId - Orden del comercio : required
*
*/
interface Payment_GetStatusByCommerceId_Options {
commerceId: string;
}
interface Payment_GetStatusByCommerceId_Result extends responseFlowAPI {
paymentData: paymentData & {
currency: "CLP" | string | null;
};
}
interface Payment_getPayments_Options {
date: string;
start?: number;
limit?: number;
}
interface Payment_getPayments_Result extends responseFlowAPI {
total: number;
hasMore: boolean;
data: responseFlowAPI & {
paymentData: paymentData & {
currency: "CLP" | string | null;
taxes: number | null;
};
};
}
interface Payment_getStatusExtended_Options {
token: string;
}
interface Payment_getStatusExtended_Result extends responseFlowAPI {
paymentData: paymentData & {
mediaType: string | null;
cardLast4Numbers: string | null;
};
lastError: lastError;
}
/**
* Iniciamos el envio de los parametros.
* @property {string} flowOrder: - número de orden Flow : required
*
*/
interface Payment_GetStatusByFlowOrderExtended_Options {
flowOrder: string;
}
interface Payment_GetStatusByFlowOrderExtended_Result extends responseFlowAPI {
paymentData: paymentData & {
mediaType: string | null;
cardLast4Numbers: string | null;
};
lastError: lastError;
}
declare class Payment extends Transaction {
/**
* @function create
* @param {string} params Payment_CreateEmail_Options
* @return {Promise<Payment_Create_Result>} a object with type Payment_Create_Result
*
* example: http://localhost:3003/create
*
* const params: Payment_Create_Options = {
* commerceOrder: "useutility-dev-" + Math.floor(Math.random() * 1000) + 1,
* subject: "subject",
* amount: 3300,
* email: "test@useutility.dev",
* urlConfirmation: "http://localhost:3003",
* urlReturn: "https://flow.cl"
* }
*
* express::
* app.post("/create", async (req, res) => {
const params: Payment_Create_Options = {
commerceOrder: "useutility-dev-" + Math.floor(Math.random() * 1000) + 1,
subject: "subject",
amount: 3300,
email: "test@useutility.dev",
urlConfirmation: "http://localhost:3003",
urlReturn: "https://flow.cl"
}
const createEmailFlow = await FlowAPI.payment().create(params)
res.json(createEmailFlow)
})
*/
create(params: Payment_Create_Options): Promise<Payment_Create_Result>;
/**
* @function createEmail
* @param {string} params Payment_CreateEmail_Options
* @return {Promise<Payment_CreateEmail_Result>} a object with type Payment_CreateEmail_Result
*
* example: http://localhost:3003/createEmail
*
* const params: Payment_CreateEmail_Options = {
* commerceOrder: "useutility-dev-" + Math.floor(Math.random() * 1000) + 1,
* subject: "subject",
* amount: 3300,
* email: "test@useutility.dev",
* urlConfirmation: "http://localhost:3003",
* urlReturn: "https://flow.cl"
* }
*
* express::
* app.post("/createEmail", async (req, res) => {
const params: Payment_CreateEmail_Options = {
commerceOrder: "useutility-dev-" + Math.floor(Math.random() * 1000) + 1,
subject: "subject",
amount: 3300,
email: "test@useutility.dev",
urlConfirmation: "http://localhost:3003",
urlReturn: "https://flow.cl"
}
const createEmailFlow = await FlowAPI.payment().createEmail(params)
res.json(createEmailFlow)
})
*/
createEmail(params: Payment_CreateEmail_Options): Promise<Payment_CreateEmail_Result>;
/**
* @function getStatus
* @param {string} token
* @return {Promise<Payment_GetStatus_Result>} a object with type Payment_GetStatus_Result
*
* example: http://localhost:3003/getStatus/C86FD5BDE466939CA194AE9AF0C0A708ABE6E26X
*
* app.get("/getStatus/:token", async (req, res) => {
*
* const { token } = req.params
*
* const createFlow = await FlowAPI.payment().getStatusByCommerceId(token)
*
* res.json(createFlow)
*
* })
*/
getStatus(token: string): Promise<Payment_GetStatus_Result>;
/**
* @function getStatusByCommerceId
* @param {string} commerceId
* @return {Promise<Payment_GetStatusByCommerceId_Result>} a object with type Payment_GetStatusByCommerceId_Result
*
* example: http://localhost:3003/getStatusByCommerceId/mf334
*
* app.get("/getStatusByCommerceId/:commerceOrder", async (req, res) => {
*
* const { commerceOrder } = req.params
*
* const createFlow = await FlowAPI.payment().getStatusByCommerceId(commerceOrder)
*
* res.json(createFlow)
*
* })
*/
getStatusByCommerceId(commerceId: string): Promise<Payment_GetStatusByCommerceId_Result>;
/**
* @function getStatusByFlowOrder
* @param {string} flowOrder
* @return {Promise<Payment_GetStatusByFlowOrder_Result>} a object with type Payment_GetStatusByFlowOrder_Result
*
* example: http://localhost:3003/getStatusByFlowOrder/1943140
*
* app.get("/getStatusByFlowOrder/:flowOrder", async (req, res) => {
*
* const { flowOrder } = req.params
*
* const createFlow = await FlowAPI.payment().getStatusByFlowOrder(flowOrder)
*
* res.json(createFlow)
*
* })
*/
getStatusByFlowOrder(flowOrder: string): Promise<Payment_GetStatusByFlowOrder_Result>;
/**
* @function getPayments
* @param {object} params Payment_getPayments_Options
* @return {Promise<Payment_getPayments_Result>} a object with type Payment_getPayments_Result
*
* example: http://localhost:3003/getPayments?date=2024-01-01
*
* app.get("/getPayments", async (req, res) => {
*
* const params = req.query as unknown as Payment_getPayments_Options
*
* const createFlow = await FlowAPI.payment().getPayments(params)
*
* res.json(createFlow)
*
* })
*/
getPayments(params: Payment_getPayments_Options): Promise<Payment_getPayments_Result>;
/**
* @function getStatusExtended
* @param {string} token
* @return {Promise<Payment_getStatusExtended_Result>} a object with type Payment_getStatusExtended_Result
*
* example: http://localhost:3003/getStatusExtended/C86FD5BDE466939CA194AE9AF0C0A708ABE6E26X
*
* app.get("/getStatusExtended/:token", async (req, res) => {
*
* const { token } = req.params
*
* const createFlow = await FlowAPI.payment().getStatusExtended(token)
*
* res.json(createFlow)
*
* })
*/
getStatusExtended(token: string): Promise<Payment_getStatusExtended_Result>;
/**
* @function getStatusByFlowOrderExtended
* @param {string} flowOrder
* @return {Promise<Payment_GetStatusByFlowOrderExtended_Result>} a object with type Payment_GetStatusByFlowOrderExtended_Result
*
* example: http://localhost:3003/getStatusByFlowOrderExtended/1943140
*
* app.get("/getStatusByFlowOrderExtended/:flowOrder", async (req, res) => {
*
* const { flowOrder } = req.params
*
* const createFlow = await FlowAPI.payment().getStatusByFlowOrderExtended(flowOrder)
*
* res.json(createFlow)
*
* })
*/
getStatusByFlowOrderExtended(flowOrder: string): Promise<Payment_GetStatusByFlowOrderExtended_Result>;
/**
* @function getTransactions
* @param {object} params Payment_GetTransactions_Options
* @return {Promise<Payment_getPayments_Result>} a object with type Payment_GetTransactions_Result
*
*
* example: http://localhost:3003/getTransactions?date=2024-01-01
*
* query : {data : string , start: 1, limit:10 }
*
* app.get("/getTransactions", async (req, res) => {
*
* const params = req.query as unknown as Payment_GetTransactions_Options
*
* const createFlow = await FlowAPI.payment().getTransactions(params)
*
* res.json(createFlow)
*
* })
*/
getTransactions(params: Payment_GetTransactions_Options): Promise<Payment_GetTransactions_Result>;
}
/**
*
*/
interface Refound_Create_Options {
refundCommerceOrder: string;
receiverEmail: string;
amount: number;
urlCallBack: string;
commerceTrxId?: string;
flowTrxId?: string;
}
interface Refound_Create_Result {
token: string;
flowRefundOrder: string;
date: string;
status: string;
/**
* created Solicitud creada
* accepted Reembolso aceptado
* rejected Reembolso rechazado
* refunded Reembolso reembolsado
* canceled Reembolso cancelado
*/
amount: number;
fee: number;
}
/**
* Iniciamos el envio de los parametros.
* @property {string} token - token de la solicitud : required
*
*/
interface Refound_GetStatus_Options {
token: string;
}
interface Refound_GetStatus_Result {
token: string;
flowRefundOrder: string;
date: string;
status: string;
/**
* created Solicitud creada
accepted Reembolso aceptado
rejected Reembolso rechazado
refunded Reembolso reembolsado
canceled Reembolso cancelado
*/
amount: number;
fee: number;
}
declare class Refound extends Transaction {
/**
* Iniciamos el envio de los parametros.
* @type {Object} RefoundCreateOptions
* @property {string} commerceOrder El orden del comercio : required
* @property {string} subject - La Descripción de la orden : required
* @property {number} amount - El Monto de la orden : required
* @property {string} email - El email del pagador : required
* @property {uri} urlConfirmation - <uri> El url callback del comercio donde Flow confirmará el pago : required
* @property {string} urlReturn - <uri> El url de retorno del comercio donde Flow redirigirá al pagador : required
* @property {number} paymentMethod ? - Identificador del medio de pago. Si se envía el identificador, el pagador será redireccionado directamente al medio de pago que se indique, de lo contrario Flow le presentará una página para seleccionarlo. El medio de pago debe haber sido previamente contratado. Podrá ver los identificadores de sus medios de pago en la sección "Mis Datos" ingresando a Flow con sus credenciales. Para indicar todos los medios de pago utilice el identificador: 9 Todos los medios
* @property {number} timeout ? - tiempo en segundos para que una orden expire después de haber sido creada. Si no se envía este parámetro la orden no expirará y estará vigente para pago por tiempo indefinido. Si envía un valor en segundos, la orden expirará x segundos después de haber sido creada y no podrá pagarse.
* @property {string} merchantId ? - El Id de comercio asociado. Solo aplica si usted es comercio integrador.
* @property {string} payment_currency ? - La moneda en que se espera se pague la orden
* @property {string} currency ? - La moneda de la orden
* @returns {Promise<{}>}
*/
create(params: Refound_Create_Options): Promise<Refound_Create_Result>;
cancel(params: Refound_Create_Options): Promise<Refound_Create_Result>;
/**
* getStatus : Obtener datos de compra segun el Token utilizado
* @param {string} token
* @returns Promise<Payment_GetStatus_Result >
*/
getStatus(token: string): Promise<Refound_GetStatus_Result>;
}
/**
* Init Class useutilityFlowAPI
* you can use 4 params :
* @param apikey :requeried - apikey from flowcl
* @param secretkey :requeried - secretkey from flowcl
* @param production :optional - type of development, can be production ('production','prod', 'p', 'true', true) or development (any else)
* @param debug :optional - true or false
*/
declare function useFlowAPI(params: Flow_API): useutilityFlowAPI;
/**
* Init Class useutilityFlowAPI
* you can use 4 params :
* @param apikey :requeried - apikey from flowcl
* @param secretkey :requeried - secretkey from flowcl
* @param production :optional - type of development, can be production ('production','prod', 'p', 'true', true) or development (any else)
* @param debug :optional - true or false
*/
declare class useutilityFlowAPI {
private SECRET_KEY;
private API_KEY;
private API_URL;
private API_PROD;
/**
* @param apiKey string |undefined
* @param secretKey string |undefined
* @param development boolean ( production | developemnt )
*/
constructor(params: Flow_API);
private checkProduction;
private debugs_dev;
private debugs_prod;
payment(): Payment;
refound(): Refound;
post<T>(URL: string, params: T): Promise<unknown>;
get<T>(URL: string, params: T): Promise<unknown>;
}
declare function generateCommerceOrder(text: string): Promise<string>;
interface Refound_Cancel_Options {
token: string;
}
interface Refound_Cancel_Result {
token: string;
flowRefundOrder: string;
date: string;
status: string;
/**
* created Solicitud creada
* accepted Reembolso aceptado
* rejected Reembolso rechazado
* refunded Reembolso reembolsado
* canceled Reembolso cancelado
*/
amount: number;
fee: number;
}
export { type FlowAPI_Error_Result, type Flow_API, type Payment_CreateEmail_Options, type Payment_CreateEmail_Result, type Payment_Create_Options, type Payment_Create_Result, type Payment_GetStatusByCommerceId_Options, type Payment_GetStatusByCommerceId_Result, type Payment_GetStatusByFlowOrderExtended_Options, type Payment_GetStatusByFlowOrderExtended_Result, type Payment_GetStatusByFlowOrder_Options, type Payment_GetStatusByFlowOrder_Result, type Payment_GetStatus_Options, type Payment_GetStatus_Result, type Payment_GetTransactions_Options, type Payment_GetTransactions_Result, type Payment_getPayments_Options, type Payment_getPayments_Result, type Payment_getStatusExtended_Options, type Payment_getStatusExtended_Result, type Refound_Cancel_Options, type Refound_Cancel_Result, type Refound_Create_Options, type Refound_Create_Result, type Refound_GetStatus_Options, type Refound_GetStatus_Result, type Request_Signataure, generateCommerceOrder, type lastError, type paymentData, type pending_info, type responseFlowAPI, useFlowAPI };