Интеграция со смарт-контрактами в TRON
В этом руководстве описано, как принимать некастодиальные криптоплатежи в TRON через платёжные смарт-контракты Volet.com и TronWeb.
Клиенты подключают свои кошельки, подтверждают транзакции и платят через смарт-контракт напрямую на ваш кошелёк для приёма средств. Средства не зачисляются на аккаунт Volet.com.
Прежде чем продолжить, ознакомьтесь с обзором платёжного сценария в статье Интеграция со смарт-контрактами.
Интеграция в общих чертах
- Подключите кошелёк клиента и убедитесь, что он работает в TRON Mainnet.
- Настройте платёжные контракты и свой кошелёк для приёма средств.
- Создайте заказ на бэкенде до начала оплаты.
- Вызовите
previewPayment(), чтобы рассчитать полную сумму платежа. - Вызовите
transfer(), чтобы инициировать платёж. Для USDT проверьте разрешение (allowance) на списание токенов и при необходимости запросите одобрение. - Сохраните хеш платёжной транзакции (
txid) в заказе. - Проверьте транзакцию на бэкенде по solidified-данным блокчейна, прежде чем помечать заказ как оплаченный.
Перед началом
Вам понадобятся:
- Кошелёк клиента: TronLink для платежей в браузере.
- Библиотека: TronWeb для работы с кошельками и смарт-контрактами TRON.
- Кошелёк мерчанта: адрес кошелька TRON под вашим контролем для приёма платежей.
- Бэкенд и база данных: чтобы создавать заказы, хранить данные транзакций и проверять платежи.
- Доступ к блокчейну: нода TRON или облачный сервис, например TronGrid, чтобы получать и проверять транзакции.
Для подключения мобильных кошельков также понадобятся WalletConnect Project ID и совместимая интеграция с кошельками TRON.
Поддерживаемые сети и активы
| Сеть | Поддерживаемые активы |
|---|---|
| TRON Mainnet | TRX, USDT (TRC-20) |
Для TRX и USDT используются разные контракты-процессоры.
Суммы в TRX указываются в SUN — минимальной единице TRX. 1 TRX равен 1 000 000 SUN.
У USDT TRC-20 6 decimals. 1 USDT равен 1 000 000 базовых единиц токена.
В примерах кода ниже указаны адреса процессоров и токенов из конфигурации интеграции.
Адреса контрактов, decimals токенов и параметры функций приведены в справочнике по смарт-контрактам.
Прежде чем использовать примеры в рабочей среде, сверьте адреса развёрнутых процессоров и интерфейс контракта с Volet.com.
Шаг 1. Подключите кошелёк клиента
Подключите браузерный кошелёк клиента через TronLink.
<button id="connect-tron">Connect TronLink</button>
<script>
let tronWeb;
document.getElementById('connect-tron').addEventListener('click', async () => {
if (!window.tronLink || !window.tronWeb) {
alert('Install and unlock TronLink.');
return;
}
const result = await window.tronLink.request({
method: 'tron_requestAccounts'
});
if (result?.code !== 200) {
throw new Error('Wallet connection rejected');
}
tronWeb = window.tronWeb;
document.getElementById('connect-tron').textContent =
tronWeb.defaultAddress.base58;
});
</script>
Клиент должен подключиться к TRON Mainnet.
Проверяйте активную сеть перед отправкой платежа. Не определяйте сеть только по URL RPC-эндпоинта: кошельки могут использовать собственные ноды.
Приложение также должно отслеживать смену аккаунта и сети в кошельке и заново проверять подключение перед отправкой транзакции.