# API Epagos

Este repositorio contiene código JS que hace consultas a PHP para la generacion de comprobantes mediante Epagos

### Requisitos del servidor

-   PHP instalado
-   Extensión PDO habilitada

## Solicitud de pago recurrente

### Registrar el usuario (plan de pago)

Para la registracion de planes de pagos recurrentes se debe importar el siguiente JS e invocar la funcion _registrar_cuentas_cliente()_.

Si el numero de plan ya se encuentra registrado y se desea modificar el CBU se debe invocar la funcion _registrar_cuentas_cliente()_, con los nuevos datos.

La funcio _registrar_cuentas_cliente()_ registra plan de pagos en E-pagos, y lo guarda en la tabla _ppc_epagos_debito_directo_registrados_, si ya se encuentra registrado en la misma, se da debaja el existente y se crea un registro nuevo con los nuevos datos.

_Desarrollo_

```html
<script src="http://dev-sip-web08.vicentelopez.gov.ar/api-epagos/ePagos_recurrencia.js" data-api-entorno="dev"></script>
```

_Productivo_

http

```html
<script src="http://prd-sip-web07.vicentelopez.gov.ar/api-epagos/ePagos_recurrencia.js" data-api-entorno="production"></script>
```

https

```html
<script src="https://apiepagos.vicentelopez.gov.ar/api-epagos/ePagos_recurrencia.js" data-api-entorno="production"></script>
```

_Metodo de registracion_

```javascript
const btnRegistrar = async (...) => {
    await registrar_cuentas_cliente(identificador_cliente, tipo_operacion, cuit, cbu, email, telefono);
};
```

_Variables_

