Как настроить прием платежей в TON: TON Connect, Jetton, автоматизация

Ручная сверка платежей и зависшие переводы съедают время команды и доверие клиентов. Мы настраиваем прием платежей в TON под ключ: подключаем кошельки, автоматизируем зачисление и сверку, передаем регламенты вашей команде. Зависшие поступления уходят, а сверка занимает минуты вместо часов.
Часто задаваемые вопросы

Почему прием платежей TON ломается на проде

Прием платежей TON выглядит тривиально: сгенерировали адрес, показали QR, дождались транзакции. На проде выясняется, что сеть подтверждает оплату асинхронно — состояние кошелька меняется не в момент нажатия кнопки, а когда перевод попадет в блок.

Классика — платеж ушел, а подтверждение не дошло: индексер отстал, вебхук потерялся при выкатке, обработчик упал на неожиданном ответе. Зачисление не прошло, баланс не изменился, а обращение в поддержку приходит раньше транзакции. Отдельный сценарий — зависший перевод: комиссия выставлена ниже текущей нагрузки, и сообщение висит в очереди — ни подтверждения, ни отказа.

Адрес тоже «плывет»: при генерации нового адреса под каждый счет соответствие «адрес — заказ» теряется при перезапуске сервиса, ротации кошелька или в кэше. В TON Connect плательщик переводит из своего кошелька, и связать поступление со счетом можно только по комментарию и телу сообщения. У Jetton добавляется слой: приходит не монета, а перевод с полезной нагрузкой, и без разбора этого поля платеж не сопоставить с заказом.

Отсюда два дорогих класса отказов: ручная сверка платежей и двойное зачисление. Повторная доставка вебхука или ретрай обработчика начисляют сумму дважды, а расхождения ищут по выписке уже после жалобы клиента.

Разбираем, как это закрывается: идемпотентность на уровне события, курсор по входящим переводам и алерты на задержку подтверждений.

Что меняется после внедрения: скорость, сверка, отказы

Эффект внедрения измеряется не фактом подключения кошелька, а тем, сколько платежей система закрывает сама. До автоматизации каждое поступление сверяли вручную: сумму и комментарий к переводу сопоставляли с заказом, а зависший перевод находился только тогда, когда клиент писал в поддержку. TON Connect с серверным подтверждением переводов и обработчиком Jetton переносит эту работу в код — инженеры настраивают зачисление по событию из сети, а не по выписке.

Чек-лист, по которому принимаем результат:

  • Доля автоматически зачтённых платежей — 95%+ от общего числа. В ручной разбор уходят только нестандартные случаи: перевод без комментария, недоплата, платёж не на тот адрес.
  • Время подтверждения платежа — зачисление настраиваем на нужное число подтверждений сети; баланс заказа обновляется в пределах десятков секунд вместо сверки раз в час.
  • Реакция на зависший перевод — фоновый наблюдатель перепроверяет статус и поднимает оповещение за минуты, а не после обращения клиента.
  • Доля ручных операций — падает с трети транзакций до единиц процентов; бухгалтерия получает готовый журнал с сопоставлением «транзакция — заказ — сумма».
  • Ушедший класс отказов — зачёт по чужому счёту, дубль при повторной отправке, потерянный платёж без комментария закрываются адресом-на-счёт и защитой от повторного зачёта по хешу.
  • Jetton на тех же рельсах — токенные платежи идут через тот же контур зачисления, с корректным учётом десятичных знаков.

Варианты интеграции: TON Connect, Jetton, прямая отправка

Режим приёма задаёт, сколько логики остаётся на стороне сервиса. Кошелёк-подключение отдаёт подпись транзакции клиенту, перевод токена требует отдельной сверки баланса, а прямая отправка на адрес — самый простой сценарий, но и самый слепой. Ниже — сравнение по трём осям: что видит платёжный сервис, что приходится подтверждать вручную и как выглядит возврат.

Вариант Когда подходит Ограничения интеграции
TON Connect (кошелёк-подключение) Подписки, личный кабинет, оплата внутри интерфейса с подтверждением в кошельке Держать актуальный список совместимых приложений, корректно обрабатывать отказ пользователя, следить за сменой сети в кошельке
Перевод в токене (Jetton) Расчёты в собственном активе, когда номинал не совпадает с базовой монетой Проверять, что пришёл именно ваш токен, а не копия с похожим именем; отдельно учитывать десятичные знаки и адрес отправителя
Прямая отправка на адрес Донаты, пополнение баланса, приём без пользовательского интерфейса Сопоставлять платёж с заказом по сумме и комментарию, вручную разбирать спорные переводы, подтверждения от плательщика нет

На практике режимы комбинируют: кошелёк-подключение закрывает основной поток, прямая отправка работает резервным каналом, а токен-переводы включают только там, где расчёт в базовой монете неудобен. Общим остаётся одно — собственный журнал входящих транзакций с обработкой, устойчивой к повторной доставке, иначе один перевод превращается в два зачисления.

