Pular para o conteúdo principal

Solução de problemas de pagamentos com contratos inteligentes

Use este guia para resolver problemas comuns ao receber pagamentos não custodiais com contratos inteligentes da Volet.com no Ethereum, na BNB Smart Chain e na TRON.

Encontre o problema abaixo e siga as etapas recomendadas. Os endereços dos contratos, os parâmetros e as definições de erros estão na Referência de contratos inteligentes.

Problemas de carteira e rede​

ProblemaCausa possívelComo resolver
Conexão da carteira rejeitadaO cliente rejeitou a solicitação ou a carteira está bloqueadaPeça ao cliente para desbloquear a carteira e conectar de novo
MetaMask não detectadaNenhuma carteira de navegador compatível está instalada ou disponívelInstale a MetaMask ou conecte uma carteira compatível com WalletConnect
Rede EVM incorretaA carteira está conectada a uma rede diferente da escolhida no pagamentoSolicite a troca de rede e verifique o chain ID
Falha na conexão via WalletConnectProject ID inválido, configuração incorreta ou carteira ou rede sem suporteVerifique a configuração do projeto na Reown e as redes suportadas
TronLink não detectadoA extensão não está instalada, ativada ou desbloqueadaInstale ou desbloqueie o TronLink e atualize a página
Rede TRON incorretaA carteira está conectada a uma rede de teste ou a uma rede inesperadaMude para a TRON Mainnet e verifique a rede ativa

Sempre verifique de novo o endereço da carteira e a rede escolhida antes de iniciar um pagamento, principalmente depois de conectar a carteira ou trocar de rede.

Problemas com a aprovação de USDT​

Pagamentos em USDT podem exigir uma transação de aprovação antes que o contrato processador possa transferir os tokens.

ProblemaCausa possívelComo resolver
Transação de aprovação rejeitadaO cliente rejeitou a solicitação na carteiraPermita que o cliente tente a aprovação de novo
Permissão de gasto (allowance) insuficienteO processador não está autorizado a gastar o valor necessárioVerifique allowance() e solicite a aprovação do valor necessário
Falha na aprovação de USDT no EthereumUma permissão diferente de zero não pode ser alterada diretamente para outro valor diferente de zeroAprove 0, aguarde a confirmação e depois aprove o valor necessário
Saldo de USDT insuficienteO cliente não tem tokens suficientes para o total do pagamentoCompare balanceOf() com previewPayment().totalPay
A aprovação foi concluída, mas o pagamento está pendenteA aprovação foi concluída, mas a transação de pagamento não foi enviada ou verificadaVerifique a permissão atual e depois inicie ou verifique a transação de pagamento separada

Importante: uma transação approve() bem-sucedida não é um pagamento concluído. Somente a transação transfer() do contrato processador serve para verificar o pagamento do pedido.

Erros de transações e contratos​

Erro ou problemaCausa possívelComo resolver
InvalidTotalAmountValidationO value ou callValue nativo não corresponde ao total esperado do pagamentoChame previewPayment() de novo e envie o totalPay retornado
SellerIsBuyerOs endereços das carteiras do comprador e do lojista são iguaisVerifique se a carteira de recebimento do lojista é diferente da carteira conectada do comprador
SellerZeroAddressO endereço de recebimento do lojista é o endereço zeroConfigure uma carteira válida do lojista
AmountIsZeroO valor do pagamento é zeroValide o valor do pedido antes de enviar a transação
CommissionExceedsAmountA taxa de processamento não pode ser descontada do valor solicitadoRevise o valor do pedido e a configuração da taxa
SellerNotWhitelistedO processador não autoriza a carteira de recebimento do lojistaFale com a Volet.com para verificar a autorização da carteira
EnforcedPauseO processamento de pagamentos está pausado no contratoPare de enviar pagamentos por esse processador e fale com a Volet.com
Falha na transferência do tokenSaldo de tokens ou permissão insuficientes, ou restrições do próprio tokenVerifique o contrato do token, o saldo, a permissão e a rede escolhida
Gas insuficienteO cliente não tem ETH ou BNB suficiente para a taxa de redePeça ao cliente para manter saldo suficiente da moeda nativa
Recursos da TRON insuficientesO cliente não tem Energy, Bandwidth ou TRX disponível suficienteRevise os recursos necessários e o TRX disponível
TRON OUT_OF_ENERGYA execução do contrato esgotou a Energy disponível ou o limite de taxa configuradoEstime o consumo de recursos e revise o feeLimit da transação
TronGrid HTTP 429O limite de requisições da API foi excedidoUse uma chave de API no servidor e repita as requisições com espera progressiva

Os erros do contrato dependem do processador implantado. Veja a Referência de contratos inteligentes para as definições dos erros.

O pagamento continua pendente​

Um pedido pode continuar pendente mesmo depois que o cliente envia uma transação.

SituaçãoO que verificarAção recomendada
O hash da transação foi retornado, mas não há reciboA transação talvez ainda não tenha sido incluída em um blocoContinue verificando o mesmo txid
A transação foi executada, mas não está finalizadaA finalidade de rede exigida ainda não foi atingidaAguarde a finalidade antes de concluir o pedido
A aprovação de USDT foi confirmada, mas não há pagamentoSomente a transação de aprovação foi enviadaVerifique se existe uma transação de pagamento separada
A transação foi bem-sucedida, mas o pedido continua pendenteOs dados do pagamento podem não corresponder ao pedido, ou a verificação no backend pode estar incompletaCompare com o pedido o processador, o ativo, o destinatário, o valor e a chamada ao contrato
A transação da TRON está visível, mas não está solidificadaA transação ainda não apareceu nos dados do SolidityNodeContinue verificando o recibo solidificado da transação
A requisição RPC falha ou expiraO provedor está temporariamente indisponívelRepita a verificação sem marcar a transação como falha
O cliente fechou ou atualizou a página de pagamentoA sessão do navegador terminou antes da confirmação do pagamentoContinue a verificação pelo processo de conciliação do backend
O pagamento expirou antes da confirmaçãoA transação pode ser confirmada depois que a janela de pagamento se fechaContinue acompanhando as tentativas de pagamento enviadas e concilie os pagamentos atrasados

A transação foi bem-sucedida, mas o pedido não está marcado como pago​

Uma transação bem-sucedida na blockchain não significa necessariamente que o pedido certo foi pago.

Seu backend deve confirmar que:

  1. A transação usou o contrato processador esperado.
  2. O ativo e a carteira de recebimento do lojista correspondem ao pedido.
  3. O valor do pagamento e a configuração da taxa estão corretos.
  4. O lojista recebeu os fundos esperados.
  5. A transação atingiu a finalidade exigida na blockchain.
  6. O hash da transação ainda não foi usado para outro pedido.

Se algum dado obrigatório não corresponder, não marque o pedido como pago automaticamente. Mantenha o pagamento em análise para investigação.

O processo completo de verificação está descrito em Verificação de pagamentos e acompanhamento de pedidos.

Fale com o suporte​

Se o problema continuar, fale com a Volet.com e informe:

  • A rede blockchain e o ativo.
  • O hash da transação de pagamento (txid), se houver.
  • A data e a hora aproximadas da transação.
  • O ID do pedido do lojista.
  • O endereço do contrato processador.
  • A mensagem de erro ou uma descrição do problema.

Você pode falar com a nossa equipe pelo suporte da Volet.com.

Segurança: nunca compartilhe frases-semente de carteiras, chaves privadas nem credenciais secretas de API.