Cotización para billetera externa
Este endpoint le permite calcular con anticipación cuánto recibirá el cliente en criptomonedas al crear una solicitud de retiro a una billetera externa, descontando ya las comisiones de gas de la red blockchain.
Endpoint
- Método: POST
https://api.xgateglobal.com/withdraw/transaction/crypto/amount
Prueba de integración
Utilice el formulario a continuación para simular un retiro a una billetera externa. El sistema obtendrá automáticamente los datos necesarios y calculará cuánto recibiría en criptomonedas.
Probar: Cotización Crypto (Billetera Externa)
Solicitud
Debe enviar el encabezado de autenticación y el cuerpo JSON con el valor y el objeto de moneda.
Encabezados obligatorios
| Encabezado | Valor | Descripción |
|---|---|---|
Authorization | Bearer <tu_token> | El token JWT obtenido al iniciar sesión. |
Cuerpo (Request Body)
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
amount | number | Sí | Monto en criptomonedas para el que desea calcular el retiro. |
cryptocurrency | object | Sí | El objeto de la criptomoneda, obtenido desde la ruta de listado de criptomonedas. |
blockchainNetwork | object | Sí | El objeto de la red blockchain, obtenido desde la ruta de listado de redes blockchain. |
Respuestas
Éxito (200 OK)
Devuelve el valor que aproximadamente se recibirá en la billetera externa.
{
"amount": 99.521567,
"cryptocurrency": "USDC"
}
Errores comunes
| Estado | Mensaje | Posible causa |
|---|---|---|
| 401 | Unauthorized | • Token inválido o vencido. • Encabezado inválido o faltante. • IP no permitida. |
| 500 | Internal Server Error | Error interno del servidor. Contacte con soporte. |
Cómo usar
Esta ruta no genera un pedido de retiro ni mueve fondos. Sirve estrictamente para consulta de cotizaciones y estimación de tarifas de la red.
El Flujo Recomendado (UX)
Para ofrecer la mejor experiencia a tus clientes, recomendamos el siguiente flujo de integración:
- Entrada del Usuario: El cliente ingresa el monto que desea retirar (ej.:
10) en tu aplicación o sitio web. - Consulta de Cotización: En segundo plano, tu sistema llama al endpoint
POST /withdraw/transaction/crypto/amountenviando el valor de10, junto con los objetos de la red y de la criptomoneda seleccionadas. - Visualización del Monto Neto: La API calcula los costos de la blockchain y devuelve el monto exacto que llegará a la billetera de destino (ej.:
9.369984879637112 USDT). Muestras en la pantalla algo como: "Recibirás aproximadamente 9.36 USDT". - Acción / Confirmación: Si el usuario está de acuerdo con las tarifas y el monto neto, tu sistema entonces llama a la ruta definitiva de Crear Pedido de Retiro (
POST /withdraw) para efectuar la transacción.
Ejemplo práctico
Siga los pasos a continuación para realizar una cotización para billetera externa.
Paso 1: Ingrese la cantidad en USDT para la cotización:
{
"amount": 100,
"blockchainNetwork": {
"_id": "69ea849098**************",
"chain": "Solana",
"name": "Solana",
},
"cryptocurrency": {
"_id": "6733a2a9007**************",
"name": "USDT",
"symbol": "USDT",
"coinGecko": "tether"
}
}
Paso 2: Debe obtener e inyectar el objeto de la red blockchain dentro de blockchainNetwork:
{
"amount": 100,
"blockchainNetwork": {
"_id": "69ea849098**************",
"chain": "Solana",
"name": "Solana",
},
"cryptocurrency": {
"_id": "6733a2a9007**************",
"name": "USDT",
"symbol": "USDT",
"coinGecko": "tether"
}
}
Puede obtener la lista de redes blockchain haciendo clic aquí.
Paso 3: Debe obtener e inyectar el objeto de la criptomoneda dentro de cryptocurrency:
{
"amount": 100,
"blockchainNetwork": {
"_id": "69ea849098**************",
"chain": "Solana",
"name": "Solana",
},
"cryptocurrency": {
"_id": "6733a2a9007**************",
"name": "USDT",
"symbol": "USDT",
"coinGecko": "tether"
}
}
Puede obtener la lista de criptomonedas haciendo clic aquí.
Integración
- Node.js
Este ejemplo de integración utiliza la librería Axios en Node.js.
Instalando Axios:
npm install axios
Ejemplo en JavaScript:
const axios = require("axios");
(async () => {
const email = "email@domain.com";
const password = "••••••";
const amount = 10;
try {
const url_api = "https://api.xgateglobal.com"
// 1. Login
const login = await axios.post(`${url_api}/auth/token`, { email, password });
const config = {
headers: { "Authorization": `Bearer ${login.data.token}` }
};
// 2. Fetch Networks and Cryptocurrencies
const blockchains = await axios.get(`${url_api}/withdraw/company/blockchain-networks`, config);
// Selects the first available network
const selectedNetwork = blockchains.data[0];
// Searches specifically for the USDT object within the network's crypto list
const usdtObject = selectedNetwork.cryptocurrencies.find(
item => item.cryptocurrency.symbol === 'USDT'
);
if (!usdtObject) {
throw new Error(`USDT not found in ${selectedNetwork.name} network`);
}
// 3. Calculate Quote
const { data } = await axios.post(`${url_api}/withdraw/transaction/crypto/amount`, {
amount,
cryptocurrency: usdtObject.cryptocurrency,
blockchainNetwork: selectedNetwork
}, config);
console.log("Quote Received:", data);
} catch (error) {
console.log(error.response ? error.response.data : error.message);
}
})()