Как идет внедрение: от аудита до передачи регламентов

Работу ведём этапами: сначала фиксируем, как приходят платежи и где подтверждается факт оплаты, потом настраиваем приём, затем проверяем на реальных переводах и передаём регламенты. Порядок не меняем — пропущенный аудит обычно всплывает уже на проверке, когда переделывать схему дороже.

Аудит и схема

  1. Аудит платежных потоков. Разбираем типы оплат — разовые, подписки, пополнение баланса, возвраты — и смотрим, как факт оплаты связывается с заказом в учётной системе.
  2. Схема подтверждений. Договариваемся, что считаем оплатой: запись перевода в блоке, число подтверждений или событие от кошелька. От этого зависят момент смены статуса заказа и логика отмен с повторами.
  3. Сопоставление платежа с заказом. Выбираем способ приёма — прямой перевод на адрес, подключение кошелька через TON Connect или приём жетонов — и фиксируем идентификатор, который не потеряется при параллельных заказах.

Настройка и проверка

  • Настройка приёма и автоматизации. Сервис слушает сеть, сопоставляет переводы с заказами и меняет их статус; отдельно настраиваем повторные проверки для транзакций, которые подтверждаются не мгновенно.
  • Тестовые переводы. Сначала прогон в тестовой сети, затем реальные переводы минимальных сумм: успех, недоплата, перевод без идентификатора, повторная отправка. Каждый сценарий — строка в отчёте со статусом.

Приёмка и передача

  • Приёмка. Сверяем статусы заказов с движением средств, проверяем журналы, уведомления и поведение при недоступности узла.
  • Передача регламентов. Отдаём инструкции по мониторингу, порядок действий при сбое, правила сверки и добавления новых жетонов — команда сопровождает приём платежей сама.

Что остается у вас: конфигурация, ключи, документация

Передаём не доступ к серверу, а воспроизводимый набор артефактов: с ним ваша команда принимает платежи, меняет параметры и разбирает инциденты без нашего участия. Всё, что касается движения средств, фиксируется письменно — в платежах устные договорённости не работают.

  • Конфигурация приема: файлы окружения с адресом получателя, списком принимаемых джеттонов, лимитами на сумму и числом подтверждений сети, с комментариями о том, что и когда менять.
  • Схема адресов: какой кошелек горячий, где холодное хранение, как настроен вывод средств и куда уходит комиссия.
  • Управление ключами: где лежат приватные ключи и мнемоники, кто к ним допущен, как проходит ротация и что делать при компрометации. Ключи остаются у вас — мы работаем на тестовом контуре.
  • Политики доступа: роли и минимальные права, обязательное второе подтверждение для вывода, журнал операций с указанием инициатора и времени.
  • Правила сверки: как входящая транзакция сопоставляется с заказом, с какого момента оплата считается подтверждённой и какие расхождения уходят в ручной разбор.
  • Документация: схема потоков платежей, описание интеграции TON Connect на стороне интерфейса, перечень контрактов с адресами, порядок работы с тестовой сетью.
  • Инструкции для поддержки: готовые сценарии на частые обращения — платёж не пришёл, сумма меньше ожидаемой, пользователь закрыл кошелёк до подтверждения, зависший вывод.
  • Регламент изменений: как выкатывается новая конфигурация, где хранится предыдущая версия и как откатиться за один шаг.

Кейс: ручная сверка сократилась, зависшие платежи ушли

Как было

До автоматизации приём платежей TON выглядел так: оператор открывал обозреватель сети, искал входящий перевод, сопоставлял комментарий к транзакции с номером заказа и вручную менял статус в учётной системе. На потоке в несколько тысяч заказов в месяц через руки проходило около 40% зачислений, а вне рабочих часов платёж ждал подтверждения до утра.

Зависшие платежи — расхождение суммы, опечатка в комментарии, повторная отправка — доходили до 4-6% и разбирались в переписке с поддержкой. Каждый такой случай требовал ручной сверки по журналу и затягивал закрытие заказа.

Что изменили и что получили

Подключили TON Connect для подписи кошельком, а зачисление перевели на индексатор: сервис слушает сеть, сверяет входящие переводы с открытыми счетами и закрывает счёт автоматически. Для Jetton добавили сверку по адресу мастер-контракта токена и его точности — без этого одинаковые суммы в разных токенах склеивались. Каждому счёту присвоен уникальный идентификатор в комментарии к переводу, запись идемпотентна по хешу транзакции, зачисление идёт после заданного числа подтверждений, а необработанные случаи уходят в очередь с повторными попытками и оповещением дежурного.

Доля автоматических подтверждений выросла до 97-99%: ручная сверка осталась только для спорных переводов — несовпадение суммы, платёж без комментария, возврат. Среднее время зачисления сократилось с десятков минут до 30-90 секунд и перестало зависеть от графика операторов, доля зависших платежей упала ниже 0,3%.

