Ошибка: TON Connect — Wallet not connected

Причина и решение ошибки TON Connect «Wallet not connected» перед sendTransaction.

TON Connect: «Wallet not connected»

Вызов sendTransaction / send выполнен без активной сессии кошелька. Connector не знает, куда отправлять request.


Причина

  • пользователь ещё не подключил кошелёк (connect не вызывали или отклонили);
  • сессия истекла / кошелёк отозвал доступ;
  • код дергает tx в useEffect до завершения restore connection;
  • смотришь не тот экземпляр TonConnectUI / connector.

Решение

tsx
// @tonconnect/ui-react ^2
import { useTonConnectUI, useTonWallet } from "@tonconnect/ui-react";
import { beginCell, toNano } from "@ton/core";

export function PayButton() {
  const wallet = useTonWallet();
  const [tonConnectUI] = useTonConnectUI();

  async function onPay() {
    if (!wallet) {
      await tonConnectUI.openModal();
      return;
    }

    const body = beginCell().storeUint(0, 32).storeStringTail("pay").endCell();

    await tonConnectUI.sendTransaction({
      validUntil: Math.floor(Date.now() / 1000) + 300,
      messages: [
        {
          address: "EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N",
          amount: toNano("0.05").toString(),
          payload: body.toBoc().toString("base64"),
        },
      ],
    });
  }

  return (
    <button type="button" onClick={onPay}>
      {wallet ? "Оплатить" : "Подключить кошелёк"}
    </button>
  );
}

Как избежать в будущем

Перед любой on-chain операцией проверяй useTonWallet() / connector.connected. Не вызывай sendTransaction из bootstrap-кода — только из user gesture после connect.

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