
Wallets e recebimentos
Recomendado para depósitos de membros: sem valor prévio nem contagem regressiva, com crédito pelo valor recebido. Inclui painel, vinculação por API, consultas e callbacks.
Assista em tela cheia ou escolha um capítulo. Para enviar ou receber fundos, use os dados do seu próprio painel.
Siga as etapas no seu painel. Clique em uma imagem para ampliá-la.
Para recarregar o saldo de membros, recomendamos uma wallet exclusiva. Vincule um endereço a cada membro para que ele possa fazer vários depósitos. Não é preciso informar o valor antes, e não há contagem regressiva para pagar. Isso evita problemas de correspondência por valor diferente ou pedido expirado. Rede, moeda e confirmações ainda precisam ser verificadas.
Abra a lista de wallets, clique em Criar wallet, escolha a moeda e a rede e selecione Wallet exclusiva. Se o membro envia USDT pela rede TRON, escolha TRC20-USDT. A rede deve sempre corresponder à rede do envio. TRC20-USDT · BEP20-USDT · BEP20-USDC · SPL-USDC.
Na informação de vinculação, informe um identificador estável e único do membro. Esse valor corresponde ao bindKey da API, não ao UID do comerciante. Para creditar o saldo automaticamente, informe a URL de callback do seu servidor. Se ficar vazia, será usada a configuração padrão. Confira a cota antes de criar a wallet. Por exemplo, MEMBER_10001 identifica o membro. notifyUrl deve ser uma URL HTTPS pública. Não forneça ao membro o endereço de recarga de taxas.
Filtre a lista por Wallet exclusiva e confira a moeda e o endereço do membro. Wallets criadas pela API também aparecem aqui. Para o mesmo membro, rede e moeda, reutilize a vinculação existente. Não crie uma nova wallet a cada depósito.
Abra o checkout na linha da wallet. Não há campo de valor nem contagem regressiva. Envie o endereço completo ou o link ao membro correspondente. Ele escolhe quanto depositar, e seu sistema credita o valor realmente recebido. Mantenha a wallet habilitada para receber depósitos. Antes de desativá-la, avise o membro para parar de enviar fundos ao endereço.
Para integrar pela API, abra a ferramenta oficial e selecione Criar wallet exclusiva. Informe a moeda, o identificador do membro e a URL de callback. Não são necessários valor, prazo ou número de pedido do comerciante. O pedido é gerado quando o depósito é detectado. POST /openapi/payin/exclusive-bindings · chainCode · tokenSymbol · bindKey · label? · notifyUrl?
Autentique no servidor com Merchant UID + API Key e os cabeçalhos x-api-key, x-merchant-uid, x-timestamp, x-nonce e x-signature. A mensagem HMAC-SHA256 tem sete linhas: UID, timestamp em milissegundos, nonce, método HTTP em maiúsculas, caminho sem query, query normalizada e body normalizado. Use o SDK oficial ou o código da ferramenta e gere um timestamp e nonce novos por requisição. Confira os dados antes de criar uma vinculação real.
Salve bindingId, addressId, address, bindKey, chainCode, tokenSymbol e status; o status deve ser active. A mesma combinação de comerciante + rede + moeda + bindKey retorna a vinculação existente. Repetir a criação não substitui label nem notifyUrl. A resposta não inclui cashierUrl: mostre address na sua página de depósitos ou copie o link do checkout no painel.
Consulte com GET /openapi/payin/exclusive-bindings/{bindKey}?chainCode=TRON&tokenSymbol=USDT&recentLimit=10. Codifique bindKey para uso na URL. GET não tem body, mas a query participa da assinatura. A resposta contém stats, recentOrders e recentTransactions. recentLimit aceita de 1 a 20 e não substitui o histórico contábil completo. Para um pedido específico, use GET /openapi/payin/orders/{orderNo}.
Depois de processar o depósito, a plataforma envia o callback para notifyUrl da wallet ou para a configuração padrão, se estiver vazio. Verifique rawBody com a API Key associada ao pedido e confira comerciante, rede, moeda, bindKey e status=completed. Credite paidAmount, o valor efetivamente recebido. Use (merchantUid, orderNo) como chave única e grave a deduplicação e o aumento do saldo na mesma transação de banco de dados. Retorne HTTP 2xx após o sucesso. Confirme duplicidades sem creditar novamente. Não deduplique apenas por bindKey: isso descartaria o próximo depósito do membro.
Nos pedidos de recebimento, filtre por endereço, etiqueta ou identificador de vinculação. Confira o valor, o status e o hash. A API também consulta pedidos e transações recentes da vinculação e os detalhes de um pedido. Abaixo, a parte escrita mostra as rotas e os exemplos. Confira o resultado com o registro da wallet e o saldo do membro no seu sistema. O botão Callback reenvia uma notificação; não abre uma consulta. Garanta a deduplicação antes de usá-lo.
Se o saldo do membro não mudar, confira rede, moeda e confirmações. Depois, verifique o pedido, a URL de callback e os registros do seu servidor. Se a assinatura falhar, confira a normalização, o relógio e nonce. Se a vinculação não aparecer, confira comerciante, rede, moeda e bindKey. Verifique também o status da conta, a cota de endereços e o saldo de taxas.
Use um identificador diferente para cada membro e reutilize sua vinculação na mesma rede e moeda. Credite o valor efetivamente recebido após verificar o callback e evite duplicidades por pedido.
O membro entra na conta e escolhe rede e moeda
→ O servidor obtém o bindKey estável do membro
→ Cria ou consulta o vínculo exclusivo e reutiliza o endereço
→ O membro escolhe quanto enviar para esse endereço
→ A plataforma detecta e confirma o depósito e gera um pedido exclusivo
→ Verifica o callback completed e credita paidAmount uma única vez por pedido
→ Concilia pedidos e extratos do painel com os créditos do membroimport { UUGateClient } from 'uugate-openapi-sdk';
const client = new UUGateClient({
baseUrl: 'https://api.uugate.com',
merchantUid: process.env.UUGATE_MERCHANT_UID,
apiKey: process.env.UUGATE_API_KEY,
});
const binding = await client.createExclusiveBinding({
chainCode: 'TRON',
tokenSymbol: 'USDT',
bindKey: 'MEMBER_10001',
label: 'MEMBER_10001',
notifyUrl: 'https://merchant.example.com/uugate/notify',
});const bindKey = 'MEMBER_10001';
const detail = await client.request('GET',
'/openapi/payin/exclusive-bindings/' + encodeURIComponent(bindKey), {
query: { chainCode: 'TRON', tokenSymbol: 'USDT', recentLimit: 10 },
});Preserve o corpo HTTP original como rawBody
Verifique x-callback-signature com a API Key associada ao pedido:
HMAC-SHA256(apiKey, timestamp + "." + nonce + "." + rawBody)
Valide timestamp, proteção contra repetição e campos do negócio
Exija o merchantUid correto e status == "completed"
Localize o membro por bindKey + chainCode + tokenSymbol
Na mesma transação de banco de dados:
Registre o depósito com chave única (merchantUid, orderNo)
Já registrado → não credite novamente
Primeiro registro → acrescente paidAmount ao saldo com aritmética decimal
Retorne 2xx após sucesso; em caso de falha, retorne um estado diferente de 2xx e registre o erro
// bindKey identifica o membro; orderNo identifica um depósito. Não confunda os dois.