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

Solana и Tron

Сети Solana и Tron есть в GET /api/v1/networks рядом с EVM-сетями, у них family равно solana или tron. Токены, decimals и minimum_payment получайте из API, а не храните свой список. Адреса в этих сетях записываются в их собственном формате base58 — в запросах, ответах и вебхуках.

EVM Solana Tron
Адрес для оплаты Адрес контракта. Получатель закрепляется в блокчейне при создании адреса. Отдельный ключ на каждый платёж, его хранит подписывающий сервис Invoise. Отдельный ключ на каждый платёж, его хранит подписывающий сервис Invoise.
Хранение средств Средства могут уйти только получателю, закреплённому в блокчейне, за вычетом комиссии. Invoise держит платёж, только пока не перешлёт его вашему получателю. Invoise держит платёж, пока не перешлёт его. Платёжного контракта нет.
Получатель recipient магазина PUT /shops/{shop_id}/solana-recipient PUT /shops/{shop_id}/tron-recipient
Делегат Необязателен Нет Нет
Sandbox-магазин Да Нет: 400 solana_sandbox_unavailable Да

Tron включается для мерчанта по запросу — напишите в поддержку. Его minimum_payment выше, чем в других сетях.

Чтобы выпускать платежи в Solana или Tron, магазину нужен получатель в этой сети. Без него создание инвойса или депозита вернёт 400 solana_setup_required или 400 tron_setup_required.

Окно терминала
curl -X PUT 'https://platform.invoise.me/api/v1/shops/{shop_id}/solana-recipient' \
-H 'Authorization: Bearer <session-token>' \
-H 'Idempotency-Key: <saved-unique-key>' \
-H 'Content-Type: application/json' \
-d '{"address":"<your-solana-wallet>"}'

Для Tron используйте /tron-recipient. Задать получателя может только сессия владельца; API-ключ магазина может его только прочитать. GET по тому же пути возвращает {"address":"..."}, пока получатель не задан — с пустым адресом.

Получатель задаётся один раз. Тот же адрес повторно принимается, другой вернёт 400 shop_addresses_immutable. Проверьте адрес до сохранения.

Сеть Правила
Solana Нужен обычный кошелёк, не program-derived address и не адрес Invoise: иначе invalid_solana_address. У кошелька уже должен быть аккаунт для токена, иначе создание инвойса или депозита вернёт solana_recipient_token_account_required. Сначала один раз получите на него этот токен.
Tron Некорректный адрес вернёт invalid_tron_address или invalid_tron_checksum, адрес Invoise — invalid_tron_recipient. У мерчанта должен быть включён Tron, иначе merchant_network_disabled.

Кошелёк Invoise работает в EVM-сетях. Магазин с целью выплат wallet отправляет туда и платежи в Solana: Invoise переводит их в кошелёк в EVM-сети через мост. Если мост недоступен, выпуск в Solana вернёт 400 solana_bridge_unavailable. GET /merchants/{merchant_id}/networks показывает wallet_bridge: true у сети Solana, где мост работает.

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

Выбор задаётся для каждого семейства сетей через PATCH /shops/{shop_id}: solana_payout_target и tron_payout_target принимают address или wallet. См. справочник API.