Тестирование TON Connect в testnet

Проверишь Connect и sendTransaction в testnet: network -3, faucet, манифест и чеклист перед mainnet.

Зачем testnet для TON Connect

В testnet отрабатываешь полный путь: манифест → Connect → подтверждение в кошельке → sendTransaction → эксплорер — без реальных денег. Логика SDK та же, меняются сеть кошелька, RPC и поле network в запросе.

Sandbox контрактов не заменяет этот шаг: bridge, модалка и Reject видны только с живым кошельком.


Connect + перевод себе в testnet

tsx
// @tonconnect/ui-react ^3.0.0
import {
  useTonAddress,
  useTonConnectUI,
  useTonWallet,
} from "@tonconnect/ui-react";

export function TestnetPayButton() {
  const [tonConnectUI] = useTonConnectUI();
  const wallet = useTonWallet();
  const address = useTonAddress(); // user-friendly testnet-адрес после Connect

  async function sendTestnet() {
    if (!wallet || !address) {
      await tonConnectUI.openModal();
      return;
    }

    try {
      const result = await tonConnectUI.sendTransaction({
        validUntil: Math.floor(Date.now() / 1000) + 300,
        network: "-3", // TON testnet
        messages: [
          {
            address, // перевод себе — безопасная проверка пайплайна
            amount: "10000000", // 0.01 test Gram
          },
        ],
      });
      console.log("testnet boc", result.boc);
    } catch (e) {
      console.error("reject or error", e);
    }
  }

  return (
    <button type="button" onClick={sendTestnet}>
      Testnet: отправить 0.01 себе
    </button>
  );
}

Чеклист перед тестом:

  1. В кошельке включён Developer mode → Testnet (Tonkeeper и др.)
  2. На testnet-адресе есть монеты с faucet (@testgiver_ton_bot)
  3. manifestUrl открывается по HTTPS (туннель, если локально)
  4. В sendTransaction указано network: "-3"
  5. useTonAddress() показывает testnet-адрес (часто префикс k / 0, не mainnet EQ… / UQ…)

Проверка результата — Testnet Tonviewer / Tonscan по boc или адресу отправителя.

Как это работает

network: "-3" — кошелёк сверит сеть сессии с запросом; при mainnet-кошельке отклонит.

Манифест для testnet обычно тот же файл (тот же url приложения). Меняется окружение кошелька и параметры tx, не обязательно второй манифест.

Перевод себе проверяет Connect + подпись + сеть без риска отправить тестовые монеты «не туда». Для контрактов подставь testnet-адрес контракта вместо address.

Частые ошибки

Кошелёк в mainnet, в коде -3 → Reject / ошибка сети. Синхронизируй режим кошелька и network.

Faucet пополнил один адрес, Connect на другой → в testnet легко плодить аккаунты. Сверяй useTonAddress() с адресом в faucet.

Сразу после успеха в UI считаешь mainnet готовым → перед продом смени network на "-239", адреса контрактов, RPC и убери testnet-подсказки в интерфейсе.


Что дальше

Материалы gramdocs.tech носят образовательный характер и не являются финансовой, юридической или инвестиционной рекомендацией. Работа с блокчейном TON и токеном Gram связана с рисками потери средств. Правовая информация