Solana и Tron
Сети Solana и Tron есть в GET /api/v1/networks рядом с EVM-сетями, у них family равно solana или tron. Токены, decimals и minimum_payment получайте из API, а не храните свой список. Адреса в этих сетях записываются в их собственном формате base58 — в запросах, ответах и вебхуках.
Чем они отличаются от EVM
Заголовок раздела «Чем они отличаются от EVM»| 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
Заголовок раздела «Выплаты в кошелёк Invoise»Кошелёк 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.