Перейти к содержанию
Официальный форум поддержки Simpla

[2.1.5 - 2.3.7] Bitcoin платежный модуль


Рекомендуемые сообщения

Приветствую,

 

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

 

post-68-0-54970300-1477750374.png

 

Оффтоп:

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

Чтобы не держать демон на сервере + всю базу блокчейна (привет всем кто в теме!) мы будем использовать бесплатный API от сервиса Block.io.

 

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

 

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

post-68-0-37555700-1477750547_thumb.png

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

 

Скачиваем и заливаем файлы на сервер: BTCPay-Simpla.rar

 

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

 

post-68-0-26651800-1477750818_thumb.png

 

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

Пример кешированого файла: Имеет завание "номерзаказа.txt", когда человек нажимает на кнопку что произвел оплату он переименовывается для крон файла в "номерзаказа.check"

 

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

post-68-0-26117800-1477751383_thumb.png

 

Файлы которые нужно изменить вручную:

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

После настройки вот как все выглядит:

 

post-68-0-72972800-1477751667_thumb.png

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

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

 

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

post-68-0-49917400-1477751796_thumb.png

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

 

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

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

 

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

 

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

 

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

*/08 * * * * curl http://site.com/BTCPay_cron.php >/dev/null 2>&1

 

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

 

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

 

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

 

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

 

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

Изменено пользователем xavior
Ссылка на сообщение
Поделиться на другие сайты

Обновил платежный модуль: btcpayv2.rar

 

В настройках теперь указывается дополнительно:

  1. Кол-во подтверждений транзакции (ранее было 2) теперь можно указывать в настройках
  2. Время ожидания подтв.транзакции - также указывается в секундах. Для 2 подтв. я рекомендую устанавливать 3600 (1 час)

post-68-0-96217000-1477827957_thumb.png

 

Также были устранены мелкие баги при работе с модулем, доработан платежный интерфейс.

 

post-68-0-28615500-1477827997_thumb.png

 

 

P.S. Систему за 5-20 минут можно элементарно дописать под Dogecoin / Litecoin и любые альтернативные криптовалюты, если вдруг появится в этом необходимость - говорите, не стесняйтесь, сделаю  :)

Изменено пользователем xavior
Ссылка на сообщение
Поделиться на другие сайты

Делаю "как для себя" по этому мигом еще один апдейт:

 

  1. В случае если не возможно получить курс валюты в национальной валюте через bitpay.com - используется 2й API сервис cryptonator.com - на нем курс всегда выше рыночного, сделал ему доп. корректировку.
  2. Добавлена проверка если курс не доступен.
  3. Исправлена проверка если получение номера кошелька не доступно по API.

btcpayv3.rar

 

Ссылка на сообщение
Поделиться на другие сайты

Благодарю за совет, обдумаю, т.к. код не очень идеальный там внутри :)

 

Мне кажется что мой модуль оплаты бы отлично подошел для людей которые продают цифровые товары (в т.ч. и доработки для Simpla) но скорее всего просто никто не хочет связываться с Bitcoin.

Ссылка на сообщение
Поделиться на другие сайты

Мне кажется что мой модуль оплаты бы отлично подошел для людей которые продают цифровые товары (в т.ч. и доработки для Simpla) но скорее всего просто никто не хочет связываться с Bitcoin.

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

Начинают развиваться, просто вы возможно не знаете (имею ввиду скрывают)

 

Пример из Украины:

 

 

Еще один украинский нардеп в своей е-декларации указал биткоины в качестве принадлежащих ему активов. Им оказался председатель Интернет-партии Украины Дмитрий Голубов.

 

Как указано в поданной Голубовым декларации, он владеет 4376 биткоинами (75,969 млн гривен), которые были приобретены 22 ноября 2012 года.

 

или еще один кадр :)

 

 

В электронной декларации народного депутата Алексея Мушака от Блока Петра Порошенко среди прочих сбережений указано 465 биткоинов. По сегодняшнему курсу это около 8 млн гривен.
Ссылка на сообщение
Поделиться на другие сайты
  • 3 месяца спустя...

Спасибо за полезный модуль. После оплаты, когда производишь проверку вылезает - 

 

