Saltar al contenido principal

Solución de problemas de pagos con contratos inteligentes

Usa esta guía para resolver problemas frecuentes al aceptar pagos no custodiales con contratos inteligentes de Volet.com en Ethereum, BNB Smart Chain y TRON.

Busca el problema a continuación y sigue los pasos recomendados. Las direcciones de los contratos, los parámetros y las definiciones de errores están en la Referencia de contratos inteligentes.

Problemas de billetera y red​

ProblemaCausa posibleCómo resolverlo
Conexión de billetera rechazadaEl cliente rechazó la solicitud o la billetera está bloqueadaPide al cliente que desbloquee la billetera y vuelva a conectarse
MetaMask no detectadoNo hay una billetera de navegador compatible instalada o disponibleInstala MetaMask o conéctate con una billetera compatible con WalletConnect
Red EVM incorrectaLa billetera está conectada a una red distinta de la elegida en el pagoSolicita el cambio de red y verifica el chain ID
Falla la conexión con WalletConnectProject ID no válido, configuración incorrecta o billetera o red no compatibleRevisa la configuración del proyecto de Reown y las redes compatibles
TronLink no detectadoLa extensión no está instalada, activada o desbloqueadaInstala o desbloquea TronLink y recarga la página
Red TRON incorrectaLa billetera está conectada a una red de prueba o a una red inesperadaCambia a TRON Mainnet y verifica la red activa

Verifica siempre de nuevo la dirección de la billetera y la red elegida antes de iniciar un pago, sobre todo después de conectar la billetera o cambiar de red.

Problemas con la aprobación de USDT​

Los pagos en USDT pueden requerir una transacción de aprobación antes de que el contrato procesador pueda transferir los tokens.

ProblemaCausa posibleCómo resolverlo
Transacción de aprobación rechazadaEl cliente rechazó la solicitud en su billeteraPermite que el cliente vuelva a intentar la aprobación
Autorización de gasto (allowance) insuficienteEl procesador no está autorizado a gastar el monto necesarioRevisa allowance() y solicita la aprobación del monto necesario
Falla la aprobación de USDT en EthereumUna autorización distinta de cero no puede cambiarse directamente a otro monto distinto de ceroAprueba 0, espera la confirmación y luego aprueba el monto necesario
Saldo de USDT insuficienteEl cliente no tiene suficientes tokens para el total del pagoCompara balanceOf() con previewPayment().totalPay
La aprobación se completó, pero el pago está pendienteLa aprobación se completó, pero la transacción de pago no se envió o no se verificóRevisa la autorización actual y luego inicia o verifica la transacción de pago aparte

Importante: una transacción approve() exitosa no es un pago completado. Solo la transacción transfer() del contrato procesador sirve para verificar el pago del pedido.

Errores de transacciones y contratos​

Error o problemaCausa posibleCómo resolverlo
InvalidTotalAmountValidationEl value o callValue nativo no coincide con el total esperado del pagoVuelve a llamar a previewPayment() y envía el totalPay que devuelve
SellerIsBuyerLas direcciones de la billetera del comprador y del comercio son igualesComprueba que la billetera receptora del comercio sea distinta de la billetera conectada del comprador
SellerZeroAddressLa dirección receptora del comercio es la dirección ceroConfigura una billetera válida del comercio
AmountIsZeroEl monto del pago es ceroValida el monto del pedido antes de enviar la transacción
CommissionExceedsAmountLa comisión de procesamiento no puede descontarse del monto solicitadoRevisa el monto del pedido y la configuración de la comisión
SellerNotWhitelistedEl procesador no autoriza la billetera receptora del comercioContacta a Volet.com para revisar la autorización de la billetera
EnforcedPauseEl procesamiento de pagos está en pausa en el contratoDeja de enviar pagos a través de ese procesador y contacta a Volet.com
Falla la transferencia del tokenSaldo de tokens o autorización insuficientes, o restricciones propias del tokenVerifica el contrato del token, el saldo, la autorización y la red elegida
Gas insuficienteEl cliente no tiene suficiente ETH o BNB para la comisión de redPide al cliente que mantenga saldo suficiente de la moneda nativa
Recursos de TRON insuficientesEl cliente no tiene suficiente Energy, Bandwidth o TRX disponibleRevisa los recursos necesarios y el TRX disponible
TRON OUT_OF_ENERGYLa ejecución del contrato agotó la Energy disponible o el límite de comisión configuradoEstima el consumo de recursos y revisa el feeLimit de la transacción
TronGrid HTTP 429Se superó el límite de solicitudes de la APIUsa una clave de API en el servidor y reintenta las solicitudes con espera progresiva

Los errores del contrato dependen del procesador desplegado. Consulta la Referencia de contratos inteligentes para ver las definiciones de los errores.

El pago sigue pendiente​

Un pedido puede seguir pendiente aunque el cliente ya haya enviado una transacción.

SituaciónQué revisarAcción recomendada
Se recibió el hash de la transacción, pero no hay reciboEs posible que la transacción aún no esté incluida en un bloqueSigue revisando el mismo txid
La transacción se ejecutó, pero no está finalizadaAún no se alcanzó la finalidad de red requeridaEspera la finalidad antes de completar el pedido
La aprobación de USDT se confirmó, pero no hay pagoSolo se envió la transacción de aprobaciónComprueba si existe una transacción de pago aparte
La transacción fue exitosa, pero el pedido sigue pendienteLos datos del pago pueden no coincidir con el pedido o la verificación en el backend puede estar incompletaCompara con el pedido el procesador, el activo, el destinatario, el monto y la llamada al contrato
La transacción de TRON es visible, pero no está solidificadaLa transacción aún no aparece en los datos del SolidityNodeSigue revisando el recibo solidificado de la transacción
La solicitud RPC falla o agota el tiempo de esperaEl proveedor no está disponible temporalmenteReintenta la verificación sin marcar la transacción como fallida
El cliente cerró o recargó la página de pagoLa sesión del navegador terminó antes de confirmarse el pagoContinúa la verificación con el proceso de conciliación del backend
El pago venció antes de confirmarseLa transacción puede confirmarse después de cerrarse la ventana de pagoSigue rastreando los intentos de pago enviados y concilia los pagos tardíos

La transacción fue exitosa, pero el pedido no está marcado como pagado​

Que una transacción en la blockchain sea exitosa no significa necesariamente que se haya pagado el pedido correcto.

Tu backend debe confirmar que:

  1. La transacción usó el contrato procesador esperado.
  2. El activo y la billetera receptora del comercio coinciden con el pedido.
  3. El monto del pago y la configuración de la comisión son correctos.
  4. El comercio recibió los fondos esperados.
  5. La transacción alcanzó la finalidad requerida en la blockchain.
  6. El hash de la transacción no se usó ya para otro pedido.

Si algún dato obligatorio no coincide, no marques el pedido como pagado automáticamente. Deja el pago en revisión para investigarlo.

El proceso completo de verificación se describe en Verificación de pagos y seguimiento de pedidos.

Contactar al soporte​

Si el problema persiste, contacta a Volet.com e indica:

  • La red blockchain y el activo.
  • El hash de la transacción de pago (txid), si lo tienes.
  • La fecha y hora aproximadas de la transacción.
  • El ID del pedido del comercio.
  • La dirección del contrato procesador.
  • El mensaje de error o una descripción del problema.

Puedes comunicarte con nuestro equipo a través del soporte de Volet.com.

Seguridad: nunca compartas frases semilla de billeteras, claves privadas ni credenciales secretas de API.