Cotação para Carteira Externa
Este endpoint permite calcular antecipadamente quanto o cliente receberá em Crypto ao criar uma solitação de saque para uma carteira externa, já descontando as taxas de gás da rede blockchain vigente.
Endpoint
- Método: POST
https://api.xgateglobal.com/withdraw/transaction/crypto/amount
Testar Integração
Utilize o formulário abaixo para simular um saque para carteira externa. O sistema irá buscar automaticamente os dados necessários e calcular quanto receberia em Crypto.
Testar: Cotação Crypto (Carteira Externa)
Requisição
É necessário enviar o Header de autenticação e o corpo JSON com o valor e o objeto da moeda.
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer <seu_token> | O token JWT obtido no login. |
Body (Corpo da Requisição)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
amount | number | Sim | Valor em Crypto que se deseja calcular o saque. |
cryptocurrency | object | Sim | O objeto da criptomoeda, obtido na rota de listagem de criptomoedas para saques. |
blockchainNetwork | object | Sim | O objeto da rede blockchain, obtido na listagem de redes blockchain. |
Respostas (Responses)
Sucesso (200 OK)
Retorna o valor que aproximadamente será recebido na carteira externa.
{
"amount": 99.521567,
"cryptocurrency": "USDC"
}
Erros Comuns
| Status | Mensagem | Motivo Provável |
|---|---|---|
| 401 | Unauthorized | • Token inválido ou expirado. • Header inválido ou não informado. • IP não permitido. |
| 500 | Internal Server Error | Erro interno de servidor. Entrar em contato com suporte. |
Como usar
Esta rota não gera um pedido de saque ou movimenta fundos. Ela serve estritamente para consulta de cotação e previsão de taxas da rede.
O Fluxo Recomendado (UX)
Para oferecer a melhor experiência aos seus clientes, recomendamos o seguinte fluxo de integração:
- Input do Usuário: O cliente digita o valor que deseja sacar (ex:
10) em seu aplicativo ou site. - Consulta de Cotação: Em background, seu sistema chama o endpoint
POST /withdraw/transaction/crypto/amountenviando o valor de10, junto com os objetos da rede e da criptomoeda selecionadas. - Exibição do Valor Líquido: A API calcula os custos da blockchain e retorna o valor exato que chegará na carteira de destino (ex:
9.369984879637112 USDT). Você exibe na tela algo como: "Você receberá aproximadamente 9.36 USDT". - Ação / Confirmação: Se o usuário concordar com as taxas e o valor líquido, seu sistema então chama a rota definitiva de Criar Pedido de Saque (
POST /withdraw) para efetivar a transação.
Exemplo Prático
Siga os passos abaixo para realizar a cotação para carteira externa.
1. Passo: Insira o valor em Crypto para a cotação:
{
"amount": 100,
"blockchainNetwork": {
"_id": "69ea849098**************",
"chain": "Solana",
"name": "Solana",
},
"cryptocurrency": {
"_id": "6733a2a9007**************",
"name": "USDT",
"symbol": "USDT",
"coinGecko": "tether"
}
}
2. Passo: Você deve buscar e injetar o objeto da rede blockchain dentro de blockchainNetwork:
{
"amount": 100,
"blockchainNetwork": {
"_id": "69ea849098**************",
"chain": "Solana",
"name": "Solana",
},
"cryptocurrency": {
"_id": "6733a2a9007**************",
"name": "USDT",
"symbol": "USDT",
"coinGecko": "tether"
}
}
Você pode obter a lista de redes blockchain clicando aqui.
3. Passo: Você deve buscar e injetar o objeto da criptomoeda dentro de cryptocurrency:
{
"amount": 100,
"blockchainNetwork": {
"_id": "69ea849098**************",
"chain": "Solana",
"name": "Solana",
},
"cryptocurrency": {
"_id": "6733a2a9007**************",
"name": "USDT",
"symbol": "USDT",
"coinGecko": "tether"
}
}
Você pode obter a lista de criptomoedas clicando aqui.
Integração
- Node.js
O exemplo de integração utiliza a biblioteca Axios em Node.js.
Instalando Axios:
npm install axios
Exemplo 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. Buscar Redes e Criptomoedas
const blockchains = await axios.get(`${url_api}/withdraw/company/blockchain-networks`, config);
// Seleciona a primeira rede disponível
const selectedNetwork = blockchains.data[0];
// Busca especificamente pelo objeto do USDT dentro da lista de criptos da rede
const usdtObject = selectedNetwork.cryptocurrencies.find(
item => item.cryptocurrency.symbol === 'USDT'
);
if (!usdtObject) {
throw new Error(`USDT não encontrado na rede ${selectedNetwork.name}`);
}
// 3. Calcular Cotação
const { data } = await axios.post(`${url_api}/withdraw/transaction/crypto/amount`, {
amount,
cryptocurrency: usdtObject.cryptocurrency,
blockchainNetwork: selectedNetwork
}, config);
console.log("Cotação Recebida:", data);
} catch (error) {
console.log(error.response ? error.response.data : error.message);
}
})()