> For the complete documentation index, see [llms.txt](https://docs.payvalida.com/api-cashin-multiproducto/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payvalida.com/api-cashin-multiproducto/api-cashin-dinamico/consulta-de-productos.md).

# Consulta Dinámica

Consulta de referencias disponibles para pago de acuerdo a un criterio de búsqueda.

El proceso consiste en que Payvalida realiza una solicitud con el criterio de búsqueda definido. El comercio tiene total control sobre la referencia a recaudar, la red de recaudo por la cual realizar el pago, así como el punto habilitado y su posición geográfica. En la respuesta el comercio entregará la referencia o referencias de pago asociadas a la solicitud.

Al igual que con Cashin+, la referencia deberá poseer un prefijo de tres digitos que permita identificar al comercio asociado a ella, este prefijo no es necesario para convenios privados con la Red Baloto.

En la respuesta, cada referencia de pago cuenta con una de las tres posibles opciones (payment\_type) que permite a Payvalida aceptar el monto enregado en el punto de recaudo:

* **1-Monto abierto**: El valor entregado a la Red es cero ($0), el cliente puede hacer un pago por un valor que se encuentra dentro de un rango definido por el comercio y que el cliente debe conocer.
* **2-Monto fijo**: Se retorna un valor asociado a la referencia, es el único valor que el cliente puede pagar.
* **3-Monto sugerido**: Se retorna un valor asociado a la referencia, sin embargo el cliente puede pagar un valor mayor o menor, dependiendo de un rango definido por el comercio y que el cliente debe conocer.

{% hint style="warning" %}
La respuesta debe ser entregada en máximo 14 segundos.
{% endhint %}

## Consulta dinámica

<mark style="color:blue;">`GET`</mark> `https://[URL definida por el comercio]`

{% tabs %}
{% tab title="Request" %}

| Name             | Type   | Description                                                                                                                                                                                     |
| ---------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| request\_type    | string | <p>Valor del 1 al 9 el cual puede ser habilitado como criterio de búsqueda en la Red VIA Baloto dependiendo del caso de uso del comercio. <br><br>Numérico 1 carácter.</p>                      |
| reference        | string | <p>Referencia principal para la consulta de referencias de pago. <br><br>Numérico máximo de 16 caracteres.</p>                                                                                  |
| reference\_aux   | string | <p>Referencia auxiliar la cual puede ser habilitada como criterio de búsqueda en la Red Via Baloto dependiendo del caso de uso del comercio. <br><br>Numérico máximo de 16 caracteres.</p>      |
| netname          | string | <p>Nombre de identificación única de la Red de Recaudo que está procesando la transacción. <br><br>Alfanumérico máximo de 40 caracteres.</p>                                                    |
| checksum         | string | <p>Cadena de comprobación SHA512(reference + money + netname + timestamp + FIXED\_HASH). <br><br>Alfanumérico 128 caracteres.</p>                                                               |
| money            | string | <p>Código de la moneda de la petición. (1 para Colombia). <br><br>Alfanumérico máximo de 3 caracteres.</p>                                                                                      |
| timestamp        | number | <p>La fecha de la petición en formato Unix (segundos). <br><br>Máximo 10 caracteres.</p>                                                                                                        |
| transaction      | string | <p>ID único de transacción de consulta enviada por la Red de recaudo. <br><br>Alfanumérico máximo de 40 caracteres.</p>                                                                         |
| teller           | string | <p>Código de la tienda/punto en dónde se realiza la transacción (IP o punto de venta). <br><br>Alfanumérico máximo de 20 caracteres.</p>                                                        |
| terminal\_code   | string | <p>Código de la terminal en dónde se realiza la transacción. <br><br>Alfanumérico máximo de 20 caracteres (Depende de los codigo de la Red). </p>                                               |
| geographic\_code | string | <p>Código de la localidad en dónde se realiza la transacción, depende de la red/país que lo invoque. Colombia (código DANE). <br><br>Alfanumérico máximo de 10 caracteres.</p>                  |
| key\_value       | string | <p>Para incluir posible configuración o condición especial que se deba tener en cuenta en la transacción. Cadena con estructura llave-valor. <br><br>Alfanumérico máximo de 500 caracteres.</p> |

{% endtab %}

{% tab title="Request (Ejemplo)" %}

```shellscript
curl --location --request GET 'https://[URL definida por el comercio]?request_type=1&reference=1234567890123456&reference_aux=&netname=NOMBRE_RED&checksum=2d80e4bdabd098f62df0dc9395f7c0e99dce7901adf2898d22c4762307369a58dbfe9edd7abecf5dee69a4a50340a0112e47371d49acec7c5f370cee3067b498&money=1&timestamp=1712345678&transaction=TX-001&teller=CAJA01&terminal_code=TERM01&geographic_code=11001&key_value='
```

{% endtab %}

{% tab title="Response" %}

| Name                 | Type    | Description                                                                                                                                                                                                             |
| -------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| code                 | string  | <p>0000 cuando la respuesta sea exitosa. <br><br>String numérico de 4 caracteres.</p>                                                                                                                                   |
| text                 | string  | <p>Descripción del error, "OK" cuando la respuesta sea exitosa. <br><br>Alfanumérico máximo 20 caracteres.</p>                                                                                                          |
| description\_order   | string  | <p>Descripción general de la orden. <br><br>Alfanumérico máximo 30 caracteres por restricciones de la Red.</p>                                                                                                          |
| email                | string  | <p>Email del cliente, donde se notificará el pago de la orden. <br><br>Alfanumérico máximo de 100 caracteres.</p>                                                                                                       |
| timestamp            | int     | <p>Tiempo en segundos formato Unix.<br><br>Numérico Max 10 caracteres.</p>                                                                                                                                              |
| payment\_type        | int     | <p>Tipo de valor a recaudar:<br>1. Monto abierto<br>2. Monto fijo<br>3. Monto sugerido. <br><br>Numérico 1 carácter.</p>                                                                                                |
| payment\_reference   | string  | <p>Referencia de pago, la que se debe enviar al momento de registrar la transacción financiera.<br><br>Máximo de 16 caracteres, numéricos.</p>                                                                          |
| payment\_amount      | float32 | <p>Valor del pago, cero cuando es Monto abierto. <br><br>Numérico máximo de 20 caracteres.</p>                                                                                                                          |
| payment\_order       | string  | <p>Código único para todas las opciones de pago que se puedan registrar para el comercio. <br>No debe contener guiones bajos ni caracteres especiales. <br><br>Alfanumérico máximo de 100 caracteres.</p>               |
| payment\_description | string  | <p>Descripción específica para la referencia de pago.<br><br>Alfanumérico máximo de 30 caracteres.</p>                                                                                                                  |
| payment\_min         | float32 | <p>Valor mínimo del pago, solo para monto abierto(1) y monto sugerido(3). <br><br>Numérico máximo de 20 caracteres.</p>                                                                                                 |
| payment\_max         | float32 | <p>Valor máximo del pago, solo para monto abierto(1) y monto sugerido(3). <br><br>Numérico máximo de 20 caracteres.</p>                                                                                                 |
| transaction\_cost    | float32 | <p>Costo de la transacción, informativo, no afecta el valor de la transacción. <br><br>Numérico máximo de 20 caracteres.</p>                                                                                            |
| checksum             | string  | <p>Cadena de comprobación, calculada con SHA512(timestamp + sum(payment\_amount) + FIXED\_HASH). <br><br>Donde el "payment\_amount" es un valor entero truncado sin decimales. <br><br>Alfanumérico 128 caracteres.</p> |
| user\_di             | string  | Número del documento del usuario.                                                                                                                                                                                       |
| user\_type\_di       | string  | Tipo de documento.                                                                                                                                                                                                      |
| user\_name           | string  | Nombre del usuario.                                                                                                                                                                                                     |
| {% endtab %}         |         |                                                                                                                                                                                                                         |

{% tab title="Response (Ejemplo)" %}

```json
{
    "code":"0000",
    "text": "OK",
    "data": {
        "description_order":"Servicios financieros",
        "email":"john.doe@payvalida.com",
        "timestamp":1619649378,
        "payment_options": [
            {
                "payment_type": 1,
                "payment_reference": "902882727241",
                "payment_amount": 0,
                "payment_order":"orden_unica_92828992",
                "payment_description": "Credito consumo 9989",
                "payment_min":1000,
                "payment_max":1000000
            },
            {
                "payment_type": 2,
                "payment_reference": "902882727242",
                "payment_amount": 25000,
                "payment_order":"orden_unica_92828993",
                "payment_description": "Credito Hipotecario 8766"
            },
            {
                "payment_type": 3,
                "payment_reference": "902882727243",
                "payment_amount": 56000,
                "payment_order":"orden_unica_92828994",
                "payment_description": "Credito rotativo 8788",
                "payment_min":20000,
                "payment_max":130000
            }
        ],
        "transaction_cost": 0.00,
        "checksum": "a5a43bfb7e2t6971062303f0a70722c8b6a2d5973a1c1e9f90ee74a9651e79410e4c04c384cffe406077d426070e070a1149e136bb035288b7c6ad0f957eff49",
        "user_di":"5555555",
        "user_type_di":"CC",
        "user_name":"carlos alberto gonzalez gonzalez"  
    }
}
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Los campos user\_di, user\_type\_di y user\_name, son requeridos para los comercios en Ecuador
{% endhint %}
