> ## 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.

# Quickstart

> Prueba la API de Checkout Session en menos de 10 minutos

Para empezar a usar la API de Checkout Session de Fintoc, solo necesitas crear una cuenta en nuestro Dashboard y seguir estos cinco pasos:

1. Obtén tus API Keys de prueba
2. Crea una Checkout Session
3. Redirige a tu usuario a la página de checkout alojada por Fintoc
4. Maneja los eventos posteriores al pago
5. Realiza tu primer pago

# Paso 1: Configuración inicial

## Obtén tus API Keys de prueba

Cada interacción con la API de Fintoc debe autenticarse con las [API Keys](/es/v2023-11-15/docs/home/api-keys) de tu cuenta Fintoc. Si una interacción con la API no incluye tu API Key o incluye una API Key incorrecta, Fintoc devolverá un error.

Cada cuenta de Fintoc tiene dos pares de claves: uno corresponde al [modo prueba](), mientras que el otro corresponde al entorno real de la API. Cada recurso se almacena ya sea en [modo prueba o en modo live](/es/v2023-11-15/docs/resources/test-mode), y los recursos de un entorno no pueden ser manipulados por recursos del otro entorno.

Tus API Keys estarán disponibles en el [Dashboard](https://app.fintoc.com). Primero necesitas crear una cuenta en el Dashboard de Fintoc. Una vez creada tu cuenta de Fintoc, podrás obtener tus API Keys. En este caso, debes usar la **Public Key** y **Secret Key** del [modo prueba](/es/v2023-11-15/docs/resources/test-mode). Para identificarlas fácilmente, añadimos el prefijo **pk\_test\_** y **sk\_test\_**, respectivamente.

## Opcional: instala el SDK de backend de Fintoc

<InstallSDK />

# Paso 2: Crea una Checkout Session

Usando tu **Secret Key** de prueba, crea una Checkout Session desde tu backend con el monto y la moneda del pago. Siempre crea la Checkout Session desde tu backend, o un usuario malicioso podría alterar cualquiera de esos campos.

Si planeas usar el producto de Reembolsos, debes incluir un `customer_email` en la solicitud de la Checkout Session.

Aquí hay un ejemplo de creación de una Checkout Session para Chile:

```curl theme={null}
curl --request POST "https://api.fintoc.com/v1/checkout_sessions" \
  --header "Authorization: YOUR_TEST_SECRET_API_KEY" \
  --header "Content-Type: application/json" \
  --data-raw '{
    "amount": 2476,
    "currency": "CLP",
    "customer_email": "name@example.com",
    "success_url": "https://merchant.com/success",
    "cancel_url": "https://merchant.com/987654321"
  }'
```

```javascript Node theme={null}
const { Fintoc } = require('fintoc');

const fintoc = new Fintoc('YOUR_TEST_SECRET_API_KEY');

const checkoutSession = await fintoc.checkoutSessions.create({
  amount: 1000,
  currency: 'mxn',
  customer_email: 'name@example.com'
});
```

```python theme={null}
from fintoc import Fintoc

client = Fintoc('YOUR_TEST_SECRET_API_KEY')

checkout_session = client.checkout_sessions.create(
  amount=1000,
  currency='clp',
  customer_email='name@example.com'
)
```

```ruby theme={null}
require 'net/http'
require 'uri'
require 'json'

checkout_session = {
  amount: 1000,
  currency: 'clp',
  customer_email: 'name@example.com'
}

uri = URI("https://api.fintoc.com/v1/checkout_sessions")

header = {
  Accept: 'application/json', Authorization: 'YOUR_TEST_SECRET_API_KEY'
}

http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri, header)
request.body = checkout_session.to_json

response = http.request(request)
```

Si quieres crear una Checkout Session para México, cambia la moneda a `MXN`.

<Warning>
  **Las monedas se representan como enteros**

  La API de Fintoc representa las monedas en sus unidades más pequeñas posibles sin decimales (como un entero). Eso significa que **un monto de MXN 10.29 es representado por Fintoc como 1029**. Puedes leer más sobre las monedas [aquí](/es/v2023-11-15/docs/home/currencies).
</Warning>

La respuesta debería verse así:

```json theme={null}
{
  "id": "cs_li5531onlFDi235",
  "object": "checkout_session",
  "mode": "test",
  "status": "created",
  "amount": 350000,
  "currency": "CLP",
  "created_at": "2024-06-04T15:32:46.721Z",
  "updated_at": "2024-06-04T15:32:46.721Z",
  "success_url": "https://merchant.com/success",
  "cancel_url": "https://merchant.com/987654321",
  "redirect_url": "https://checkout.fintoc.com/checkout_session_01HXY3Z7X5YQ54V8G2E1KJQAVF",
  "metadata": {},
  "customer": {}
}
```

# Paso 3: Redirige a tu usuario a la página de checkout alojada por Fintoc

Tu `checkout_session` recién creada debería contener el atributo `redirect_url`. Debes redirigir a tu usuario a esta url para completar el flujo de pago.

<Frame caption="Flujo de pago cuando el usuario selecciona &#x22;Paga con tu banco&#x22;">
  <img src="https://mintcdn.com/fintoc-49b8bee8/SkvJJ-DZ5D4yC6tQ/images/d39b082fafc3431f6752955cfa1bb4825fd80b45c0ec19ab071cb35768529c65-bank-transfer-payment-flow.png?fit=max&auto=format&n=SkvJJ-DZ5D4yC6tQ&q=85&s=5264a6ee2e783b2de54f1e13a177a63a" width="1988" height="708" data-path="images/d39b082fafc3431f6752955cfa1bb4825fd80b45c0ec19ab071cb35768529c65-bank-transfer-payment-flow.png" />
</Frame>

# Paso 4: Maneja los eventos posteriores al pago

Fintoc envía un evento `checkout_session.finished` cuando el pago relacionado con una sesión se completa. Usa la [guía de webhooks](/es/v2023-11-15/docs/resources/webhooks-walkthrough) para recibir estos eventos y ejecutar acciones, como enviar un correo de confirmación de orden a tu cliente, registrar la venta en una base de datos o iniciar un flujo de envío.

Escucha estos eventos en lugar de esperar un callback del cliente. Desde el lado del cliente, el cliente podría cerrar la ventana del navegador o salir de la app antes de que se ejecute el callback, y clientes maliciosos podrían manipular la respuesta.

Recomendamos manejar los siguientes eventos:

| Evento                      | Descripción                                                                                                                                                    | Acción                                                                                                       |
| :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------- |
| `checkout_session.finished` | Enviado cuando un cliente ha completado un pago. El webhook contiene información sobre el Pago incluyendo su estado final.                                     | Dependiendo del estado final del pago relacionado, confirma la orden al cliente o ofrece reintentar el pago. |
| `checkout_session.expired`  | Se activa cuando un cliente sale del flujo de pago antes de terminar                                                                                           | Ofrece al cliente otro intento de pago.                                                                      |
| `payment_intent.succeeded`  | Enviado cuando el pago relacionado con una checkout session se completa con éxito. Es útil para confirmar pagos que estaban previamente en estado pendiente    | Confirma la orden del cliente                                                                                |
| `payment_intent.failed`     | Enviado cuando el pago relacionado con una checkout session falla. Se usa para determinar el estado final de pagos que estaban previamente en estado pendiente | Ofrece al cliente otro intento de pago.                                                                      |

<Info>
  **Aprende más sobre webhooks**

  Para aprender más sobre cómo crear tu propio endpoint de webhook, probar tu endpoint de webhook y las mejores prácticas de seguridad, lee nuestra [guía de Webhooks](/es/v2023-11-15/docs/resources/webhooks-walkthrough).
</Info>

# Paso 5: Realiza tu primer pago

Una vez que accedas a la página de checkout alojada por Fintoc, sigue el flujo de pago usando los [valores especiales de prueba de Fintoc](/es/v2023-11-15/docs/payments/payment-initiation-test-your-integration). Para un pago exitoso, puedes usar uno de estos valores:

* En Chile, selecciona cualquier banco e inicia sesión usando el rut `41614850-3` y la contraseña `jonsnow`. Una vez que hayas iniciado sesión en el banco, selecciona la cuenta con el número `422159212`. Después de seleccionar esa cuenta, espera 5 segundos y el pago debería ser exitoso.
* Para México, selecciona cualquier banco y escribe el número `5555555555`. Espera 5 segundos y el pago debería ser exitoso.

Deberías haber recibido un evento `checkout_session.finished` con un pago exitoso en tu endpoint de webhook.

¡Felicitaciones! ¡Acabas de realizar tu primer pago con Fintoc! Para probar diferentes flujos de pago, consulta los [valores especiales de prueba de Fintoc](/es/v2023-11-15/docs/payments/payment-initiation-test-your-integration).
