Перейти к содержимому


Фото
- - - - -

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

платежный модуль оплата bitcoin

  • Please log in to reply
19 replies to this topic

#1 xavior

xavior
  • Фрилансер
  • 290 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:1.x, 2.x
  • Откуда:Bombay

Posted 29.10.2016 - 17:46

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

 

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

 

Attached File  bitcoin-225080_640.png   10,03К   72 downloads

 

Оффтоп:

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

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

 

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

 

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

Attached File  Screenshot_3.png   19,48К   126 downloads

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

 

Скачиваем и заливаем файлы на сервер: Attached File  BTCPay-Simpla.rar   9,52К   84 downloads

 

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

 

Attached File  Screenshot_4.png   22,81К   154 downloads

 

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

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

 

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

Attached File  Screenshot_5.png   8,88К   169 downloads

 

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

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

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

 

Attached File  Screenshot_6.png   27,54К   119 downloads

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

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

 

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

Attached File  Screenshot_7.png   26,49К   97 downloads

Файл "номерзаказа.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 из новой версии, вроде бы все одинаково, работать будет и на новых версиях

 

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


Edited by xavior, 30.10.2016 - 01:32.


#2 xavior

xavior
  • Фрилансер
  • 290 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:1.x, 2.x
  • Откуда:Bombay

Posted 30.10.2016 - 14:49

Обновил платежный модуль: Attached File  btcpayv2.rar   10К   22 downloads

 

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

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

Attached File  Screenshot_1.png   24,88К   70 downloads

 

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

 

Attached File  Screenshot_2.png   28,63К   71 downloads

 

 

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


Edited by xavior, 30.10.2016 - 15:53.


#3 xavior

xavior
  • Фрилансер
  • 290 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:1.x, 2.x
  • Откуда:Bombay

Posted 30.10.2016 - 16:48

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

 

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

Attached File  btcpayv3.rar   10,45К   56 downloads

 



#4 osben

osben
  • Фрилансер
  • 802 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:UA, RU

Posted 01.11.2016 - 05:30

рекомендую выложить на github еще 



#5 xavior

xavior
  • Фрилансер
  • 290 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:1.x, 2.x
  • Откуда:Bombay

Posted 01.11.2016 - 13:05

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

 

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



#6 weltrade

weltrade
  • Пользователь
  • 13 сообщений
  • Откуда:Минск

Posted 04.11.2016 - 06:32

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

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



#7 xavior

xavior
  • Фрилансер
  • 290 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:1.x, 2.x
  • Откуда:Bombay

Posted 04.11.2016 - 12:34

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

 

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

 

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

 

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

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

 

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

 

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


#8 monex

monex
  • Пользователь
  • 3 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Baku

Posted 07.02.2017 - 16:59

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

 

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

 

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



#9 monex

monex
  • Пользователь
  • 3 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Baku

Posted 07.02.2017 - 17:16

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



#10 xavior

xavior
  • Фрилансер
  • 290 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:1.x, 2.x
  • Откуда:Bombay

Posted 08.02.2017 - 00:05

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

 

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


Edited by xavior, 08.02.2017 - 00:06.


#11 monex

monex
  • Пользователь
  • 3 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Baku

Posted 08.02.2017 - 13:07

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 биткоин. 

 

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



#12 GodlikeAnon

GodlikeAnon
  • Пользователь
  • 4 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Беларусь

Posted 23.04.2017 - 11:44

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



#13 GodlikeAnon

GodlikeAnon
  • Пользователь
  • 4 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Беларусь

Posted 23.04.2017 - 14:06

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

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


Edited by GodlikeAnon, 23.04.2017 - 14:08.


#14 xavior

xavior
  • Фрилансер
  • 290 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:1.x, 2.x
  • Откуда:Bombay

Posted 23.04.2017 - 14:14

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

 

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

 

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

 

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

 

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

 

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


Edited by xavior, 23.04.2017 - 14:14.


#15 GodlikeAnon

GodlikeAnon
  • Пользователь
  • 4 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Беларусь

Posted 23.04.2017 - 14:23

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

 

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

 

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

 

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

 

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

2ecbe80fd8ac.png917a33445362.png

Заранее Спасибо!!
И извиняюсь, новичёк в этой сфере. Где должны храниться логи?
cURL Вроде работает, т.к. пробовал его выключить и были совсем другого рода ошибки.
Как вы и сказали, проблема в получении курса валюты.


Edited by GodlikeAnon, 23.04.2017 - 14:24.


#16 xavior

xavior
  • Фрилансер
  • 290 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:1.x, 2.x
  • Откуда:Bombay

Posted 23.04.2017 - 14:27

2ecbe80fd8ac.png917a33445362.png

Заранее Спасибо!!
И извиняюсь, новичёк в этой сфере. Где должны храниться логи?
cURL Вроде работает, т.к. пробовал его выключить и были совсем другого рода ошибки.
Как вы и сказали, проблема в получении курса валюты.

 

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

 

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

 

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

 

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



#17 GodlikeAnon

GodlikeAnon
  • Пользователь
  • 4 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Беларусь

Posted 23.04.2017 - 14:30

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

 

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

 

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

 

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

 

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



#18 Just074

Just074
  • Пользователь
  • 38 сообщений
  • Программирование, Верстка, Заказчик

Posted 06.06.2017 - 19:39

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



#19 artbe

artbe
  • Пользователь
  • 196 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Posted 07.06.2017 - 07:50

Возможно ли реализация модуля под Litecoin / ETH и другую крипту?



#20 xikarx

xikarx
  • Пользователь
  • 33 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Омск

Posted 12.07.2017 - 08:38

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

c864b3808660.png

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

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

 

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


Edited by xikarx, 12.07.2017 - 09:06.






0 user(s) are reading this topic

0 пользователей, 0 гостей, 0 скрытых