Pacote de integração xgateglobal
npm install 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.
```
npm install xgate
Crie um instância da classe Xgate para ter acesso aos métodos.
`js
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;
}
`
`js`
// catch
{
message: "...",
name: "XGateError",
status: 400, // exemplo
originalError: {...}
}
`js`
try {
return await xgate.deposit.depositFiat(
10,
{
name: "Nome do cliente",
phone: "5511900000000",
email: "client@domain.com",
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 |String
| phone | NÃO | | Telefone do cliente |String
| email | NÃO | | E-mail do cliente |String
| document | NÃO | | Algum documento do cliete, ex: CPF |
- PARÂMETRO 3: Tipo de transação
Resposta:
`js`
{
message: "**";
data: {
status: "PENDING";
code: "0002012684001**";
id: "12s1**";
customerId: "01asd1**";
}
}
`js`
try {
return await xgate.deposit.depositConversionFiatToCrypto(
10,
{
name: "Nome do cliente",
phone: "5511900000000",
email: "client@domain.com",
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 |String
| phone | NÃO | | Telefone do cliente |String
| email | NÃO | | E-mail do cliente |String
| document | NÃO | | Algum documento do cliete, ex: CPF |
- PARÂMETRO 3: Tipo de transação
- PARÂMETRO 3: Para qual cripto moeda quer converter
Resposta:
`js`
{
message: "**";
data: {
status: "PENDING";
code: "0002012684001**";
id: "12s1**";
customerId: "01asd1**";
}
}
`js`
try {
return await xgate.deposit.depositGenerateCryptoWallet({
name: "Nome do cliente",
phone: "5511900000000",
email: "client@domain.com",
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 |String
| phone | NÃO | | Telefone do cliente |String
| email | NÃO | | E-mail do cliente |String
| document | NÃO | | Algum documento do cliete, ex: CPF |
Resposta:
`js`
[
{
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.
❌ Não temos essa opção disponível no momento.
`js`
try {
return await xgate.withdraw.withdrawFiat(
10,
{
name: "Nome do cliente",
phone: "5511900000000",
email: "client@domain.com",
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 |String
| phone | NÃO | | Telefone do cliente |String
| email | NÃO | | E-mail do cliente |String
| document | NÃO | | 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 |String
| type | SIM | | Tipo da chave, opções: PHONE, CPF, CNPJ, EMAIL, RANDOM |
Resposta:
`js`
{
message: "";
status: "**";
_id: "as1*";
}
`js`
try {
return await xgate.withdraw.withdrawConversionCryptoToFiat(
10,
{
name: "Nome do cliente",
phone: "5511900000000",
email: "client@domain.com",
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 |String
| phone | NÃO | | Telefone do cliente |String
| email | NÃO | | E-mail do cliente |String
| document | NÃO | | Algum documento do cliete, ex: CPF |String
- 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 | | Chave pix |String
| type | SIM | | Tipo da chave, opções: PHONE, CPF, CNPJ, EMAIL, RANDOM |
Resposta:
`js`
{
message: "";
status: "**";
_id: "as1*";
}
`js`
try {
return await xgate.withdraw.withdrawExternalWallet(
10,
{
name: "Nome do cliente",
phone: "5511900000000",
email: "client@domain.com",
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 |String
| phone | NÃO | | Telefone do cliente |String
| email | NÃO | | E-mail do cliente |String
| document | NÃO | | 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:
`js`
{
message: "";
status: "**";
_id: "as1*";
}
❌ Não temos essa opção disponível no momento.
`js`
try {
return await xgate.currencies.getCurrenciesDeposit();
} catch (err) {
return err;
}
Resposta:
`js`
[
{
_id: "sw2**";
name: "**";
type: "**";
createdDate: "**";
updatedDate: "**";
__v: 0;
symbol: "**";
},
...
]
`js`
try {
return await xgate.currencies.getCurrenciesWithdraw();
} catch (err) {
return err;
}
Resposta:
`js`
[
{
_id: "sw2**";
name: "**";
type: "**";
createdDate: "**";
updatedDate: "**";
__v: 0;
symbol: "**";
},
...
]
`js`
try {
return await xgate.cryptocurrencies.getCryptocurrenciesDeposit();
} catch (err) {
return err;
}
Resposta:
`js`
[
{
_id: "sw2**";
name: "**";
symbol: "";
coinGecko: "";
createdDate: "**";
updatedDate: "**";
__v: 0;
},
...
]
`js`
try {
return await xgate.cryptocurrencies.getCryptocurrenciesWithdraw();
} catch (err) {
return err;
}
Resposta:
`js`
[
{
_id: "sw2**";
name: "**";
symbol: "";
coinGecko: "";
createdDate: "**";
updatedDate: "**";
__v: 0;
},
...
]
`js`
try {
return await xgate.cryptocurrencies.getBlockchainDeposit();
} catch (err) {
return err;
}
Resposta:
`js`
[
{
_id: "1Q";
name: "**";
symbol: "**";
coinGecko: "**";
updatedDate: "**";
createdDate: "**";
__v: 0;
},
...
]
`js`
try {
return await xgate.cryptocurrencies.getBlockchainWithdraw();
} catch (err) {
return err;
}
Resposta:
`js`
[
{
_id: "1Q";
name: "**";
symbol: "**";
coinGecko: "**";
updatedDate: "**";
createdDate: "**";
__v: 0;
},
...
]
`js`
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:
`js`
{
amount: 10;
crypto: "";
}
❌ Não temos essa opção disponível no momento.
`js`
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:
`js`
{
amount: 10;
crypto: "";
}
❌ Não temos essa opção disponível no momento.
`js`
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:
`js`
{
amount: 10;
}
`js`
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 |String
| phone | NÃO | | Telefone do cliente |String
| email | NÃO | | E-mail do cliente |String
| document | NÃO | | Algum documento do cliete, ex: CPF |
Resposta:
`js`
{
message: "**";
customer: {
_id: "**";
}
}
`js`
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 |String
| phone | NÃO | | Telefone do cliente |String
| email | NÃO | | E-mail do cliente |String
| document | NÃO | | Algum documento do cliete, ex: CPF |
Resposta:
`js`
{
message: "**";
customer: {
_id: "**";
}
}
`js`
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 |String
| phone | NÃO | | Telefone do cliente |String
| email | NÃO | | E-mail do cliente |String
| document | NÃO | | 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 |String
| type | SIM | | Tipo da chave, opções: PHONE, CPF, CNPJ, EMAIL, RANDOM |
Resposta:
`js`
{
message: "**";
key: "**";
}
`js`
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 |String
| phone | NÃO | | Telefone do cliente |String
| email | NÃO | | E-mail do cliente |String
| document | NÃO | | Algum documento do cliete, ex: CPF |
Resposta:
`js`
[
{
key: "00000000000";
type: "CPF";
_id: "**";
}
]
`js`
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:
`js`
{
message: "**";
}
#### # Busca todas as moedas fiduciárias e cripto moedas
`js`
try {
return await xgate.company.getBalance();
} catch (err) {
return err;
}
Resposta:
`js`
[
{
currency: {
name: "";
type: "";
};
totalAmount: 10;
totalHeld: 10;
},
{
cryptocurrency: {
name: "";
symbol: "";
};
totalAmount: 10;
},
...
]
#### # Busca uma moeda fiduciária específica
`js`
try {
return await xgate.company.getBalance({ currencyId: "**" });
} catch (err) {
return err;
}
- PARÂMETRO 1: ID da moeda fiduciária
Resposta:
`js`
[
{
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
`js`
try {
return await xgate.company.getBalance({ cryptocurrencyId: "**" });
} catch (err) {
return err;
}
- PARÂMETRO 1: ID da cripto moeda
Resposta:
`js`
[
{
cryptocurrency: {
name: "";
symbol: "";
};
totalAmount: 10;
},
...
]
OBSERVAÇÃO: Pode ser o ID tanto da cripto moeda de saque como a de depósito
`js`
try {
const cryptocurrencies =
await xgate.cryptocurrencies.getCryptocurrenciesDeposit();
return await xgate.subCompany.createSubCompany({
user: {
name: "Meu primeiro usuário",
email: "email@domain.com",
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 conta
- name:String
| OBRIGATÓRIO | | Nome do usuário |email
|-------------|----------|-----------------|
- :String
| OBRIGATÓRIO | | E-mail do usuário |password
|-------------|----------|-----------------|
- :String
| OBRIGATÓRIO | | Senha do usuário |phone
|-------------|----------|-----------------|
- :String
| OBRIGATÓRIO | | Object com inforções do telefone do usuário |type
|-------------|----------|-----------------|
- :String
| OBRIGATÓRIO | | Tipo do número. Opções: mobile |number
|-------------|----------|-----------------|
- :String
| OBRIGATÓRIO | | Número de telefon |areaCode
|-------------|----------|-----------------|
- :String
| OBRIGATÓRIO | | Código do estado |countryCode
|-------------|----------|-----------------|
- :String
| OBRIGATÓRIO | | Código do país |
|-------------|----------|-----------------|
- PARÂMETRO 2 e 3: deposit e withdraw: Informações de taxas de depósito e saquedeposit
Tanto no como no withdraw tem os parâmetros currencies, cryptocurrencies e blockchainNetworks.
- 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:
`js`
withdraw: {
currencies: {
type: "PERCENTAGE",
value: 1,
},
...
},
...
OBSERVAÇÃO: A palavra 'categoria' pode-se se entender que é currencies, cryptocurrencies e blockchainNetworks
Isso 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
`js`
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 e value = 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:
`js`
{
message: "**";
}
⚠️ _Essa rota adiciona o primeiro IP da sub empresa, caso tente adicionar um segundo IP, retornará um error._
`js`
try {
const xgateSubCompany = new Xgate({
email: "email@domain.com",
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:
`js`
{
message: "**";
}
⚠️ _Essa rota adiciona a primeira rota de Webhook da sub empresa, caso tente adicionar um segundo Webhook, retornará um error._
`js`
try {
const xgateSubCompany = new Xgate({
email: "email@domain.com",
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 webhookname
- PARÂMETRO 2: : Nome para identificação do webhook
Resposta:
`js``
{
message: "**";
}