Плагин оплаты криптовалютой TON для магазина WooCommerce

Как сделать платежи для сайта или магазина на базе WordPress & WooCommerce криптовалютой через блокчейн TON (Toncoin, The Open Network)?

Начнем сразу с того что получилось:

репо с кодом тут https://github.com/uptimizt/ton-gateway

тест продукт который можно купить через TON

TON Gateway

Предпосылки

Вопрос интеграции оплаты через криптовалюту для сайта меня давно интересовал.

Тут на днях попробовал купить виртуальный номер NFT для привязки к Телеграм (это безопаснее и лучше работает если живешь за рубежом). Оказалось что платформа Fragment отлично работает и опыт оплаты через TON очень удобен и похож на Google Pay & Apple Pay.

Плюс Павел Дуров в последнее время говорил про то что его система планирует развиваться и делать оплату через блокчейн действительно свободной и децентрализованной как то было задумано в биткойне.

Ссылки по теме

  • Как купить анонимный номер для Telegram и использовать его без сим-карты?
  • Павел Дуров анонсировал новые инструменты децентрализации

Изучив эту тему решил выяснить как написать плагин для сайтов WordPress & магазинов WooCommerce так чтобы оплата была криптовалютой и через блокчейн.

Первые эксперименты в тупик

В первую очередь я попытался понять как это работает напрямую без точек входа.

Оказалось тут особо никак и в этом случае нужно поднимать свою ноду для блокчейна и писать механизмы мониторинга. Что было слишком долго для эксперимента.

Далее нашел мару точек входа микросервисов в которых можно сгенерировать токены и далее написать свою логику мониторинга. Это лучше но все равно надо писать генератор QR и веб хуки.

Затем подсказали готовый мерчант сервис для TON где все это было готово и надо было лишь написать плагин. Вот этот вариант и получилось реализовать.

Основные тезисы

  • это типичный шлюз оплаты для WooCommerce
  • интеграция в готовый мерчант сервис Telepay
  • авторизация через Телеграм
  • если приходит платеж — бот сообщает в Телеграм
Настройки типичные для шлюзов оплаты WooCommerce

Авто конвертер валюты в 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 и сделать шорткод или блок для генерации формы оплаты под какие то сборы

Если тема пойдет может быть стоит подумать над подключением альтернативных точек входа в блокчейн.

Источник: https://wpcraft.ru/blog/ton-blockchain-plugin-wordpress-woocommerce/