# Bienvenida(o) 🖖

¡Gracias por interesarte en [Preauth](https://preauth.io)!, nosotras(os) estamos muy contentos de tenerte aquí en la documentación, sabemos lo difícil y doloroso que suelen ser algunos documentos técnicos, pero te prometemos hacer el esfuerzo de que esta sea una experiencia agradable, desde ya nos puedes escribir cuando quieras a <devs@preauth.io>

Para comenzar te recomendamos seguir nuestra guía de [Primeros pasos](/primeros-pasos).

{% hint style="success" %}
Únete a nuestro [*<mark style="color:blue;">espacio de Slack</mark>*](https://join.slack.com/t/preauth-soporte/shared_invite/zt-18pzujyy8-F6cZBsHmZ_5OZFd16fnnWw) y te ayudaremos con tus dudas
{% endhint %}

## ¿Cómo funciona el dashboard?

{% embed url="<https://www.youtube.com/watch?v=5AU83pIJFag>" %}

## **¿Cómo integrar Preauth?**

{% embed url="<https://www.youtube.com/watch?v=ZQCDIFojFrA>" %}


# Primeros pasos

En 5 pasos habrás aprendido cómo funciona Preauth y seguramente terminaste con gran parte de la integración. Disfruta el camino.

{% hint style="success" %}
Únete a nuestro [*<mark style="color:blue;">espacio de Slack</mark>*](https://join.slack.com/t/preauth-soporte/shared_invite/zt-18pzujyy8-F6cZBsHmZ_5OZFd16fnnWw) y te ayudaremos con tus dudas
{% endhint %}

### También puedes ver un video

{% embed url="<https://www.youtube.com/watch?v=ZQCDIFojFrA>" %}

### 1. Registra tu compañía

Para comenzar a usar nuestro [API REST](/api-rest) es necesario que completes nuestro [formulario de registro](https://dashboard.preauth.io/register).

### 2. Obtén tu api-token

Verifica que tengas un api-token en el [apartado para desarrolladores](https://dashboard.preauth.io/panel/devs).

![](https://1259813716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhG9Altsbq1CWXbK3AE-887967055%2Fuploads%2F4zAT6L6CrMkrINMZvqvG%2Fimage.png?alt=media\&token=11942d83-1fd3-4a0e-8649-cb45a0f2f5f9)

### 3. Crea tu primera orden

Para crear tu primera orden haz una petición al método crear orden de nuestro [API REST](/api-rest#crear-orden).

{% hint style="warning" %}
No te olvides de usar el api-token que obtuviste en el paso anterior y de personalizar el cuerpo de la petición.
{% endhint %}

```bash
curl -X POST  https://api.preauth.io/v1/order -H "Accept: application/json" -H "x-auth-token: token_test_a4a9f278n4c23f08e7e6" -H "content-type: application/json" -d "{\"currency\":\"PEN\",\"country\":\"PE\",\"amount\":15000,\"reference\":\"order_00001\",\"limit_date\":\"2022-10-10\"}"
```

Es importante que tengas en cuenta que el campo id de la respuesta es con el que podrás hacer las demás operaciones. Además, puedes ver que por el momento el estado de la orden es **"created"**.

* Interactuar con la orden [usando sus servicios](/api-rest#servicios).
* Identifica [cada atributo y estado de la orden](/api-rest#modelos).

ORDER:

```json
{
  "id": "4085-whOdSyS2FkGmm4j9feJNeMh0SjQDgLa5xAUENBkajsfQK",
  "reference": "order_00001",
  "currency": "PEN",
  "country": "PE",
  "limit_date": "2022-10-10",
  "amount": 15000,
  "status": "created",
  "pending_amount": 15000,
  "captured_amount": 0,
  "meta": {},
  "card_id": null,
  "created_at": "2021-10-15 20:31:07",
  "updated_at": "2021-10-15 20:31:07"
}
```

### 4. Muestra nuestro widget

[¡Tenemos un ejemplo!](/widget#ejemplo-completo)

#### 4.1 Carga nuestro SDK

```javascript
!function(e,t){window.PreauthObject=t,window[t]=window[t]||function(){(window[t].q=window[t].q||[]).push(arguments)};const n="script",o=document.createElement(n),c=document.getElementsByTagName(n)[0];o.async=1,o.src=e,c.parentNode.insertBefore(o,c)}("https://cdn.preauth.io/preauth.js","preauth");
```

#### 4.2 Configura el widget

```javascript
preauth("init", {
  order: "{{order_id}}",
  onSuccess() {
    //CODE
  },
  onError(e) {
    //CODE
  }
});
```

Se deben definir el {{order\_id}} (obtenido en el paso 3) y las funciones que se ejecutarán en caso de error o éxito.

#### 4.3 Muestra el widget

```javascript
preauth("start");
```

Este paso hace que se le muestre el formulario de **preauth** al usuario de tu web. Una vez que el usuario termine de ingresar la información de su tarjeta, el SDK invocará a la función **onSuccess** u **onError** según sea el caso. Para más información, puedes revisar la documentación de nuestro [widget](/widget).

### 5. Verifica el estado de tu orden

{% hint style="warning" %}
No te olvides de usar tu api-token.
{% endhint %}

```bash
curl -X GET  https://api.preauth.io/v1/order/4085-whOdSyS2FkGmm4j9feJNeMh0SjQDgLa5xAUENBkajsfQK -H "Accept: application/json" -H "x-auth-token: token_test_a4a9f278n4c23f08e7e6"
```

**ORDER:**

```json
{
  "id": "4085-whOdSyS2FkGmm4j9feJNeMh0SjQDgLa5xAUENBkajsfQK",
  "reference": "order_00001",
  "currency": "PEN",
  "country": "PE",
  "limit_date": "2022-10-10",
  "amount": 15000,
  "status": "in_progress",
  "pending_amount": 15000,
  "captured_amount": 0,
  "meta": {},
  "card_id": 1025,
  "created_at": "2021-10-15 20:31:07",
  "updated_at": "2021-10-15 20:35:28"
}
```

Si todo ha salido bien, puedes verificar que el estado cambió a **"in\_progress"** y la orden estará preautorizada hasta que se cumpla la fecha límite definida en el paso 3.


# API Reference

Aprendamos cómo funciona el API. Sabemos que suele ser dolorosa esta parte, pero tranquila, estamos contigo para cualquier duda en devs\@preauth.io

{% hint style="success" %}
Únete a nuestro [*<mark style="color:blue;">espacio de Slack</mark>*](https://join.slack.com/t/preauth-soporte/shared_invite/zt-18pzujyy8-F6cZBsHmZ_5OZFd16fnnWw) y te ayudaremos con tus dudas
{% endhint %}

### Autenticación

Para tener acceso a los servicios es necesario haber obtenido el api-token para ser usado como cabecera en cada petición. Para más información, puedes revisar como obtener el api-token en la guía de [Primeros pasos](/primeros-pasos#2-verifica-que-tengas-tu-api-token).

Cuando obtengas tu api-token, es necesario que lo envíes en la cabecera **"x-auth-token"** en cada petición que quieras hacer.

### Servicios

## Crear orden

<mark style="color:green;">`POST`</mark> `https://api.preauth.io/v1/order`

Servicio para crear una orden, con el id de la orden luego podrás realizar la retención utilizando el [Widget](/widget)&#x20;

#### Headers

| Name                                           | Type   | Description |
| ---------------------------------------------- | ------ | ----------- |
| x-auth-token<mark style="color:red;">\*</mark> | String | Api token   |

#### Request Body

| Name                                          | Type    | Description                                                                                                                                          |
| --------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| country<mark style="color:red;">\*</mark>     | String  | [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) (Ej: PE, CL, MX)                            |
| currency<mark style="color:red;">\*</mark>    | String  | [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#Active_codes) (Ej: PEN, CLP, MXN)                                                                  |
| amount<mark style="color:red;">\*</mark>      | Integer | Monto en la mínima denominación. Ejemplo: Dólares en centavos (para US$100, enviar 100000) y pesos chilenos en entero (para CLP$100, enviar 100)     |
| reference<mark style="color:red;">\*</mark>   | String  | Referencia del comercio                                                                                                                              |
| limit\_date<mark style="color:red;">\*</mark> | String  | Fecha límite de la orden (YYYY-mm-dd)                                                                                                                |
| meta.client.phone                             | String  | Formato[ E.123](https://en.wikipedia.org/wiki/E.123#Example_formats)                                                                                 |
| meta.client.documentType                      | String  | Tipo de documento                                                                                                                                    |
| meta.client.document                          | String  | Alfanumérico del documento                                                                                                                           |
| meta.client.email                             | String  | RFC 5322                                                                                                                                             |
| meta.product.title                            | String  | Nombre del producto/servicio                                                                                                                         |
| meta.billing.address                          | String  | Dirección del cliente                                                                                                                                |
| meta.billing.city                             | String  | Ciudad del cliente                                                                                                                                   |
| meta.billing.region                           | String  | Región del cliente                                                                                                                                   |
| meta.billing.country                          | String  | País del cliente                                                                                                                                     |
| meta.client.name                              | Stng    | Nombre del cliente                                                                                                                                   |
| card\_id                                      | Integer | Id de tarjeta previamente almacenada (asociada a otra orden). Puede hacer que el servicio dure más debido a que intenta generar una preautorización. |

{% tabs %}
{% tab title="200: OK Modelo Order" %}

```json
{
  "id": "4085-whOdSyS2FkGmm4j9feJNeMh0SjQDgLa5xAUENBkajsfQK",
  "reference": "order_00001",
  "currency": "PEN",
  "country": "PE",
  "limit_date": "2022-10-10",
  "amount": 15000,
  "status": "created",
  "pending_amount": 15000,
  "captured_amount": 0,
  "meta": {},
  "card_id": null,
  "created_at": "2021-10-15 20:31:07",
  "updated_at": "2021-10-15 20:35:28"
}
```

{% endtab %}

{% tab title="200: OK Modelo Order con card\_id" %}

```json
{
  "id": "4085-whOdSyS2FkGmm4j9feJNeMh0SjQDgLa5xAUENBkajsfQK",
  "reference": "order_00001",
  "currency": "PEN",
  "country": "PE",
  "limit_date": "2022-10-10",
  "amount": 15000,
  "status": "in_progress",
  "pending_amount": 15000,
  "captured_amount": 0,
  "meta": {},
  "card_id": 1025,
  "created_at": "2021-10-15 20:31:07",
  "updated_at": "2021-10-15 20:35:28"
}
```

{% endtab %}
{% endtabs %}

## Obtener orden

<mark style="color:blue;">`GET`</mark> `https://api.preauth.io/v1/order/{id}`

Obtienes el objeto orden actualizado. Importante utilizarlo luego de recibir la confirmación de que se realizó la retención para verificar que la orden se encuentra en `in_progress`

#### Query Parameters

| Name                                 | Type   | Description    |
| ------------------------------------ | ------ | -------------- |
| id<mark style="color:red;">\*</mark> | String | Id de la orden |

#### Headers

| Name                                           | Type   | Description |
| ---------------------------------------------- | ------ | ----------- |
| x-auth-token<mark style="color:red;">\*</mark> | String | Api token   |

{% tabs %}
{% tab title="200: OK Modelo Order" %}

```javascript
{
  "id": "4085-whOdSyS2FkGmm4j9feJNeMh0SjQDgLa5xAUENBkajsfQK",
  "reference": "order_00001",
  "currency": "PEN",
  "country": "PE",
  "limit_date": "2022-10-10",
  "amount": 15000,
  "status": "in_progress",
  "pending_amount": 15000,
  "captured_amount": 0,
  "meta": {},
  "card_id": 1025,
  "created_at": "2021-10-15 20:31:07",
  "updated_at": "2021-10-15 20:35:28"
}
```

{% endtab %}
{% endtabs %}

## Actualizar orden

<mark style="color:purple;">`PATCH`</mark> `https://api.preauth.io/v1/order/{id}`

Modifica el monto o la fecha límite de una orden creada. Solo cuando esté en `created` o `in_progress`

#### Query Parameters

| Name                                 | Type   | Description    |
| ------------------------------------ | ------ | -------------- |
| id<mark style="color:red;">\*</mark> | String | Id de la orden |

#### Headers

| Name                                           | Type   | Description |
| ---------------------------------------------- | ------ | ----------- |
| x-auth-token<mark style="color:red;">\*</mark> | String | Api token   |

#### Request Body

| Name                                          | Type    | Description                                                                                   |
| --------------------------------------------- | ------- | --------------------------------------------------------------------------------------------- |
| amount<mark style="color:red;">\*</mark>      | Integer | Monto en centavos, solo puede ser menor a order.pending\_amount                               |
| limit\_date<mark style="color:red;">\*</mark> | String  | Fecha límite de la orden, se puede editar según la fecha de expiración de la tarjeta asociada |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
  "status": "OK"
}
```

{% endtab %}
{% endtabs %}

## Cancelar orden

<mark style="color:red;">`DELETE`</mark> `https://api.preauth.io/v1/order/{id}`

Devolverá el dinero retenido y la orden cambiará de estado a `canceled`.&#x20;

¡Importante!, una vez cancelada una orden no puede cambiar a otro estado, tendrás que crear una nueva orden desde cero.

#### Query Parameters

| Name                                 | Type   | Description    |
| ------------------------------------ | ------ | -------------- |
| id<mark style="color:red;">\*</mark> | String | Id de la orden |

#### Headers

| Name                                           | Type   | Description |
| ---------------------------------------------- | ------ | ----------- |
| x-auth-token<mark style="color:red;">\*</mark> | String | Api token   |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
  "status": "OK"
}
```

{% endtab %}
{% endtabs %}

## Capturar orden

<mark style="color:green;">`POST`</mark> `https://api.preauth.io/v1/order/{id}/capture`

Cobra todo o parte del dinero retenido, adicionalmente nos indicas si el monto sobrante quieres seguir reteniéndolo o lo liberarás. Ej: si tienes reservado $1000 y cobras $100, ¿qué quieres hacer con los $900 sobrantes? puedes seguir bloqueándolos o liberarlos, dependiendo del caso de uso que tengas.

#### Query Parameters

| Name                                 | Type   | Description    |
| ------------------------------------ | ------ | -------------- |
| id<mark style="color:red;">\*</mark> | String | Id de la orden |

#### Headers

| Name                                           | Type   | Description |
| ---------------------------------------------- | ------ | ----------- |
| x-auth-token<mark style="color:red;">\*</mark> | String | Api token   |

#### Request Body

| Name                                          | Type    | Description                                                             |
| --------------------------------------------- | ------- | ----------------------------------------------------------------------- |
| amount<mark style="color:red;">\*</mark>      | Integer | Monto en centavos, solo puede ser menor o igual a order.pending\_amount |
| keep\_alive<mark style="color:red;">\*</mark> | Boolean | Flag para preautorizar el monto restante                                |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
  "status": "OK"
}
```

{% endtab %}
{% endtabs %}

## Hacer prueba de vida

<mark style="color:green;">`POST`</mark> `https://api.preauth.io/v1/order/{id}/liveness`

Realiza una prueba de vida a la tarjeta asociada a la orden. Esto te sirve para saber si la tarjeta está activa en el momento y poder tomar acción en caso no se encuentre activa.

Solo se puede hacer una prueba de vida por día. Si se requiere hacer más de una prueba de vida es necesario enviar el parámetro "force" en true.

#### Query Parameters

| Name                                 | Type   | Description    |
| ------------------------------------ | ------ | -------------- |
| id<mark style="color:red;">\*</mark> | String | Id de la orden |

#### Headers

| Name                                           | Type   | Description |
| ---------------------------------------------- | ------ | ----------- |
| x-auth-token<mark style="color:red;">\*</mark> | String | Api token   |

#### Request Body

| Name  | Type    | Description          |
| ----- | ------- | -------------------- |
| force | Boolean | Por defecto es false |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
  "status": "OK"
}
```

{% endtab %}
{% endtabs %}

### Modelos

#### Order

<table><thead><tr><th width="204.4464285714286">Attributo</th><th>Tipo</th><th width="197.33333333333331">Descripción</th><th>Ejemplo</th></tr></thead><tbody><tr><td>id</td><td>Text</td><td>Identificador de la orden</td><td>4085-whOdSyS2FkGmm4j9feJNeMh0SjQDgLa5xAUENBkajsfQK</td></tr><tr><td>reference</td><td>Text</td><td>Referencia del comercio</td><td>order_0001</td></tr><tr><td>currency</td><td>Text</td><td>ISO 4217</td><td>PEN</td></tr><tr><td>country</td><td>Text</td><td>ISO 3166-1 alpha-2</td><td>PE</td></tr><tr><td>limit_date</td><td>Text</td><td>Fecha límite, pasada esta fecha se liberará el valor del pending_amount</td><td>2022-10-10</td></tr><tr><td>amount</td><td>Integer</td><td>Monto en centavos</td><td>15000</td></tr><tr><td>status</td><td>OrderStatus</td><td>Ver OrderStatus</td><td>created</td></tr><tr><td>pending_amount</td><td>Integer</td><td>Monto en centavos de lo que debe mantenerse preautorizado</td><td>15000</td></tr><tr><td>capture_amount</td><td>Integer</td><td>Monto en centavos de lo que se ha ido capturando</td><td>0</td></tr><tr><td>card_id</td><td>Integer</td><td>Referencia a tarjeta almacenada. Es posible usarla para crear una nueva orden.</td><td>1025</td></tr><tr><td>meta</td><td>Object</td><td>Parámetro en donde se puede enviar data adicional.</td><td><pre class="language-json"><code class="lang-json">{
  "email": "example@preauth.io",
  "name": "Pedro"
}
</code></pre></td></tr><tr><td>created_at</td><td>Text</td><td>Fecha de creación de la orden</td><td>2021-10-15 20:31:07</td></tr><tr><td>update_at</td><td>Text</td><td>Última fecha de actualización de la orden</td><td>2021-10-15 20:35:28</td></tr></tbody></table>

#### OrderStatus

<table><thead><tr><th width="220.84721916142615">Attributo</th><th>Descripción</th></tr></thead><tbody><tr><td>created</td><td>Cuando la orden ha sido creada y aún no tiene un medio de pago asociado.</td></tr><tr><td>in_progress</td><td>Cuando la orden ya cuenta con una tarjeta asociada.</td></tr><tr><td>canceled</td><td>Cuando el comercio solicitó la cancelación.</td></tr><tr><td>finished</td><td>Cuando la fecha límite ya pasó.</td></tr><tr><td>desynchronized</td><td>Cuando la tarjeta asociada a la orden no puede ser preautorizada nuevamente.</td></tr></tbody></table>


# Widget

Intégranos en tu página y disfruta de la magia.

{% hint style="success" %}
Únete a nuestro [*<mark style="color:blue;">espacio de Slack</mark>*](https://join.slack.com/t/preauth-soporte/shared_invite/zt-18pzujyy8-F6cZBsHmZ_5OZFd16fnnWw) y te ayudaremos con tus dudas
{% endhint %}

### Insertando SDK

Con el siguiente script te aseguras que nuestro SDK sea cargado en tu web. Puedes hacerles pequeños cambios, pero te recomendamos no hacerlo.

```javascript
 !function(e,t){window.PreauthObject=t,window[t]=window[t]||function(){(window[t].q=window[t].q||[]).push(arguments)};const n="script",o=document.createElement(n),c=document.getElementsByTagName(n)[0];o.async=1,o.src=e,c.parentNode.insertBefore(o,c)}("https://cdn.preauth.io/preauth.js","preauth");
```

### Configuración del SDK

El SDK necesita cierta información para su correcto funcionamiento, por lo que debes configurar el id de la orden y los callbacks que se ejecutaran en caso de éxito o fallo según corresponda. Puedes ver más detalle en la descripción del modelo [SDKConfiguration](/widget#modelos).

```javascript
preauth("init", {
  order: "4085-whOdSyS2FkGmm4j9feJNeMh0SjQDgLa5xAUENBkajsfQK",
  onSuccess() {
    //CODE  
  },  
  onError(e) {
    //CODE
  }
});
```

### Mostrando widget

Para mostrar el widget solo necesitas enviar el texto **"start"** como se muestra a continuación:

```javascript
preauth("start");
```

### Ejemplo completo

```html
<!DOCTYPE html>
<html>
<head>
  <script type="text/javascript">
    !function(e,t){window.PreauthObject=t,window[t]=window[t]||function(){(window[t].q=window[t].q||[]).push(arguments)};const n="script",o=document.createElement(n),c=document.getElementsByTagName(n)[0];o.async=1,o.src=e,c.parentNode.insertBefore(o,c)}("https://cdn.preauth.io/preauth.js","preauth");

    preauth("init", {
      order: "4085-whOdSyS2FkGmm4j9feJNeMh0SjQDgLa5xAUENBkajsfQK",
      onSuccess() {
        //CODE  
      },  
      onError(e) {
        //CODE
      }
    });

    function openPreauth() {
      preauth("start");
    }
  </script>
</head>
<body>
  <button onclick="openPreauth">Click me!</button>
</body>
</html>
```

### Modelos

#### SDKConfiguration

<table><thead><tr><th width="178.4464285714286">Attributo</th><th>Tipo</th><th width="197.33333333333331">Descripción</th><th>Ejemplo</th></tr></thead><tbody><tr><td>order</td><td>Texto</td><td>Id de la orden, obtenido al crear la orden por medio del API REST.</td><td>4085-whOdSyS2FkGmm4j9feJNeMh0SjQDgLa5xAUENBkajsfQK</td></tr><tr><td>onSuccess</td><td>Callback</td><td>Callback que se ejecuta cuando la orden ha sido preautorizada correctamente.</td><td></td></tr><tr><td>onError</td><td>Callback</td><td>Callback que se ejecuta cuando ocurre algún error al preautorizar la orden. Ver modelo PreauthError.</td><td></td></tr></tbody></table>

#### PreauthError

| Attributo | Tipo             | Descripción                          | Ejemplo              |
| --------- | ---------------- | ------------------------------------ | -------------------- |
| code      | PreauthErrorCode | Código de error interno.             | 100                  |
| message   | Text             | Mensaje asociado al código de error. | Modal closed by user |

#### PreauthErrorCode

<table><thead><tr><th width="174">Código</th><th>Descripción</th></tr></thead><tbody><tr><td>100</td><td>Cuando el widget es cerrado.</td></tr><tr><td>101</td><td>Cuando el widget no ha cargado correctamente.</td></tr><tr><td>102</td><td>Cuando sucede algún error al realizar la preautorización.</td></tr></tbody></table>


# Notificaciones/Webhooks

Entérate cada vez que pasa algo con alguna de tus órdenes.

{% hint style="success" %}
Únete a nuestro [*<mark style="color:blue;">espacio de Slack</mark>*](https://join.slack.com/t/preauth-soporte/shared_invite/zt-18pzujyy8-F6cZBsHmZ_5OZFd16fnnWw) y te ayudaremos con tus dudas
{% endhint %}

### Configuración

En el [apartado para desarrolladores](https://dashboard.preauth.io/panel/devs) puedes configurar una URL por la cual recibir notificaciones.

![](https://1259813716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhG9Altsbq1CWXbK3AE-887967055%2Fuploads%2FgqZbAGaY1SUe5aUhlHgh%2Fwebhook.png?alt=media\&token=c2b64c46-a5b3-43fb-9e6f-4ed528a2af1f)

Cuando tengas todo configurado para recibir notificaciones, lo que haremos es enviarte la información que corresponda a cada evento por medio de un POST a la URL especificada.

### Eventos:

#### 1 Orden por desincronizarse

Esto sucede cuando, por alguna razón, la tarjeta falla al verificar su estado. El comercio debe decidir si capturar la transacción autorizada o ponerse en contacto con el usuario para tomarle una nueva tarjeta.

```javascript
{
   "type":"order.liveness.fail",
   "order":{
      "id": "4085-whOdSyS2FkGmm4j9feJNeMh0SjQDgLa5xAUENBkajsfQK",
      "reference": "order_00001",
      "currency": "PEN",
      "country": "PE",
      "limit_date": "2022-10-10",
      "amount": 15000,
      "status": "in_progress",
      "pending_amount": 15000,
      "captured_amount": 0,
      "meta": {},
      "created_at": "2021-10-15 20:31:07",
      "updated_at": "2021-10-15 20:35:28"
    }
}
```

#### 2 Orden desincronizada

Esto sucede cuando, por alguna razón, nos es imposible retomar una preautorización.

```javascript
{
   "type":"order.desynchronized",
   "order":{
      "id": "4085-whOdSyS2FkGmm4j9feJNeMh0SjQDgLa5xAUENBkajsfQK",
      "reference": "order_00001",
      "currency": "PEN",
      "country": "PE",
      "limit_date": "2022-10-10",
      "amount": 15000,
      "status": "desynchronized",
      "pending_amount": 15000,
      "captured_amount": 0,
      "meta": {},
      "created_at": "2021-10-15 20:31:07",
      "updated_at": "2021-10-15 20:35:28"
    }
}
```

**3 Orden capturada**

Esto sucede cuando se ha ejecutado el cobro parcial o total del monto autorizado.

```javascript
{
   "type":"order.captured",
    "order":{
      "id": "4085-whOdSyS2FkGmm4j9feJNeMh0SjQDgLa5xAUENBkajsfQK",
      "reference": "order_00001",
      "currency": "PEN",
      "country": "PE",
      "limit_date": "2022-10-10",
      "amount": 15000,
      "status": "in_progress",
      "pending_amount": 10000,
      "captured_amount": 5000,
      "meta": {},
      "created_at": "2021-10-15 20:31:07",
      "updated_at": "2021-10-15 20:35:28"
  }
}
```


# Paso a producción

En muy sencillos pasos podrás obtener la información necesaria para que podamos ayudarte a configurar tu cuenta y comenzar a usar Preauth

### Certificación

{% hint style="success" %}
Si solo usarás el dashboard omite este paso
{% endhint %}

Cuando hayas finalizado la integración programa con tu POC (point-of-contact) asignado de Preauth una certificación. Para tener una certificación exitosa, validaremos que los requests que estés enviando sean correctos y revisaremos en conjunto los response que estás recibiendo.

Esto lo hacemos para que puedas utilizar al máximo Preauth y tus clientes tengan la mejor experiencia posible.

{% hint style="warning" %}
En caso no sepas quien es tu POC escríbele a <sebastian@preauth.io>
{% endhint %}

### Elige tu procesador de pagos

[Izipay](#izipay)

[Kushki](#kushki)

[d·local](#d-local)

[Stripe](#stripe)

[Mercadopago](#mercadopago)

[Conekta](#undefined)

{% hint style="info" %}
La información de tu procesador debes enviarla a <https://forms.gle/vuiaaBLRrUDCWJUb8>
{% endhint %}

### Izipay

Desde tu [*backoffice* en Izipay](https://secure.micuentaweb.pe/vads-merchant/) puedes generar y obtener las credenciales para el ambiente de producción. En caso no tengas acceso debes consultarlo con tu Key Account Manager asignado por Izipay.

<figure><img src="https://1259813716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhG9Altsbq1CWXbK3AE-887967055%2Fuploads%2F3hFb9tQK1fhsIATIuneD%2FScreen%20Shot%202022-09-22%20at%2010.28.28.png?alt=media&amp;token=590e3a14-1a28-4f4f-8b09-7053ef3e5379" alt=""><figcaption><p>Generación y obtención de credenciales en el backoffice de Izipay</p></figcaption></figure>

{% hint style="info" %}
La información de tu procesador debes enviarla a <https://forms.gle/vuiaaBLRrUDCWJUb8>
{% endhint %}

### Kushki

Una vez estés listo para pasar a producción primero debemos certificar la integración en conjunto con Kushki, para eso debes contactarte a <integraciones@kushkipagos.com>. Luego de aprobar la certificación, te enviarán tus credenciales para producción.

{% hint style="info" %}
La información de tu procesador debes enviarla a <https://forms.gle/vuiaaBLRrUDCWJUb8>
{% endhint %}

### d·local

En el [dashboard de dLocal](https://dashboard.dlocal.com/settings/integration) puedes obtener tus credenciales de producción. En caso no te aparezcan. Comunícate con <devs@preauth.io> donde podemos coordinar con nuestros Key Account Manager para que te aparezcan esta información.

<figure><img src="https://1259813716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhG9Altsbq1CWXbK3AE-887967055%2Fuploads%2FJYFpz7BvSgNoPRbZHRfT%2FScreen%20Shot%202022-09-22%20at%2010.42.21.png?alt=media&amp;token=7a21d2d2-2432-4bfd-ad9a-4097ee2a292e" alt=""><figcaption><p>Obtención de credenciales de dLocal</p></figcaption></figure>

{% hint style="info" %}
La información de tu procesador debes enviarla a <https://forms.gle/vuiaaBLRrUDCWJUb8>
{% endhint %}

### Stripe

Para obtener las credenciales, primero deben tener desactivado el modo prueba:

<figure><img src="https://1259813716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhG9Altsbq1CWXbK3AE-887967055%2Fuploads%2FDQYoX4FjHfikSUlhqg9I%2FScreen%20Shot%202022-09-22%20at%2010.53.57.png?alt=media&amp;token=2646539a-7604-4677-a547-1fe775dd7364" alt=""><figcaption></figcaption></figure>

Luego, deben ingresar al [dashboard de Stripe](https://dashboard.stripe.com/apikeys) y luego a la sección desarrolladores y por último a Claves de API (o directamente a <https://dashboard.stripe.com/apikeys>).&#x20;

<figure><img src="https://1259813716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhG9Altsbq1CWXbK3AE-887967055%2Fuploads%2FglMrTWFEHLay1Cytk66a%2FScreen%20Shot%202022-09-22%20at%2010.46.56.png?alt=media&amp;token=0353508e-01fa-4e51-b933-743250820e22" alt=""><figcaption><p>Obtención de credenciales de Stripe</p></figcaption></figure>

Debe obtener tanto la **Clave publicable** como la **Clave Secreta**. Sugerimos que se genere una nueva clave secreta de la siguiente manera:

<figure><img src="https://1259813716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhG9Altsbq1CWXbK3AE-887967055%2Fuploads%2FzuKltZeXDZuejVAbSulZ%2FScreen%20Shot%202022-09-30%20at%2013.03.42.png?alt=media&amp;token=1cebd7f5-9546-4271-ac9f-d35e95a81846" alt=""><figcaption><p>Click a Crear clave secreta</p></figcaption></figure>

Luego, ingrese el Nombre de la clave (Sugerencia: Preauth, para que luego sea fácil identificarla)&#x20;

<figure><img src="https://1259813716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhG9Altsbq1CWXbK3AE-887967055%2Fuploads%2FlyKl3tdbJBrE82EFwosg%2FScreen%20Shot%202022-09-30%20at%2013.04.41.png?alt=media&amp;token=845ae2dc-3ded-40ea-8881-a0337d3e553c" alt=""><figcaption><p>Ingresar Nombre de la clave</p></figcaption></figure>

Por último, copie y pegue en el formulario de Preauth la clave secreta. No olvides enviar esta información vía [privnote](https://privnote.com/) para evitar cualquier filtración de datos.

<figure><img src="https://1259813716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhG9Altsbq1CWXbK3AE-887967055%2Fuploads%2FwztFZVNuSI3jezdnmP5E%2FScreen%20Shot%202022-09-30%20at%2013.07.18.png?alt=media&amp;token=2d9bb7fc-deda-41ea-9132-fd8c7686c4fe" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
La información de tu procesador debes enviarla a <https://forms.gle/vuiaaBLRrUDCWJUb8>
{% endhint %}

### Mercadopago

Es muy sencillo obtener las credenciales. Para esto deben ir a la [sección de Credenciales](https://www.mercadopago.com.pe/settings/account/credentials) (Tu negocio/Configuración/Credenciales)

<figure><img src="https://1259813716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhG9Altsbq1CWXbK3AE-887967055%2Fuploads%2FbKRCKPxkYzLS4UiNqryY%2FScreen%20Shot%202022-09-22%20at%2011.00.32.png?alt=media&amp;token=fd9bf6f9-290c-4b17-8e3f-b14b3b94136c" alt=""><figcaption><p>Ir al a sección Credenciales</p></figcaption></figure>

A continuación, ingresas a Credenciales de producción

<figure><img src="https://1259813716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhG9Altsbq1CWXbK3AE-887967055%2Fuploads%2FHkeWSfdm98iheT999EOD%2FScreen%20Shot%202022-09-22%20at%2011.01.32.png?alt=media&amp;token=09bcc1d6-27ab-4241-a4fc-1214313a855b" alt=""><figcaption><p>Ir a la sección Credenciales de producción</p></figcaption></figure>

Por último, en esta pantalla podrás ver las credenciales que necesitamos.

<figure><img src="https://1259813716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhG9Altsbq1CWXbK3AE-887967055%2Fuploads%2FIeJNh0vpd3U3hulA8mGH%2FScreen%20Shot%202022-09-22%20at%2011.04.31.png?alt=media&amp;token=1f976d6b-a70d-46a7-9764-5c0e486f2353" alt=""><figcaption><p>Credenciales de producción</p></figcaption></figure>

{% hint style="info" %}
La información de tu procesador debes enviarla a <https://forms.gle/vuiaaBLRrUDCWJUb8>
{% endhint %}

### Conekta <a href="#conekta" id="conekta"></a>

Para obtener las credenciales de conekta debes ingresar al panel administrativo desde: <https://panel.conekta.com/>

Luego, ingresas a la sección de desarrolladores para poder ingresar a "Consultar API Keys de producción"

<figure><img src="https://1259813716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhG9Altsbq1CWXbK3AE-887967055%2Fuploads%2FZwYlbfOQVSzWWIt77fBu%2Fimage.png?alt=media&amp;token=857b06de-04a8-467b-8273-ae0ca0e509dc" alt=""><figcaption><p>Consultar API Keys de producción</p></figcaption></figure>

Por último, te aparecerá una ventana con tus credenciales, ojo que solo podrás obtenerlos una vez, la próxima tendrás que regenerarlos.

<figure><img src="https://1259813716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhG9Altsbq1CWXbK3AE-887967055%2Fuploads%2FAWKOGyqfuukpQyACMGxr%2Fimage.png?alt=media&amp;token=99f54e75-7d0e-4946-b2d2-6e8baf8cd1fe" alt=""><figcaption><p>API Keys</p></figcaption></figure>

Por último, copia y pega en el formulario de Preauth la clave secreta. No olvides enviar esta información vía [privnote](https://privnote.com/) para evitar cualquier filtración de datos.

{% hint style="info" %}
La información de tu procesador debes enviarla a <https://forms.gle/vuiaaBLRrUDCWJUb8>
{% endhint %}


