> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fintoc.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Prueba tu integración

> Simula suscripciones y cargos para probar tu integración.

Para confirmar que tu integración funciona correctamente, simula suscripciones y cargos sin mover dinero usando valores especiales en el modo de prueba.

Los valores especiales de prueba te permiten simular varios escenarios:

* Suscripciones y cargos exitosos
* Errores de suscripción por datos inválidos o autorización fallida del usuario
* Cargos fallidos

Siempre que trabajes con una cuenta de prueba, usa las [API Keys](/es/v2023-11-15/docs/home/api-keys) de prueba en todas las llamadas a la API.

# Tipos de MFA disponibles

Estos son los distintos MFA que tenemos disponibles dentro del modo de prueba:

* **Dispositivo de seguridad**: dispositivo electrónico que los bancos entregan a sus clientes para autorizar transacciones. Generalmente muestran un número que cambia cada cierto tiempo.
* **Aplicación móvil**: los bancos ofrecen autorizar transacciones a través de sus aplicaciones móviles. En este caso, el usuario debe autorizar la transacción desde su *smartphone* y detectaremos automáticamente que la transacción fue autorizada.
* **SMS**: el banco envía un código (generalmente numérico) al teléfono del usuario para que pueda usarse para autorizar la transacción.
* **Tarjeta de coordenadas**: tarjeta que los bancos entregan a sus clientes con una tabla con números. El usuario debe ingresar los números ubicados en las coordenadas que pide el banco. Puedes leer más sobre las tarjetas de coordenadas [aquí](https://es.wikipedia.org/wiki/Tarjeta_de_coordenadas).

# Simular suscripciones

Fintoc proporciona valores especiales de prueba solo para Chile, ya que es el único país compatible con este producto. Con el modo de prueba de Subscription, puedes probar todos los flujos de autorización que tu usuario podría seguir.

## Chile 🇨🇱

En Chile, una suscripción tiene dos pasos:

1. El usuario inicia sesión en su cuenta bancaria.
2. El usuario autoriza la suscripción.

Fintoc proporciona valores especiales de prueba para cada uno de esos pasos.

### Credenciales de prueba

Puedes usar las siguientes credenciales de prueba para iniciar sesión en una cuenta bancaria.

| Usuario    | Contraseña                               |
| :--------- | :--------------------------------------- |
| 41614850-3 | <span class="notranslate">jonsnow</span> |
| 40427672-7 | <span class="notranslate">jonsnow</span> |
| 41579263-8 | <span class="notranslate">jonsnow</span> |

### MFA para autorizar la suscripción

Para elegir qué método de autorización usar en el modo de prueba para confirmar la suscripción, debes seleccionar un número de cuenta bancaria de origen específico durante el flujo de suscripción. El entorno de modo de prueba **siempre** mostrará las mismas cuentas.

A continuación, una lista de los números de cuenta bancaria del modo de prueba y a qué tipo de MFA corresponde cada uno, junto con el código correcto a ingresar.

| Número de cuenta | Tipo de MFA              | Código correcto      |
| :--------------- | :----------------------- | :------------------- |
| 813990168        | Dispositivo de seguridad | `000000`             |
| 422159212        | Aplicación móvil - Éxito | `N/A`                |
| 5233137377       | Aplicación móvil - Fallo | `N/A`                |
| 170086177        | SMS                      | `0000`               |
| 746326042        | Tarjeta de coordenadas   | `['00', '00', '00']` |
|                  |                          |                      |

### Probar errores

Para probar el manejo de errores en Subscriptions en modo de prueba, el Sandbox provee cuentas de débito ficticias y deterministas. Cuando creas una suscripción y seleccionas una de las cuentas a continuación, la suscripción fallará con el código de error correspondiente:

<Info>
  * La "cuenta terminada en XXXX" se refiere a los últimos 4 dígitos del número de cuenta del débito mostrado en el Sandbox.
  * Estos comportamientos ocurren solo en modo de prueba y nunca generan un cargo ni crean un mandato real.
</Info>

| Disparador de error (elige esta cuenta de débito / acción)            | Código de error resultante | Qué sucede                                                                                                                |
| :-------------------------------------------------------------------- | :------------------------- | :------------------------------------------------------------------------------------------------------------------------ |
| Cuenta de débito terminada en 9999                                    | `internal_error`           | Simula una falla inesperada del lado del servidor. Manéjalo como un error genérico reintentable.                          |
| Cuenta de débito terminada en 8888                                    | `request_timeout`          | Simula un timeout de red o de procesamiento en la solicitud. Tu cliente debe implementar idempotencia y reintentos.       |
| Cuenta de débito terminada en 7777                                    | `authorization_timeout`    | Simula un flujo de autorización que nunca se completa dentro de la ventana permitida. Trátalo como un timeout en la auth. |
| Cualquier cuenta con MFA (código/OTP) usando un OTP distinto a 000000 | `authorization_failed`     | Simula un intento de MFA incorrecto o fallido durante la autorización.                                                    |
| Inicia una autorización y espera 10 minutos sin completarla           | `subscription_expired`     | El subscription intent expira automáticamente. Los nuevos intentos deben iniciar un intent nuevo.                         |

# Simular cargos

Para simular un cargo exitoso o fallido, puedes usar el atributo amount:

* Montos mayores o iguales a `500` resultan en un cargo `succeeded`.
* Montos menores a 500 `resultan` en un cargo `failed`.

En modo de prueba, ambos escenarios tienen notificaciones por webhook inmediatas. Antes de realizar un cargo de prueba, debes crear una suscripción de prueba.

## Ejemplo - Exitoso

```curl Request theme={null}
curl --request POST \
     --url https://api.fintoc.com/v1/charges \
     --header 'Accept: application/json' \
     --header 'Authorization: sk_test_9c8dr3ryBTx1VcJzuDgpm4H' \
     --header 'Content-Type: application/json' \
     --data '
{
     "currency": "clp",
     "subscription_id": "sub_123ad123",
     "amount": 500
}
'
```

```json Response theme={null}
{
 "id": "ch_e6dGMaB5UVy2QV3j",
 "failure_code": null,
 "created_at": "2022-07-15T19:09:51Z",
 "object": "charge",
 "status": "pending",
 "amount": 509,
 "currency": "CLP",
 "metadata": {},
 "subscription_id": "sub_gJYEapRyUg07yvz3"
}
```

## Ejemplo - Fallido

```curl Request theme={null}
curl --request POST \
     --url https://api.fintoc.com/v1/charges \
     --header 'Accept: application/json' \
     --header 'Authorization: sk_test_9c8dr3ryBTx1VcJzuDgpm4H' \
     --header 'Content-Type: application/json' \
     --data '
{
     "currency": "clp",
     "subscription_id": "sub_123ad123",
     "amount": 499
}
'
```

```json Response theme={null}
{
 "id": "ch_e6dGMaB5UVy2QV3j",
 "failure_code": null,
 "created_at": "2022-07-15T19:09:51Z",
 "object": "charge",
 "status": "pending",
 "amount": 50,
 "currency": "CLP",
 "metadata": {},
 "subscription_id": "sub_gJYEapRyUg07yvz3"
}
```

# Probar webhooks

Para probar webhooks tienes dos opciones:

1. Realiza acciones en modo de prueba que envíen eventos legítimos a tu endpoint. Por ejemplo, para disparar el evento `charge.succeeded`, puedes usar un valor de prueba que produzca un cargo exitoso.
2. [Disparar eventos de prueba desde el Dashboard](/es/v2023-11-15/docs/resources/webhooks-walkthrough/webhooks-testing)
