SolanaPay-KZ

Открытый набор инструментов, позволяющий интернет-магазину принимать оплату в стейблкоине USDC и в SOL на блокчейне Solana, показывая покупателю цену в тенге.

Деньги идут напрямую с кошелька покупателя на кошелёк продавца. Ни этот проект, ни его авторы не принимают, не хранят и не могут задержать ваши средства. Приватные ключи не запрашиваются, не создаются и не хранятся ни на одном шаге.

Если кто-то просит ввести приватный ключ или мнемоническую фразу от кошелька — это мошенник. Ни одна часть SolanaPay-KZ этого не делает и делать не может: для приёма платежей достаточно публичного адреса.

Что входит

Часть Для кого Состояние
Плагин WooCommerce магазин на WordPress готов
Сервер для Tilda магазин на Tilda готов, интеграция на модерации
Библиотека для разработчиков своя платформа готова

Как это работает

  1. Покупатель оформляет заказ. Магазин знает сумму в тенге.
  2. Сумма пересчитывается в токены по биржевому курсу и замораживается на 15 минут — чтобы цена не менялась, пока покупатель платит.
  3. Покупателю показывается QR-код. Он платит из своего кошелька.
  4. Магазин проверяет платёж прямо в блокчейне и подтверждает заказ.

Между вторым и третьим шагом никто не стоит: перевод идёт с кошелька на кошелёк. Наш код только считает сумму и убеждается, что деньги пришли.

Почему курс берётся именно так

Основной источник — биржевой курс пары USDT/KZT на Binance, умноженный на курс USDC к USDT. Это единственная прямая пара криптовалюты с тенге, которая существует.

Запасной источник — официальный курс доллара к тенге, умноженный на долларовую цену токена. Он даёт значение примерно на процент ниже биржевого, поэтому используется только когда биржа недоступна.

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

Округление всегда в пользу продавца

Сумма в токенах округляется вверх, до последнего знака, который существует у монеты. У USDC это шесть знаков, у SOL — девять. Покупатель платит не меньше, чем стоит заказ; разница не превышает одной миллионной доллара.

Что делать, если сумма не сошлась

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

То же и с недоступностью сети: если узел Solana не отвечает, заказ не меняет состояние. Молчание сети не является ответом «денег нет».

Исходный код

github.com/Tatancloud/solanapaykz — лицензия MIT. Код можно читать, использовать и изменять, в том числе в коммерческих проектах.