Мы помогаем бизнесу принимать платежи в Solana (SOL) и SPL-токенах с минимальной задержкой. Solana Pay — ключевой инструмент, но его интеграция требует понимания механики транзакций, finality и безопасности. Разберём на примере реального проекта: настройка приёма USDC для маркетплейса с оборотом более $50 000 в месяц. С 2019 года мы интегрировали Solana Pay для 30+ проектов, накопив опыт в высоконагруженных системах.
Специфика Solana-платежей в том, что здесь нет нативного стандарта «платёжного запроса» уровня BIP-21 (Bitcoin) или EIP-681 (Ethereum). Зато есть Solana Pay — открытый протокол, разработанный Solana Labs, покрывающий большинство payment use cases: простые SOL-переводы, SPL-токены, транзакционные запросы с произвольной логикой на бэкенде.
Как работает Solana Pay?
Solana Pay использует URL-схему solana:, которая кодируется в QR-код. Кошелёк распознаёт URL и показывает пользователю детали: получателя, сумму, токен. Для интеграции достаточно сгенерировать такой URL на бэкенде и отобразить QR. Верификация происходит через поиск reference pubkey в блокчейне.
Solana Pay: Transfer Request
Простейший сценарий — запрос на перевод фиксированной суммы SOL или SPL-токена. URL-схема:
solana:<recipient>?amount=<value>&label=<label>&message=<message>&memo=<memo> Пример для оплаты 10 USDC:
solana:7Np41RSSZFkBmBUkVBntbRMzEnbZBqVkjFEf3BQnkGTi?amount=10&spl-token=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&label=MyShop&message=Order%20%2312345&memo=ORDER-12345 spl-token — mint address USDC на mainnet. memo — произвольная строка, записывается в транзакцию on-chain через Memo program, используется для reconciliation заказов.
Этот URL кодируется в QR-код. Кошельки с поддержкой Solana Pay (Phantom, Solflare, Backpack) автоматически разбирают его и показывают детали платежа.
Генерация QR на бэкенде
import { encodeURL, createQR, TransferRequestURLFields, } from "@solana/pay"; import { PublicKey } from "@solana/web3.js"; import BigNumber from "bignumber.js"; function createPaymentRequest(orderId: string, amountUSDC: number) { const recipient = new PublicKey("YOUR_MERCHANT_WALLET"); const splToken = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"); const urlFields: TransferRequestURLFields = { recipient, amount: new BigNumber(amountUSDC), splToken, label: "MyShop", message: `Order #${orderId}`, memo: orderId, }; const url = encodeURL(urlFields); const qrCode = createQR(url, 360, "transparent"); return { url: url.toString(), qrCode }; } Верификация платежа
После показа QR нужно подтвердить факт оплаты. Solana Pay предоставляет findReference — поиск транзакции по reference pubkey (уникальный ключ, добавляемый в каждый платёж):
import { findReference, validateTransfer } from "@solana/pay"; import { Connection, clusterApiUrl, Keypair } from "@solana/web3.js"; const connection = new Connection(clusterApiUrl("mainnet-beta"), "confirmed"); // reference — уникальный keypair для каждого заказа const reference = Keypair.generate().publicKey; // Polling каждые 2 секунды async function pollForPayment(reference: PublicKey, expectedAmount: BigNumber) { while (true) { try { const signatureInfo = await findReference(connection, reference, { finality: "confirmed", }); await validateTransfer(connection, signatureInfo.signature, { recipient: MERCHANT_WALLET, amount: expectedAmount, splToken: USDC_MINT, reference, }); return signatureInfo.signature; // платёж подтверждён } catch (e) { // FindReferenceError — транзакция ещё не появилась, ждём await new Promise((r) => setTimeout(r, 2000)); } } } validateTransfer проверяет: правильный recipient, правильная сумма, правильный токен. Если что-то не совпадает — бросает исключение. Это защита от попытки оплатить «похожей» транзакцией.
Почему Solana подходит для мерчантов?
Транзакции подтверждаются за 2–3 секунды, комиссия — около $0.00025. Это делает Solana идеальной для микроплатежей и высоконагруженных систем, таких как NFT-маркетплейсы или игровые платформы. При правильной настройке отказы практически исключены. По сравнению с традиционными банковскими шлюзами, Solana Pay интегрируется в 5 раз быстрее и экономит до 95% на комиссиях.
Какой уровень finality выбрать?
Solana не имеет probabilistic finality как Bitcoin. Здесь есть уровни:
| Уровень | Время | Описание | Когда использовать |
|---|---|---|---|
| processed | <0.5 сек | Транзакция включена в блок, возможен rollback | Не использовать для платежей |
| confirmed | 1-3 сек | Блок получил >66% голосов супербольшинства | Основной вариант для суммы до $10 000 |
| finalized | 10-15 сек | Блок в rooted части цепи, rollback невозможен | Для крупных сумм или юридических требований |
Для платежей используйте confirmed — это баланс скорости и безопасности.
Сравнение Solana Pay с другими решениями
| Критерий | Solana Pay | Tron USDT (TRC-20) | Stripe Crypto |
|---|---|---|---|
| Скорость подтверждения | 2-3 сек | ~1 мин | до 5 мин |
| Комиссия | ~$0.00025 | $0.5-1 | ~$0.75 + 1% |
| Поддержка токенов | Любые SPL | USDT/USDC | BTC/ETH/USDC |
| Сложность интеграции | Низкая (SDK) | Средняя (API) | Средняя (API) |
Процесс работы и сроки
Что входит в работу под ключ
- Проектирование архитектуры: выбор RPC (Helius, QuickNode), настройка мерчант-кошелька (hardware или multisig).
- Разработка API для генерации платёжных запросов с уникальным reference.
- Интеграция polling или WebSocket для мониторинга подтверждений.
- Сохранение signature транзакции в базе для аудита и reconciliation.
- Обработка timeout (рекомендуем 2 минуты, после — показывать ошибку).
- Документация и обучение команды.
Процесс работы
- Аналитика: изучаем бизнес-требования, выбираем токены и стек.
- Проектирование: схема платежного флоу, выбор RPC, настройка безопасности.
- Реализация: интеграция Solana Pay, генерация QR, верификация.
- Тестирование: симуляция платежей, проверка всех edge cases.
- Деплой: настройка production RPC, мониторинг, документация.
Сроки
Обычно интеграция занимает от 3 до 10 рабочих дней в зависимости от сложности (количество токенов, необходимость multisig, уровень безопасности). Оценим ваш проект бесплатно.
Как мы обеспечиваем безопасность?
Гарантируем, что все транзакции подписываются только после верификации через validateTransfer. Reference генерируется для каждого заказа, что исключает повторное использование. Мерчант-кошелёк изолирован от сервера — подписываются только транзакции подтверждённых платежей.
Расскажите о ваших задачах — наши инженеры с сертификатами Solana помогут настроить приём платежей за 1-2 недели. Свяжитесь с нами для бесплатной консультации. Закажите интеграцию Solana Pay уже сегодня.







