Модуль модуль оплаты через платежную систему Bitcoin

Jake Foley

Мой дом здесь!
Регистрация
14 Дек 2006
Сообщения
747
Реакции
395
Приветствую,

Ради интереса решил потратить вечер выходных и зарелизить рабочий модуль оплаты через платежную систему Bitcoin.

Simpla 2.1.5 - 2.3.7
1c6a3fd310ee67e1e86f0b57f6663320.png

Оффтоп:

  1. Первый раз писал такой сложный модуль заточенный для Simpla
  2. Первый раз писал модуль оплаты для Simpla
  3. Код запутанный и сложный, я много работал с криптовалютой и постарался предусмотреть все возможные подводные камни.
  4. И самое главное - код рабочий!
  5. Нужен curl на сервере
Чтобы не держать демон на сервере + всю базу блокчейна (привет всем кто в теме!) мы будем использовать бесплатный API от сервиса Для просмотра ссылки Войди или Зарегистрируйся.

Регистрируемся там на свой почтовый ящик, внимательно запоминаем и сохраняем все данные.

Войдя в кабинет нажимаем на кнопку Show API Keys

2d5afa8aed1a09c1a795825aab5b9543.png

И копируем API ключ для Bitcoin.

Скачиваем и заливаем файлы на сервер:

Заходим в админ.панель, создаем новый метод оплаты и заходим в его настройки.

dc75c039511b4cb43688731960c9f656.png

  1. Указываем свой API KEY
  2. Указываем валюту
  3. Корректировка цены - это насколько % мы будем изменять актуальный курс Bitcoin учитывая что он прыгает и изменяется каждую секунду
  4. Сколько времени мы ожидаем оплату - по сути это кеширование курса, соответственно цены товара, кошелька для оплаты и другой информации. Важно: кешируется все в папку /payment/BTCPay/temp - на моем сервере для папки temp необходимо было выставить владельца apache и права 777 для успешной работы
  5. Заполняем почту для уведомлений.
Пример кешированого файла: Имеет завание "номерзаказа.txt", когда человек нажимает на кнопку что произвел оплату он переименовывается для крон файла в "номерзаказа.check"

Пример файла "номерзаказа.txt"

74bcb31a0193738e8d03ff7b12b2df38.png


Файлы которые нужно изменить вручную:
  1. BTCPaycron.php - $work_directory = "payment/BTCPay"; - проверить ли верный путь
  2. payment/BTCPay/security.php - написать свой уникальный произвольный security ключ
После настройки вот как все выглядит:

5f5ce788a0cbc223ed95fab39f82f5e5.png


Как видим там есть таймер который мы установили в настройках модуля в админ.панели Simpla.

Я рекомендую устанавливать значение на 1200 (20 минут) - этого как раз достаточно.

После нажатия на кнопку "Я оплатил, проверить поступление средств"

2de6541942daafadc970291e33bebfca.png


Файл "номерзаказа.txt" переименовывается в "номерзаказа.check" и им уже будет заниматься крон файл - BTCPaycron.php


Крон файл берет из файла "номерзаказа.check" сумму к оплате и сверяет ее с блокчейном по апи.

Я указал что если сумма оплаты будет >= суммы оплаты - чтобы заказ засчитывался оплаченным.

Сделал имеено >= т.к. попросту человек из-за комиссии может отправить сумму больше чем нужно.

Сам крон 1 раз в Х минут (смотря как вы установите) будет в течение часа проверять поступление средств и дожидаться 2 подтверждений транзакции. Только тогда будет передан запрос в callback с информацией что заказ оплачен и покупателю также как и вам придет уведомление на почту.

У себя я установил крон так:

*/08 * * * * curl Для просмотра ссылки Войди или Зарегистрируйся >/dev/null 2>&1

Если в течение часа - подтверждения транзакции не будет - "номерзаказа.check" файл будет удален, а при заходе по ссылке на заказ у пользователя появится вновь форма оплаты с обновленной информацией для оплаты в зависимости от курса. Сам номер кошелька для оплаты будет таким же, изменится только сумма.

На заметку: у Blockio можно создавать на бесплатном аккаунте до 100 кошельков. Соответственно нужно будет время от времени удалять не используемые кошельки (старых заказов) и переносить балансы на основной кошелек в той же системе Block.io

Для новых версий > 2.1.5 - нужно просто сравнить callback.php файл с другой платежной системы и возможно подправить 2-3 строки.

UPD: Сравнил с callback.php из новой версии, вроде бы все одинаково, работать будет и на новых версиях

С меня все. Вроде бы ничего не забыл
smile.png


UPD2: Модуль был обновлен, вся информация на офф.форуме

===============
На вопросы работы данного модуля здесь я скорее всего отвечать не буду - только на Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование:
Назад
Сверху