> For the complete documentation index, see [llms.txt](https://bitnovo.gitbook.io/pay-es/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bitnovo.gitbook.io/pay-es/bitnovo-pay/integraciones/integracion-api.md).

# Integración API

### Pasarela de pago en criptomonedas Bitnovo Pay

Diseñada para ser utilizada de dos maneras diferentes:

1. **Redirect Gateway**: Solo disponible para pagos en línea. El usuario es redirigido a la pasarela de pago Bitnovo Pay, donde se le ayuda a realizar el pago cripto.  Dependiendo de la configuración del comerciante, se retorna al página web del comercio cuando la transacción es detectada o confirmada.
2. **API Gateway**: Disponible para pagos en línea y fuera de línea. El comerciante/proveedor de pagos recibe la información del pago de Bitnovo Pay y se muestra al usuario final.

### Redirect Gateway

También hay dos opciones para usar la pasarela en este modo:

1. **Indicando el símbolo de la criptomoneda**

El proceso comienza cuando el comerciante llama al endpoint de `currencies_list`. Para asegurarse que la moneda que desea mostrar esté disponible en este momento. Una vez confirmado, el comercio llama al endpoint de `orders_create`. Enviando el importe en divisa fiat, el símbolo de la criptomoneda, las URLs OK y KO y una descripción opcional para el pago. Luego, Bitnovo Pay responde con la URL de redirección y el comerciante traslada al usuario a la URL de redirección. Una vez que el usuario es redirigido, intentará realizar el pago en la pasarela Bitnovo Pay. Cuando el usuario finaliza el proceso de pago, es redirigido a la `URL OK` (URL de pagos exitoso) o a la `URL KO` (URL de pagos fallido) dependiendo del resultado.

2. **Sin indicar el símbolo de la criptomoneda**

El proceso comienza cuando el comerciante llama al endpoint de `orders_create`. Enviando el monto en fiat, las URLs OK y KO y una descripción opcional para el pago. Luego, Bitnovo Pay responde con la URL de redirección y el comerciante traslada al usuario a la URL de redirección. Una vez que el usuario es redirigido, intentará realizar el pago en la pasarela Bitnovo Pay. Cuando el usuario finaliza el proceso de pago, es redirigido a la `URL OK` (URL de pagos exitosos) o a la `URL KO` (URL de pagos fallidos) dependiendo del resultado.<br>

En ambos casos, el comerciante será notificado de los cambios de estado a través de `notify_merchant webhook`.<br>

### API Gateway

El proceso comienza cuando el comercio llama al endpoint `orders_create`. Enviando el monto en fiat, el símbolo de la criptomoneda (opcional) y una descripción si es necesario. Luego, Bitnovo responde con la información de pago.\
\
La información de pago debe ser mostrada al usuario por el comerciante, durante el proceso de pago Bitnovo informará al comerciante sobre las actualizaciones del estado del proceso a través de `notify_merchant webhook`.

### Estado de Pago Importante

<table><thead><tr><th width="118.33333333333331">Código</th><th width="209">Nombres</th><th>Descripción</th></tr></thead><tbody><tr><td><code>"AC"</code></td><td>"Awaiting Completion" + 'safe'= True</td><td>Para este estado de pago, debes verificar el parámetro 'safe'. Si <code>'safe' = true</code>, la cantidad de criptomoneda ha sido detectada en el mempool y se confirmará rápidamente. Esto ocurre solo con criptomonedas con tecnología UTXO como Bitcoin, si la tarifa de transacción es óptima y RBF (Replace by fee) no está activado. El comercio puede tomar este estado como "Completado" para un flujo más rápido.</td></tr><tr><td><code>"CO"</code></td><td>"Completed"</td><td>La cantidad de criptomoneda tiene al menos 1 confirmación en la cadena de bloques.</td></tr><tr><td><code>"OC"</code></td><td>"Out of Condition"</td><td>La cantidad de criptomoneda es insuficiente, por lo que el pago está incompleto. En este caso, el comerciante puede solicitar el resto del pago a través de Bitnovo Pay (u otro método) o realizar un reembolso. El comerciante debe revisar el parámetro <code>'received_amount'</code> para conocer la cantidad restante.</td></tr><tr><td><code>“RF”</code></td><td>“Refunded”</td><td>Una vez que el pago está <code>"Completed"</code> o <code>"Out of Condition"</code>, puede ser reembolsado a través de la API o el Panel de Control.</td></tr></tbody></table>

### Otros estados de pago

<table><thead><tr><th width="118.33333333333331">Código</th><th width="208">Nombre</th><th>Descripción</th></tr></thead><tbody><tr><td><code>"NR"</code></td><td>"Not Ready"</td><td>El pago aún no ha recibido un símbolo de criptomoneda. (Solo para Redirect Gateway).</td></tr><tr><td><code>"PE"</code></td><td>"Pending"</td><td>El pago está esperando recibir la cantidad de criptomoneda.</td></tr><tr><td><code>"AC"</code> </td><td>"Awaiting Completion" + 'safe'= False</td><td>Para este estado de pago, debes verificar el parámetro <code>'safe'</code>. Si <code>'safe' = false</code>, la cantidad de criptomoneda ha sido detectada en el mempool y debe esperar a ser confirmada. Esto sucede solo con criptomonedas UTXO como Bitcoin si la tarifa de transacción es inferior al mercado y/o RBF (Replace by fee) está activado. El comerciante/cliente debe esperar a que el pago se cambie a <code>"Completed"</code> después de la confirmación.</td></tr><tr><td><code>"IA"</code></td><td>"Insufficient Amount"</td><td>La cantidad de criptomoneda es menor a la requerida. El cliente aún tiene tiempo para pagar el resto y satisfacer la cantidad requerida.</td></tr><tr><td><code>"CA"</code></td><td>"Cancelled"</td><td>El pago expiró después de más de 24 horas o el cliente lo canceló.</td></tr><tr><td><code>"EX"</code></td><td>"Expired"</td><td>El pago no recibió ninguna criptomoneda durante el tiempo de vencimiento (15/60 minutos).</td></tr><tr><td><code>"FA"</code> </td><td>"Failed"</td><td>El pago ha fallado porque la transacción no se confirmó.</td></tr></tbody></table>

### Flujo de pago

Como comerciante, puedes implementar el siguiente flujo de pago:

<table><thead><tr><th width="565">Bitnovo Pay</th><th>Estado</th></tr></thead><tbody><tr><td>NR (Not Ready) / PE (Pending) / AC (Awaiting Completion) + safe=False</td><td><mark style="background-color:yellow;">Pending</mark></td></tr><tr><td>CO (Completed) / AC (Awaiting Completion) + safe=True</td><td><mark style="background-color:green;">Processing</mark></td></tr><tr><td>CA (Cancelled) / EX (Expired)</td><td><mark style="background-color:orange;">Cancelled</mark></td></tr><tr><td>FA (Failed) / OC (Out of Condition)</td><td><mark style="background-color:red;">Failed</mark></td></tr><tr><td>RF (Refunded)</td><td><mark style="background-color:blue;">Refunded</mark></td></tr></tbody></table>

Puedes encontrar la [documentación API](https://pos.bitnovo.com/redoc) para integrar Bitnovo Pay en cualquier plataforma. \ <br>