-   identificador_cliente -> Numero de plan **Number**
-   tipo_operacion -> [Numero de tipo de operacion](#tipos-de-operaciones) **Number**
-   cuit -> [Numero de Cuit](#cbu-y-cuit-para-testing) **String**
-   cbu -> [Numero de CBU](#cbu-y-cuit-para-testing) **String**
-   email -> Email vinculado a ese plan de pago **String**
-   telefono -> Telefono vinculado a ese plan de pago (opcional) **String/Null**

---

### Store Procedures Planes de Pagos registrados

-   **sp_get_clientes_registrados_epagos_dd(xn_plan INTEGER, xc_cuenta INTEGER, xc_sistema SMALLINT)**

    Obtener plan de pago registrado, se puede consultar por n_plan o por c_cuenta y c_sistema.

    -   Consulta por Numero de Plan: xn_plan igual al numero de plan, xc_cuenta y xc_sistema se envian como null
    -   Consulta por Numero de Cuenta: xn_plan se envia como null, xc_cuenta es el numero de cuenta y el xc_sistema es el sistema al que pertenece ese c_cuenta

-   **sp_baja_clientes_registrados_epagos_dd(xn_plan integer)**

    Baja de pago por recurrencia de debito directo al n_plan enviado

-   **sp_put_clientes_registrados_epagos_dd(xn_plan INTEGER, xd_email (50), xd_telefono VARCHAR(20))**

    Modifica el email y el telefono del asociados a ese n_plan

## Solicitud de Pago

Genera una solicitud de pago por Epagos y retorna QR tanto a la billetera virtual de Epagos como el QR 3.0 interoperable. Se debe importar el siguiente JS e invocar la funcion _solicitud_pago()_

_Desarrollo_

```html
<script src="http://dev-sip-web08.vicentelopez.gov.ar/api-epagos/ePagos.js" data-api-entorno="dev"></script>
```

_Productivo_

http

```html
<script src="http://prd-sip-web07.vicentelopez.gov.ar/api-epagos/ePagos.js" data-api-entorno="production"></script>
```

https

```html
<script src="https://apiepagos.vicentelopez.gov.ar/api-epagos/ePagos.js" data-api-entorno="production"></script>
```

_Metodo de solicitud de pago_

```javascript
const btnSolicitud = async (...) => {

    const obj = {
        tasa: "ABL",
        cuenta: 12341,
        fechaV: "2023-07-05",
        valor: 20.2,
        email: null,
        nombre: "ema",
        recibo: 111,
        opc_pdf: false,
        opc_generar_pdf: false,
        opc_devolver_qr: true,
        id_sistema:"QR DDJJ"
    };

    await solicitud_pago(obj);
};
```

_Variables_

-   tasa -> Tasa del comprobrante generado Ej: ABL, SEH **String**
-   cuenta -> Numero de Cuenta **Number**
-   fechaV -> Fecha de vencimiento (YYYY-MM-DD) **String**
-   valor -> Monto a pagar (separador de miles sea .) **Number**
-   email -> Email **String**
-   nombre -> Nombre **String**
-   recibo -> Numero de comprobrante **Number**
-   opc_pdf -> Si retorna pdf **Boolean**
-   opc_generar_pdf -> Si genera pdf **Boolean**
-   opc_devolver_qr -> Si retorna QR **Boolean**
-   id_sistema -> id para busqueda en Epagos **String**

## Solicitud de Pago por Lote

Genera una solicitud de pago por Epagos y retorna QR tanto a la billetera virtual de Epagos como el QR 3.0 interoperable. Se debe importar el siguiente JS e invocar la funcion _solicitud_pago_lote()_

_Desarrollo_

```html
<script src="http://dev-sip-web08.vicentelopez.gov.ar/api-epagos/ePagos.js" data-api-entorno="dev"></script>
```

_Productivo_

http

```html
<script src="http://prd-sip-web07.vicentelopez.gov.ar/api-epagos/ePagos.js" data-api-entorno="production"></script>
```

https

```html
<script src="https://apiepagos.vicentelopez.gov.ar/api-epagos/ePagos.js" data-api-entorno="production"></script>
```

_Metodo de solicitud de pago_

```javascript
const btnSolicitud = async (...) => {

    let array = [
                    { tasa: "ABL", cuenta: 12341, fechaV: "2023-06-16", valor: 1523.2, email: null, nombre: "ema", recibo: 111, opc_pdf: false, opc_generar_pdf: false, opc_devolver_qr: true,id_sistema:"QR DDJJ" },
                    { tasa: "SGH", cuenta: 3412, fechaV: "2023-06-16", valor: 120.65, email: null, nombre: "jhon", recibo: 222, opc_pdf: false, opc_generar_pdf: false, opc_devolver_qr: true,id_sistema:"QR DDJJ" },
                    { tasa: "ABL", cuenta: 124567, fechaV: "2023-06-16", valor: 1457.1, email: null, nombre: "nikolay", recibo: 333, opc_pdf: false, opc_generar_pdf: false, opc_devolver_qr: true,id_sistema:"QR DDJJ" },
                ];

    await solicitud_pago_lote(array);
};
```

_Variables_

-   tasa -> Tasa del comprobrante generado Ej: ABL, SEH **String**
-   cuenta -> Numero de Cuenta **Number**
-   fechaV -> Fecha de vencimiento (YYYY-MM-DD) **String**
-   valor -> Monto a pagar (separador de miles sea .) **Number**
-   email -> Email **String**
-   nombre -> Nombre **String**
-   recibo -> Numero de comprobrante **Number**
-   opc_pdf -> Si retorna pdf **Boolean**
-   opc_generar_pdf -> Si genera pdf **Boolean**
-   opc_devolver_qr -> Si retorna QR **Boolean**

## Descargar Archivo

Esta función _descargarArchivo(Base64, string)_ permite descargar un archivo PDF decodificado a partir de una cadena Base64. Puedes proporcionar un nombre personalizado para el archivo, o se asignará uno por defecto si no se especifica.

```javascript
descargarArchivo(pdfBase64, "nombre del archivo");
```

### CBU y CUIT para Testing

| CBU                    | Alias          | CUIT        | Tipo persona |
| ---------------------- | -------------- | ----------- | ------------ |
| 3220002204000040970011 | prueba.debin   | 20123456781 | Física       |
| 3220001101000040970011 | prueba.debin.2 | 27123456781 | Física       |
| 3220001101000040970011 | prueba.debin.2 | 30111111110 | Jurídica     |
| 0070314530004001400167 | prueba.debin.3 | 20004940548 | Física       |

### Tipos de Operaciones

| ID  | Tipo | Sigla   | Nombre                                                         |
| --- | ---- | ------- | -------------------------------------------------------------- |
| 1   | M    | TSG     | Tasa de servicios generales                                    |
| 2   | M    | TISH    | Tasa de Inspección de Seguridad e Higiene                      |
| 3   | M    | TCRVM   | Tasa de Conservación de la Red Vial Municipal                  |
| 4   | M    | ROD     | Patente                                                        |
| 5   | M    | CEM     | Tasa de Cementerio                                             |
| 6   | M    | COM     | Tasa de Comercio                                               |
| 7   | M    | COM_PUB | Tasa de Comercio - Publicidad y Propaganda                     |
| 8   | M    | COM_SEG | Tasa de Comercio - Tasa de Seguridad                           |
| 9   | M    | COM_HAB | Tasa de Comercio - Tasa de Habilitación                        |
| 10  | M    | COM_ANT | Tasa de Comercio - Tasa por Inspección de Seguridad de Antenas |
| 11  | M    | TASAS   | Tasas Varias                                                   |
| 12  | M    | INF     | Infracciones                                                   |
| 13  | M    | INF_TRA | Infracciones - Tránsito                                        |
| 14  | M    | INF_COM | Infracciones - Comercio                                        |
| 15  | M    | CONTRA  | Contravenciones Varias                                         |
| 16  | M    | DER_OFI | Derechos de oficina                                            |
| 17  | M    | CONTRIB | Contribuciones Varias                                          |
| 18  | M    | CONTRAC | Contracargo descontado                                         |
| 19  | M    | SANIT   | Sanitario                                                      |
| 20  | M    | SERV    | Servicio                                                       |
| 21  | M    | PDP     | PLAN DE PAGO                                                   |