Чем отличается нативный перевод от Jetton-перевода?

В сети TON нативный перевод — движение базовой монеты: факт расчёта совпадает с изменением баланса. Чтобы зачислить платёж, достаточно дождаться включения транзакции в блок и нужного числа подтверждений — второго вызова контракта нет, платёж либо прошёл целиком, либо не прошёл.

Jetton — токен-контракт: перевод идёт сообщением в токен-кошелёк отправителя, тот списывает баланс и уведомляет кошелёк получателя. Граница подтверждения здесь не первая транзакция, а именно уведомление: пока баланс получателя не обновился, зачислять платёж нельзя.

На практике это два разных контура приёма платежей. Для натива сервис слушает входящие транзакции на адрес и подтверждает их по числу блоков. Для Jetton он либо ждёт уведомление с комментарием к переводу, либо сверяет баланс токен-кошелька и сопоставляет перевод по идентификатору. Если платёж идёт с биржи, комментарий часто теряется — поэтому в одном контуре выдаём уникальный адрес под каждый счёт, в другом требуем обязательный комментарий.

Комиссии сети тоже ведут себя по-разному. В нативном переводе газ платит отправитель, получателю резервировать нечего. В Jetton отправитель платит дважды — за перевод и за доставку уведомления: приложено мало базовой монеты, жетоны дошли, уведомление нет, и платёж всплывает только на сверке. На вашем токен-кошельке нужен запас базовой монеты, иначе не уйдёт ни возврат, ни вывод.

Возвраты. Для натива возврат — обычная транзакция из горячего кошелька: одна комиссия, предсказуемый результат. Для Jetton возврат идёт из токен-кошелька, комиссии за доставку списываются на стороне отправителя, и сумма возврата может оказаться меньше исходной. Поэтому в оба контура закладываем идемпотентную сверку по идентификатору транзакции и очередь «зависших» платежей, а выбираем по сценарию: натив — где важны простота и массовые выплаты, Jetton — где платёж должен идти в токене с привязкой к внешнему активу.

Частые технические сомнения и ответы

Сомнения на приёмке повторяются из раза в раз: как не зачислить один перевод дважды, что будет при смене адреса кошелька, кто из команды видит операции и как всё это сходится с текущим учетом. Это те места, где интеграция либо держит поток, либо начинает требовать ручных сверок — разбираем каждый.

Платёж подтвердился дважды — зачислите два раза?

Нет. Каждое поступление получает уникальный идентификатор, и обработчик сверяет его с журналом до зачисления. Повторное подтверждение того же перевода обрабатывается идемпотентно: заказ обновляется один раз, остальные вызовы возвращают уже сохранённый результат.

Мы сменили адрес приёма — старые платежи не потеряются?

Нет, если адреса хранятся справочником, а не вписаны в логику. Ведём реестр соответствий «адрес — кошелёк — назначение», история остаётся доступной, а новый адрес подключается без правок кода. В переходный период опрашиваем оба адреса параллельно.

Как это сходится с текущим учетом?

Выгрузка идёт в формате, который принимает ваша учётная система: идентификатор, сумма, назначение, статус. Сверка выполняется автоматически, расхождения попадают в отдельный список с причиной, а не в ручной разбор. Если учёт в закрытом контуре — отдаём файл или передаём данные по расписанию.

Кто из сотрудников получит доступ к операциям?

Роли настраиваются по минимальным правам: бухгалтерия видит выгрузку и статусы, поддержка — только конкретный платёж по номеру заказа, ключи вывода остаются у одного ответственного. Каждое действие пишется в журнал, так что виден и автор, и время.

Обсудим задачу: вернемся с оценкой и планом работ

Чтобы вернуться с точной оценкой работ, а не с вилкой «на глаз», нам нужен небольшой набор исходных данных по вашей схеме приёма. Продовые ключи и доступы на этом этапе не требуются — достаточно описания того, как платежи устроены сейчас и что должно получиться в итоге.

  • схема приёма: подключение кошелька через TON Connect в приложении или на сайте, оплата по адресу либо переводом жетонов;
  • как формируется адрес под платёж: статический, по одному на операцию, с идентификатором в комментарии;
  • откуда берётся подтверждение зачисления: собственный узел, публичный обозреватель блоков или уведомления провайдера;
  • что происходит при недоплате, переплате, переводе без комментария и повторной отправке;
  • объёмы: число платежей в сутки и пиковая нагрузка, сколько жетонов и адресов обслуживается;
  • учёт и сверка: выгрузка операций, сопоставление с внутренней базой, роли и доступы сотрудников;
  • ограничения: где хранятся ключи, есть ли требования по разделению сред и аудиту операций.

С этим набором мы возвращаемся с оценкой работ и планом внедрения: очерёдность этапов, что закрываем первым, где точки проверки и что потребуется от вашей стороны. Опишите задачу в удобном виде — разберём схему приёма платежей и предложим решение.

Направления блокчейн-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142