Как сделать платежи для сайта или магазина на базе WordPress & WooCommerce криптовалютой через блокчейн TON (Toncoin, The Open Network)?
Начнем сразу с того что получилось:
репо с кодом тут https://github.com/uptimizt/ton-gateway
тест продукт который можно купить через TON
Предпосылки
Вопрос интеграции оплаты через криптовалюту для сайта меня давно интересовал.
Тут на днях попробовал купить виртуальный номер NFT для привязки к Телеграм (это безопаснее и лучше работает если живешь за рубежом). Оказалось что платформа Fragment отлично работает и опыт оплаты через TON очень удобен и похож на Google Pay & Apple Pay.
Плюс Павел Дуров в последнее время говорил про то что его система планирует развиваться и делать оплату через блокчейн действительно свободной и децентрализованной как то было задумано в биткойне.
Ссылки по теме
Изучив эту тему решил выяснить как написать плагин для сайтов WordPress & магазинов WooCommerce так чтобы оплата была криптовалютой и через блокчейн.
Первые эксперименты в тупик
В первую очередь я попытался понять как это работает напрямую без точек входа.
Оказалось тут особо никак и в этом случае нужно поднимать свою ноду для блокчейна и писать механизмы мониторинга. Что было слишком долго для эксперимента.
Далее нашел мару точек входа микросервисов в которых можно сгенерировать токены и далее написать свою логику мониторинга. Это лучше но все равно надо писать генератор QR и веб хуки.
Затем подсказали готовый мерчант сервис для TON где все это было готово и надо было лишь написать плагин. Вот этот вариант и получилось реализовать.
Основные тезисы
- это типичный шлюз оплаты для WooCommerce
- интеграция в готовый мерчант сервис Telepay
- авторизация через Телеграм
- если приходит платеж – бот сообщает в Телеграм
Авто конвертер валюты в TON
Сразу же оказалось что в мерчант надо передавать сумму в TON. А на сайте рубли, или например тенге.
Благо сам сервис отдает хотя бы курс для USD.
Далее добавил опцию для конвертации валюты сайта в USD и затем в TON.
function get_ton_amount_for_current_currency($amount)
{
$ton_price_in_usd = $this->get_ton_usd_price();
$usd_price = $this->get_option('currency_price_for_usd');
return strval(round($amount * $usd_price / $ton_price_in_usd, 3));
}
Таким образом основной шлюз работает в валюте сайта, а если выбираем оплату через крипту то шлюза автоматически конвертирует сумму заказа в крипто монеты и создает счет на оплату по актуальному курсу.
Схема работы с точки зрения покупателя
- Покупатель ставит себе один из кошельков https://ton.org/en/wallets
- обычно это Tonkeeper или Tonhub для мобильных
- на декстопе обычно используется Wallet веб версия или расширение для браузера
- можно без кошелька работать через бота в Телеграм https://t.me/wallet
- Пополнить кошелек и закупить криптовалюту можно через карту если вы зарубежом или есть p2p в Телеграм боте и можно закупаться через любой банк
- Далее при оплате генерируется ссылка и QR код – оплатить можно по TON адресу или через мобильный кошелек и QR код
Преимущества для покупателя и продавца
- этот метод оплаты работает по всему миру и на любые суммы
- санкции тут не работают
- пополнить кошелек можно из любой точки мира и перевести в любую другую точку мира
Итого
Пока готова тестовая версия которую еще нужно будет обкатать.
Сразу уже виден ряд задач которые надо будет дописать в будущих версиях:
- апдейт статуса заказа через вебхук
- вероятно стоит перенести часть настроек из WooCommerce в WP Settings API и сделать шорткод или блок для генерации формы оплаты под какие то сборы
Если тема пойдет может быть стоит подумать над подключением альтернативных точек входа в блокчейн.