Перейти к основному содержимому

Устранение неполадок с платежами через смарт-контракты

Это руководство поможет разобраться с частыми проблемами при приёме некастодиальных платежей через смарт-контракты Volet.com в Ethereum, BNB Smart Chain и TRON.

Найдите свою проблему ниже и выполните рекомендуемые шаги. Адреса контрактов, параметры и описания ошибок приведены в справочнике по смарт-контрактам.

Проблемы с кошельком и сетью​

ПроблемаВозможная причинаЧто делать
Подключение кошелька отклоненоКлиент отклонил запрос или кошелёк заблокированПопросите клиента разблокировать кошелёк и подключиться заново
MetaMask не обнаруженСовместимый браузерный кошелёк не установлен или недоступенУстановите MetaMask или подключитесь через кошелёк с поддержкой WalletConnect
Неверная EVM-сетьКошелёк подключён не к той сети, что выбрана на странице оплатыЗапросите переключение сети и проверьте chain ID
Не удаётся подключиться через WalletConnectНеверный Project ID, ошибка в настройках или неподдерживаемый кошелёк или сетьПроверьте настройки проекта Reown и список поддерживаемых сетей
TronLink не обнаруженРасширение не установлено, не включено или заблокированоУстановите или разблокируйте TronLink и обновите страницу
Неверная сеть TRONКошелёк подключён к тестовой или неожиданной сетиПереключитесь на TRON Mainnet и проверьте активную сеть

Всегда заново проверяйте адрес кошелька и выбранную сеть перед отправкой платежа, особенно после подключения кошелька или переключения сети.

Проблемы с одобрением USDT​

Для платежей в USDT может понадобиться транзакция одобрения, прежде чем контракт-процессор сможет списать токены.

ПроблемаВозможная причинаЧто делать
Транзакция одобрения отклоненаКлиент отклонил запрос в кошелькеДайте клиенту повторить одобрение
Недостаточное разрешение (allowance)Процессору не разрешено списывать нужную суммуПроверьте allowance() и запросите одобрение на нужную сумму
Одобрение USDT в Ethereum не проходитНенулевое разрешение нельзя напрямую изменить на другое ненулевое значениеОдобрите 0, дождитесь подтверждения, затем одобрите нужную сумму
Недостаточно USDT на балансеУ клиента не хватает токенов на полную сумму платежаСравните balanceOf() с previewPayment().totalPay
Одобрение прошло, а платёж в ожиданииОдобрение выполнено, но платёжная транзакция не отправлена или не проверенаПроверьте текущее разрешение, затем отправьте или проверьте отдельную платёжную транзакцию

Важно: успешная транзакция approve() — это ещё не оплата. Для проверки оплаты заказа подходит только транзакция transfer() контракта-процессора.

Ошибки транзакций и контрактов​

Ошибка или проблемаВозможная причинаЧто делать
InvalidTotalAmountValidationНативный value или callValue не совпадает с ожидаемой суммой платежаПовторно вызовите previewPayment() и отправьте полученный totalPay
SellerIsBuyerАдреса кошельков покупателя и мерчанта совпадаютУбедитесь, что кошелёк мерчанта для приёма средств отличается от подключённого кошелька покупателя
SellerZeroAddressАдрес мерчанта для приёма средств — нулевой адресУкажите корректный кошелёк мерчанта
AmountIsZeroСумма платежа равна нулюПроверяйте сумму заказа перед отправкой транзакции
CommissionExceedsAmountКомиссию за обработку невозможно вычесть из запрошенной суммыПроверьте сумму заказа и настройку комиссии
SellerNotWhitelistedПроцессор не разрешает приём на этот кошелёк мерчантаСвяжитесь с Volet.com, чтобы проверить статус кошелька
EnforcedPauseОбработка платежей в контракте приостановленаПрекратите отправлять платежи через этот процессор и свяжитесь с Volet.com
Не проходит перевод токеновНедостаточный баланс токенов, разрешение или ограничения самого токенаПроверьте контракт токена, баланс, разрешение и выбранную сеть
Недостаточно газаУ клиента не хватает ETH или BNB на комиссию сетиПопросите клиента держать на балансе достаточно нативной монеты
Недостаточно ресурсов TRONУ клиента не хватает Energy, Bandwidth или доступных TRXПроверьте требования к ресурсам и доступный баланс TRX
TRON OUT_OF_ENERGYВыполнение контракта исчерпало доступную Energy или заданный лимит комиссииОцените расход ресурсов и проверьте feeLimit транзакции
TronGrid HTTP 429Превышен лимит запросов к APIИспользуйте серверный API-ключ и повторяйте запросы с увеличивающейся задержкой

Ошибки контрактов зависят от развёрнутого процессора. Описания ошибок приведены в справочнике по смарт-контрактам.

Платёж остаётся в ожидании​

Заказ может оставаться в ожидании даже после того, как клиент отправил транзакцию.

СитуацияЧто проверитьЧто делать
Хеш транзакции получен, а квитанции нетТранзакция, возможно, ещё не попала в блокПродолжайте проверять тот же txid
Транзакция выполнена, но не финализированаТребуемая финальность сети ещё не достигнутаДождитесь финальности, прежде чем завершать заказ
Одобрение USDT подтверждено, а платежа нетОтправлена только транзакция одобренияПроверьте, есть ли отдельная платёжная транзакция
Транзакция успешна, а заказ всё ещё в ожиданииДанные платежа могут не совпадать с заказом, или проверка на бэкенде не завершенаСверьте с заказом процессор, актив, получателя, сумму и вызов контракта
Транзакция TRON видна, но не solidifiedТранзакция ещё не появилась в данных SolidityNodeПродолжайте проверять solidified-квитанцию транзакции
RPC-запрос завершается ошибкой или по тайм-аутуПровайдер временно недоступенПовторите проверку, не помечая транзакцию как неуспешную
Клиент закрыл или обновил страницу оплатыСессия браузера завершилась до подтверждения платежаПродолжайте проверку через фоновый обработчик сверки на бэкенде
Срок оплаты истёк до подтверждения платежаТранзакция может подтвердиться уже после закрытия окна оплатыПродолжайте отслеживать отправленные попытки оплаты и сверяйте поздние платежи

Транзакция успешна, но заказ не помечен как оплаченный​

Успешная транзакция в блокчейне ещё не значит, что оплачен именно нужный заказ.

Ваш бэкенд должен убедиться, что:

  1. Транзакция использовала ожидаемый контракт-процессор.
  2. Актив и кошелёк мерчанта для приёма средств совпадают с заказом.
  3. Сумма платежа и настройки комиссии верны.
  4. Мерчант получил ожидаемые средства.
  5. Транзакция достигла требуемой финальности в блокчейне.
  6. Хеш транзакции ещё не использован для другого заказа.

Если хоть одна обязательная деталь не совпадает, не помечайте заказ как оплаченный автоматически. Оставьте платёж на ручной проверке.

Полный процесс проверки описан в статье Проверка платежей и отслеживание заказов.

Обращение в поддержку​

Если проблема не решилась, обратитесь в Volet.com и укажите:

  • Блокчейн-сеть и актив.
  • Хеш платёжной транзакции (txid), если он есть.
  • Примерную дату и время транзакции.
  • Идентификатор заказа мерчанта.
  • Адрес контракта-процессора.
  • Текст ошибки или описание проблемы.

Связаться с нами можно через поддержку Volet.com.

Безопасность: никогда никому не сообщайте сид-фразы кошельков, приватные ключи и секретные учётные данные API.