Warning: rename(payment/BTCPay/temp/62.txt,payment/BTCPay//temp/62.check): No such file or directory in /home/veloxped/public_html/payment/BTCPay/BTCPay.php on line 34

 

Не подскажите, что не так?

Ссылка на сообщение
Поделиться на другие сайты

И неправильно рассчитывается в биткоинах сумма заказа. Сумма заказа 100 дол, а в Биткоинах получается 1.04 биткоина, а должно быть 0.104.

Ссылка на сообщение
Поделиться на другие сайты

1. проверьте ли в папке создается файл 62.check, возможно на папке не проставлены права, укажите 777

 

2. Возможно из-за того, что у вас основная валюта USD и производится деление, для теста проверьте ли ошибка возникает если валюта RUB или UAH

Изменено пользователем xavior
Ссылка на сообщение
Поделиться на другие сайты

1. Файл присутствует. Права установлены 777. Меня смущает что в пути до файла два слеша //. Это может быть причиной? Пример:

Warning: rename(payment/BTCPay/temp/68.txt,payment/BTCPay//temp/68.check): No such file or directory in /home/veloxped/public_html/payment/BTCPay/BTCPay.php on line 34

 

2. По второму пункту, изменил на рубли, также отображается неверно. Вместо 0.1 биткоин, выставляется счет на 1 биткоин. 

 

Буду благодарен, если поможете решить эти вопросы.

Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...

Проблема встречается на всех версиях.

Здравствуйте, сделал по инструкции.

Изменено пользователем GodlikeAnon
Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте, сделал по инструкции.

 

Можете посмотреть еще ли что-то пишется в логах сервера ?

 

+ Проверить ли curl включен

 

Насколько я вижу, в вашем случае не считается сумма к оплате в BTC исходя из того, что не получается "скачать" курс и соответственно произвести расчет

 

То же самое - QR код не верный, не получается достать номер кошелька для оплаты.

 

= Проблема явно в сURL библиотеке если вы все по инструкции сделали

Изменено пользователем xavior
Ссылка на сообщение
Поделиться на другие сайты

Можете посмотреть еще ли что-то пишется в логах сервера ?

 

+ Проверить ли curl включен

 

Насколько я вижу, в вашем случае не считается сумма к оплате в BTC исходя из того, что не получается "скачать" курс и соответственно произвести расчет

 

То же самое - QR код не верный, не получается достать номер кошелька для оплаты.

 

= Проблема явно в сURL библиотеке если вы все по инструкции сделали

Заранее Спасибо!!

И извиняюсь, новичёк в этой сфере. Где должны храниться логи?

cURL Вроде работает, т.к. пробовал его выключить и были совсем другого рода ошибки.

Как вы и сказали, проблема в получении курса валюты.

Изменено пользователем GodlikeAnon
Ссылка на сообщение
Поделиться на другие сайты

Заранее Спасибо!!

И извиняюсь, новичёк в этой сфере. Где должны храниться логи?

cURL Вроде работает, т.к. пробовал его выключить и были совсем другого рода ошибки.

Как вы и сказали, проблема в получении курса валюты.

 

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

 

Насчет cURL - не скажу, так как скорее всего не пользовался Вашим локальным сервером.

 

Попробуйте тестировать непосредственно на хостинге. Там все должно быть норм.

 

У меня сходу все норм было на IspManager хостинге (только опять таки curl включал) и на локальном сервере OpenServer (https://ospanel.io)

Ссылка на сообщение
Поделиться на другие сайты

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

 

Насчет cURL - не скажу, так как скорее всего не пользовался Вашим локальным сервером.

 

Попробуйте тестировать непосредственно на хостинге. Там все должно быть норм.

 

У меня сходу все норм было на IspManager хостинге (только опять таки curl включал) и на локальном сервере OpenServer (https://ospanel.io)

 

Понял, Спасибо! :)

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

А с правовой точки зрения, в РФ, можно ли принимать платежи в Биткоинах? Есть ли нюансы какие для работы возможно с бухгалтерской точки зрения ? 

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

сделал по инструкции, вроде все работает но картинка QR-код чет сильно маленькая получается, а на мобильных устройствах вообще пропадает.



почему так? как победить?

С размером картинки на десктопе проблему решил правкой файла BTCPay/page.php

 

А вот на мобильном картинка QR-кода так и не появилась.

Изменено пользователем xikarx
Ссылка на сообщение
Поделиться на другие сайты
  • 2 года спустя...

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...