xgate
v1.0.7
Published
Pacote de integração xgateglobal
Readme
O que a XGate?
Uma solução moderna para pagamentos e conversões financeiras. Uma plataforma robusta para transações PIX e Cripto, perfeita para otimizar operações financeiras.
- Processamento instantâneo via PIX.
- Conversão automática de moeda FIAT para cripto.
- Depósitos e saques em Bitcoin, Ethereum, SHIBA INU, USDT, USDC, BNB e MATIC.
- Monitoramento em tempo real via dashboard avançado.
Instalação
npm install xgateManual
Iniciar integração:
Crie um instância da classe Xgate para ter acesso aos métodos.
import Xgate from "./index"; // or const Xgate = require("xgate");
try {
const xgate = new Xgate({
email: process.env.XGATE_EMAIL, // Seu E-mail
password: process.env.XGATE_PASSWORD, // Sua Senha
});
...
} catch (err) {
return err;
}Errors:
// catch
{
message: "...",
name: "XGateError",
status: 400, // exemplo
originalError: {...}
}👉 DEPÓSITO usando moeda fiduciária:
try {
return await xgate.deposit.depositFiat(
10,
{
name: "Nome do cliente",
phone: "5511900000000",
email: "[email protected]",
document: "00000000000",
} ?? "1a0********", // {...} or ID
"PIX"
);
} catch (err) {
return err;
}PARÂMETRO 1: Valor de depósito
PARÂMETRO 2: Informações do cliente ou ID do cliente que já existe | parâmetro | Obrigatório | Tipo | Descrição |------------|-------|--------|------| | name | SIM |
String| Nome do cliente | | phone | NÃO |String| Telefone do cliente | | email | NÃO |String| E-mail do cliente | | document | NÃO |String| Algum documento do cliete, ex: CPF |PARÂMETRO 3: Tipo de transação
Resposta:
{
message: "****";
data: {
status: "PENDING";
code: "0002012684001****";
id: "12s1****";
customerId: "01asd1****";
}
}👉 DEPÓSITO convertendo moeda fiduciária para cripto moeda:
try {
return await xgate.deposit.depositConversionFiatToCrypto(
10,
{
name: "Nome do cliente",
phone: "5511900000000",
email: "[email protected]",
document: "00000000000",
} ?? "1a0********", // {...} or ID
"PIX",
"USDT"
);
} catch (err) {
return err;
}PARÂMETRO 1: Valor de depósito
PARÂMETRO 2: Informações do cliente ou ID do cliente que já existe | parâmetro | Obrigatório | Tipo | Descrição |------------|-------|--------|------| | name | SIM |
String| Nome do cliente | | phone | NÃO |String| Telefone do cliente | | email | NÃO |String| E-mail do cliente | | document | NÃO |String| Algum documento do cliete, ex: CPF |PARÂMETRO 3: Tipo de transação
PARÂMETRO 3: Para qual cripto moeda quer converter
Resposta:
{
message: "****";
data: {
status: "PENDING";
code: "0002012684001****";
id: "12s1****";
customerId: "01asd1****";
}
}👉 DEPÓSITO de cripto moeda (Gerar uma carteira)
try {
return await xgate.deposit.depositGenerateCryptoWallet({
name: "Nome do cliente",
phone: "5511900000000",
email: "[email protected]",
document: "00000000000",
}); // {...} or ID
} catch (err) {
return err;
}- PARÂMETRO 1: Informações do cliente ou ID do cliente que já existe
| parâmetro | Obrigatório | Tipo | Descrição
|------------|-------|--------|------|
| name | SIM |
String| Nome do cliente | | phone | NÃO |String| Telefone do cliente | | email | NÃO |String| E-mail do cliente | | document | NÃO |String| Algum documento do cliete, ex: CPF |
Resposta:
[
{
blockchainNetworks: ["Ethereum", "ERC-20", "BEP-20"];
publicKey: "0xE5****";
},
...
]OBSERVAÇÃO: Não é gerado uma solicitação de depósito para cripto moeda, apenas a carteira onde o cliente pode transferir o valor que ele desejar.
👉 DEPÓSITO de cripto moeda convertendo para moeda fiduciária
❌ Não temos essa opção disponível no momento.
👉 SAQUE usando moeda fiduciária:
try {
return await xgate.withdraw.withdrawFiat(
10,
{
name: "Nome do cliente",
phone: "5511900000000",
email: "[email protected]",
document: "00000000000",
} ?? "1a0********", // {...} or ID
"PIX",
{
key: "00000000000",
type: "CPF",
}
);
} catch (err) {
return err;
}PARÂMETRO 1: Valor de saque
PARÂMETRO 2: Informações do cliente ou ID do cliente que já existe | parâmetro | Obrigatório | Tipo | Descrição |------------|-------|--------|------| | name | SIM |
String| Nome do cliente | | phone | NÃO |String| Telefone do cliente | | email | NÃO |String| E-mail do cliente | | document | NÃO |String| Algum documento do cliete, ex: CPF |PARÂMETRO 3: Tipo de transação
PARÂMETRO 4: Informações da chave pix | parâmetro | Obrigatório | Tipo | Descrição |------------|-------|--------|------| | key | SIM |
String| Chave pix | | type | SIM |String| Tipo da chave, opções:PHONE,CPF,CNPJ,EMAIL,RANDOM|
Resposta:
{
message: "******";
status: "********";
_id: "as1*****";
}👉 SAQUE convertendo cripto moeda para moeda fiduciária:
try {
return await xgate.withdraw.withdrawConversionCryptoToFiat(
10,
{
name: "Nome do cliente",
phone: "5511900000000",
email: "[email protected]",
document: "00000000000",
} ?? "1a0********", // {...} or ID
"USDT",
"PIX",
{
key: "00000000000",
type: "CPF",
}
);
} catch (err) {
return err;
}- PARÂMETRO 1: Valor de saque
- PARÂMETRO 2: Informações do cliente ou ID do cliente que já existe
| parâmetro | Obrigatório | Tipo | Descrição
|------------|-------|--------|------|
| name | SIM |
String| Nome do cliente | | phone | NÃO |String| Telefone do cliente | | email | NÃO |String| E-mail do cliente | | document | NÃO |String| Algum documento do cliete, ex: CPF | - PARÂMETRO 3: Cripto moeda
- PARÂMETRO 4: Para qual forma de pagamento você quer receber (Converter)
- PARÂMETRO 5: Informações da chave pix
| parâmetro | Obrigatório | Tipo | Descrição
|------------|-------|--------|------|
| key | SIM |
String| Chave pix | | type | SIM |String| Tipo da chave, opções:PHONE,CPF,CNPJ,EMAIL,RANDOM|
Resposta:
{
message: "******";
status: "********";
_id: "as1*****";
}👉 SAQUE para carteira externa:
try {
return await xgate.withdraw.withdrawExternalWallet(
10,
{
name: "Nome do cliente",
phone: "5511900000000",
email: "[email protected]",
document: "00000000000",
} ?? "1a0********", // {...} or ID
"BEP-20",
"USDT",
"0xff*****"
);
} catch (err) {
return err;
}- PARÂMETRO 1: Valor de saque
- PARÂMETRO 2: Informações do cliente ou ID do cliente que já existe
| parâmetro | Obrigatório | Tipo | Descrição
|------------|-------|--------|------|
| name | SIM |
String| Nome do cliente | | phone | NÃO |String| Telefone do cliente | | email | NÃO |String| E-mail do cliente | | document | NÃO |String| Algum documento do cliete, ex: CPF | - PARÂMETRO 3: Rede blockchain
- PARÂMETRO 4: Cripto moeda
- PARÂMETRO 5: Chave pública da carteira que vai receber a transferência
Resposta:
{
message: "******";
status: "********";
_id: "as1*****";
}👉 SAQUE convertendo moeda fiduciária para cripto moeda
❌ Não temos essa opção disponível no momento.
👉 BUSCAR lista de moedas fiduciária disponíveis para depósito
try {
return await xgate.currencies.getCurrenciesDeposit();
} catch (err) {
return err;
}Resposta:
[
{
_id: "sw2****";
name: "********";
type: "********";
createdDate: "********";
updatedDate: "********";
__v: 0;
symbol: "********";
},
...
]👉 BUSCAR lista de moedas fiduciária disponíveis para saques
try {
return await xgate.currencies.getCurrenciesWithdraw();
} catch (err) {
return err;
}Resposta:
[
{
_id: "sw2****";
name: "********";
type: "********";
createdDate: "********";
updatedDate: "********";
__v: 0;
symbol: "********";
},
...
]👉 BUSCAR lista de cripto moedas disponíveis para depósito
try {
return await xgate.cryptocurrencies.getCryptocurrenciesDeposit();
} catch (err) {
return err;
}Resposta:
[
{
_id: "sw2****";
name: "********";
symbol: "******";
coinGecko: "******";
createdDate: "********";
updatedDate: "********";
__v: 0;
},
...
]👉 BUSCAR lista de cripto moedas disponíveis para saque
try {
return await xgate.cryptocurrencies.getCryptocurrenciesWithdraw();
} catch (err) {
return err;
}Resposta:
[
{
_id: "sw2****";
name: "********";
symbol: "******";
coinGecko: "******";
createdDate: "********";
updatedDate: "********";
__v: 0;
},
...
]👉 BUSCAR redes blockchain disponíveis para depósito e suas cripto moedas suportadas
try {
return await xgate.cryptocurrencies.getBlockchainDeposit();
} catch (err) {
return err;
}Resposta:
[
{
_id: "1Q******";
name: "********";
symbol: "********";
coinGecko: "********";
updatedDate: "********";
createdDate: "********";
__v: 0;
},
...
]👉 BUSCAR redes blockchain disponíveis para saque e suas cripto moedas suportadas
try {
return await xgate.cryptocurrencies.getBlockchainWithdraw();
} catch (err) {
return err;
}Resposta:
[
{
_id: "1Q******";
name: "********";
symbol: "********";
coinGecko: "********";
updatedDate: "********";
createdDate: "********";
__v: 0;
},
...
]👉 COTAÇÃO de depósito convertendo moeda fiduciária para cripto moeda
try {
return await xgate.quotation.getQuotationDepositFiatToCrypto(
10,
"PIX",
"USDT"
);
} catch (err) {
return err;
}- PARÂMETRO 1: Valor de depósito
- PARÂMETRO 3: Tipo de transação
- PARÂMETRO 3: Para qual cripto moeda quer converter
Resposta:
{
amount: 10;
crypto: "******";
}👉 COTAÇÃO de depósito convertendo cripto moeda para moeda fiduciária
❌ Não temos essa opção disponível no momento.
👉 COTAÇÃO de saque convertendo cripto moeda para moeda fiduciária
try {
return await xgate.quotation.getQuotationWithdrawCryptoToFiat(
10,
"USDT"
"PIX",
);
} catch (err) {
return err;
}- PARÂMETRO 1: Valor de saque
- PARÂMETRO 3: Cripto moeda
- PARÂMETRO 3: Para qual forma de pagamento você quer receber (Converter)
Resposta:
{
amount: 10;
crypto: "******";
}👉 COTAÇÃO de saque convertendo moeda fiduciária para cripto moeda
❌ Não temos essa opção disponível no momento.
👉 COTAÇÃO de saque para um carteira de cripto moeda externa
try {
return await xgate.quotation.getQuotationWithdrawExternalWallet(
10,
"BET-20",
"USDT"
);
} catch (err) {
return err;
}- PARÂMETRO 1: Valor de saque
- PARÂMETRO 3: Rede blockchain
- PARÂMETRO 3: Cripto moeda (A rede blockchain precisa suportar essa cripto moeda)
Resposta:
{
amount: 10;
}👉 CLIENTE: Criar um cliente
try {
return await xgate.customer.customerCreate({
name: "Nome do cliente",
});
} catch (err) {
return err;
}- PARÂMETRO 1: Informações do cliente
| parâmetro | Obrigatório | Tipo | Descrição
|------------|-------|--------|------|
| name | SIM |
String| Nome do cliente | | phone | NÃO |String| Telefone do cliente | | email | NÃO |String| E-mail do cliente | | document | NÃO |String| Algum documento do cliete, ex: CPF |
Resposta:
{
message: "********";
customer: {
_id: "********";
}
}👉 CLIENTE: Atualizar informações do cliente
try {
return await xgate.customer.customerUpdate("********", {
name: "Nome do cliente",
});
} catch (err) {
return err;
}- PARÂMETRO 1: ID do cliente existente
- PARÂMETRO 2: Informações do cliente
| parâmetro | Obrigatório | Tipo | Descrição
|------------|-------|--------|------|
| name | SIM |
String| Nome do cliente | | phone | NÃO |String| Telefone do cliente | | email | NÃO |String| E-mail do cliente | | document | NÃO |String| Algum documento do cliete, ex: CPF |
Resposta:
{
message: "********";
customer: {
_id: "********";
}
}👉 PIX: Criar uma chave pix para um clientes
try {
return await xgate.pix.pixKeyCreate(
{ name: "Nome do cliente" }, // {...} or ID
{ key: "00000000000", type: "CPF" }
);
} catch (err) {
return err;
}PARÂMETRO 1: Informações do cliente ou ID do cliente existente | parâmetro | Obrigatório | Tipo | Descrição |------------|-------|--------|------| | name | SIM |
String| Nome do cliente | | phone | NÃO |String| Telefone do cliente | | email | NÃO |String| E-mail do cliente | | document | NÃO |String| Algum documento do cliete, ex: CPF |PARÂMETRO 2: Informações da chave pix do cliente | parâmetro | Obrigatório | Tipo | Descrição |------------|-------|--------|------| | key | SIM |
String| Nome do cliente | | type | SIM |String| Tipo da chave, opções:PHONE,CPF,CNPJ,EMAIL,RANDOM|
Resposta:
{
message: "********";
key: "********";
}👉 PIX: Buscar todas as chaves pix de um cliente
try {
return await xgate.pix.pixKeyGetAll({
name: "Nome do cliente", // {...} or ID
});
} catch (err) {
return err;
}- PARÂMETRO 1: Informações do cliente ou ID do cliente existente
| parâmetro | Obrigatório | Tipo | Descrição
|------------|-------|--------|------|
| name | SIM |
String| Nome do cliente | | phone | NÃO |String| Telefone do cliente | | email | NÃO |String| E-mail do cliente | | document | NÃO |String| Algum documento do cliete, ex: CPF |
Resposta:
[
{
key: "00000000000";
type: "CPF";
_id: "********";
}
]👉 PIX: Deletar uma chave pix do cliente
try {
return await xgate.pix.pixKeyDelete("*******", "*******");
} catch (err) {
return err;
}- PARÂMETRO 1: ID do cliente
- PARÂMETRO 2: ID da chave pix do cliente
Resposta:
{
message: "********";
}👉 EMPRESA: Buscar saldo da empresa
# Busca todas as moedas fiduciárias e cripto moedas
try {
return await xgate.company.getBalance();
} catch (err) {
return err;
}Resposta:
[
{
currency: {
name: "******";
type: "******";
};
totalAmount: 10;
totalHeld: 10;
},
{
cryptocurrency: {
name: "******";
symbol: "******";
};
totalAmount: 10;
},
...
]# Busca uma moeda fiduciária específica
try {
return await xgate.company.getBalance({ currencyId: "********" });
} catch (err) {
return err;
}- PARÂMETRO 1: ID da moeda fiduciária
Resposta:
[
{
currency: {
name: "******";
type: "******";
};
totalAmount: 10;
totalHeld: 10;
},
...
]OBSERVAÇÃO: Pode ser o ID tanto da moeda fiduciária de saque como a de depósito
# Busca uma cripto moeda específica
try {
return await xgate.company.getBalance({ cryptocurrencyId: "********" });
} catch (err) {
return err;
}- PARÂMETRO 1: ID da cripto moeda
Resposta:
[
{
cryptocurrency: {
name: "******";
symbol: "******";
};
totalAmount: 10;
},
...
]OBSERVAÇÃO: Pode ser o ID tanto da cripto moeda de saque como a de depósito
👉 SUB EMPRESA: Criar sub empresa
try {
const cryptocurrencies =
await xgate.cryptocurrencies.getCryptocurrenciesDeposit();
return await xgate.subCompany.createSubCompany({
user: {
name: "Meu primeiro usuário",
email: "[email protected]",
password: "********",
phone: {
type: "mobile",
number: "900000000",
areaCode: "11",
countryCode: "55",
},
},
deposit: {
currencies: {
type: "PERCENTAGE",
value: 0,
},
cryptocurrencies: cryptocurrencies.map((item) => ({
cryptocurrency: item._id,
fee: {
type: "PERCENTAGE",
value: 5,
},
})),
blockchainNetworks: {
type: "PERCENTAGE",
value: 0,
},
},
withdraw: {
currencies: {
type: "PERCENTAGE",
value: 1,
},
cryptocurrencies: {
type: "PERCENTAGE",
value: 1,
},
blockchainNetworks: {
type: "PERCENTAGE",
value: 1,
},
},
});
} catch (err) {
return err;
}OBSERVAÇÃO: Um objecto único com os seguites parâmetros:
PARÂMETRO 1:
user: Informações do primeiro usuário (ADMIN) da sub contaname: | OBRIGATÓRIO |String| Nome do usuário | |-------------|----------|-----------------|email: | OBRIGATÓRIO |String| E-mail do usuário | |-------------|----------|-----------------|password: | OBRIGATÓRIO |String| Senha do usuário | |-------------|----------|-----------------|phone: | OBRIGATÓRIO |String| Object com inforções do telefone do usuário | |-------------|----------|-----------------|type: | OBRIGATÓRIO |String| Tipo do número. Opções:mobile| |-------------|----------|-----------------|number: | OBRIGATÓRIO |String| Número de telefon | |-------------|----------|-----------------|areaCode: | OBRIGATÓRIO |String| Código do estado | |-------------|----------|-----------------|countryCode: | OBRIGATÓRIO |String| Código do país | |-------------|----------|-----------------|
PARÂMETRO 2 e 3:
depositewithdraw: Informações de taxas de depósito e saque Tanto nodepositcomo nowithdrawtem os parâmetroscurrencies,cryptocurrencieseblockchainNetworks.currencies: Moedas fiduciáriascryptocurrencies: Cripto moedasblockchainNetworks: Redes blockchains
E cada uma delas tem a opção de mandar um object
{ type: "PERCENTAGE", value: 1, }, isso significa que toda a categoria terão o mesmo valor de taxa. Exemplo:withdraw: { currencies: { type: "PERCENTAGE", value: 1, }, ... }, ...OBSERVAÇÃO: A palavra 'categoria' pode-se se entender que é
currencies,cryptocurrencieseblockchainNetworksIsso significa que todas as moedas fiduciárias de saque terão uma taxa de 1%, isso server para todos. Agora se você quiser definir uma porcentagem para cada moeda fiduciárias diferente, você precisa buscar a listagem de todas as moedas (Isso serve tembém para as outras categorias). Exemplo:
Cenário hipotético: Adicionando um valor de dinâmico para cada cripto moeda de depósito
const cryptocurrencies = await xgate.cryptocurrencies.getCryptocurrenciesDeposit(); return await xgate.subCompany.createSubCompany({ deposit: { cryptocurrencies: cryptocurrencies.map((item, index) => ({ cryptocurrency: item._id || item, fee: { type: "PERCENTAGE", value: 1 + index, }, })), }, });Sempre que usar essa opção, adicione um object com dois parâmetros, o 1°: o nome da categoria no singular e o 2°:
fee, onde será adicionado um object com os dois parâmetros,type= Tipo de taxa evalue= Valor da taxa. No primeiro parâmetro você pode adicionar tanto o ID da moeda como o object completo.Na "vida real", você pode criar um painel visual para adicionar essas taxas diferentes ou apenas criar um object fixo definindo a taxa de cada categoria e moedas.
Resposta:
{
message: "********";
}👉 SUB EMPRESA: Adicionar o primeiro IP da sub empresa
⚠️ Essa rota adiciona o primeiro IP da sub empresa, caso tente adicionar um segundo IP, retornará um error.
try {
const xgateSubCompany = new Xgate({
email: "[email protected]",
password: "********",
});
return await xgateSubCompany.subCompany.addFirstIP(
"0000:0000:0000:0000:0000:0000:0000:0000"
);
} catch (err) {
return err;
}Primeiro é criado um nova instância da classe Xgate e é passada as informações de acesso da sub conta.
OBSERVAÇÃO: Todos os métodos chamados nessa intância, afetará a sub empresa e não a empresa principal.
- PARÂMETRO 1:
IP, Aceitas IPV4 e IPV6
Resposta:
{
message: "********";
}👉 SUB EMPRESA: Adicionar o primeiro Webhook da sub empresa
⚠️ Essa rota adiciona a primeira rota de Webhook da sub empresa, caso tente adicionar um segundo Webhook, retornará um error.
try {
const xgateSubCompany = new Xgate({
email: "[email protected]",
password: "********",
});
return await xgateSubCompany.subCompany.addFirstWebhook({
externalWebhookUrl: "https://www.mydomain.com/webhook",
name: "Primeiro Webhook Test",
});
} catch (err) {
return err;
}Primeiro é criado um nova instância da classe Xgate e é passada as informações de acesso da sub conta.
OBSERVAÇÃO: Todos os métodos chamados nessa intância, afetará a sub empresa e não a empresa principal.
Um object com os seguintes parâmetros:
- PARÂMETRO 1:
externalWebhookUrl: URL do webhook - PARÂMETRO 2:
name: Nome para identificação do webhook
Resposta:
{
message: "********";
}