Организация приема Bitcoin в качестве оплаты товаров в интернет магазине

С учетом достаточно быстрого роста популярности такой электронной криптовалюты, как биткоины, я стал все чаще получать на почту вопросы о том, а как же, собственно, реализовать прием Bitcoin на своем сайте, интернет магазине. Эти вопросы и побудили меня написать эту статью.

Для начала, сразу оговорюсь, что не стоит воспринимать статью как пошаговое руководство к действию. Я постараюсь наиболее подробно изложить все аспекты реализации приема данной валюты на WEB ресурсе. Но нужно понимать, что помимо алгоритмов, представленных в этой статье, существует достаточно большое количество других возможных реализаций данного вопроса, которые, при желании, могут быть описаны в последующих статьях.

Итак, допустим у вас есть интернет магазин, который успешно функционирует. Вы реализовали возможность оплаты товаров с помощью таких систем, как Webmoney, Яндекс деньги, пластиковая карта и т.д., и в последнее время, всерьез задумались о возможности принимать в качестве оплаты за ваши товары или услуги биткоины. Для начала разберемся как же работает простейший алгоритм практически любого интернет магазина:

  1. Пользователь регистрируется в интернет магазине.

  2. Выбирает необходимый товар или услугу.

  3. Выбирает тип оплаты.

  4. В соответствие с выбранным типом оплаты, система передает данные либо на специальный процессинговый центр, либо выдает все необходимые реквизиты для оплаты товара. Параллельно с этим в системе создается запись о заказе пользователя, с ожиданием поступления от него денег.

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

Вот собственно и все. При интеграции приема BTC в интернет магазине данный алгоритм будет практически неизменен. Это значит, что никаких сложных нововведений, усложняющих работу интернет магазина и системы приема платежей, не будет.

Для того, чтобы наглядно показать схему приемов BTC с самых азов, я специально написал несколько модулей, которые эмулируют работу клиентской части интернет магазина (корзины), серверной части (админки) и обрабатывающих скриптов.

Для начала представим, что у нас есть интернет магазин, с фиксированными ценами в рублях, к примеру. Само собой разумеется, что если вы будете вводить возможность оплаты биткоинами, то вам нужно каким-либо образом реализовать конвертацию цены из рублей в BTC. Для решения этой задачи я бы порекомендовал воспользоваться курсом биржи mtgox.com, для конвертации рублевой цены в биткоины.

Итак, допустим, что эта проблема уже решена, и что вы, например, сделали иконку «Оплатить в BTC», при нажатии на которую цена автоматически конвертируется в биткоины. Теперь представим простой интерфейс корзины, который видит пользователь, оформляющий заказ:

Здесь мы видим, что в качестве товара был выбран планшет на андройде в количестве 1 штука и ценой в 10 BTC. После того, как заказ сформирован, и пользователь готов перейти к оплате, он нажимает «Перейти к оплате».

Система предлагает пользователю перевести необходимую сумму на указанный кошелек. Клиент оплачивает, после чего нажимает кнопку «Оплатил». Дальше система выдает следующую страницу:

Пользователь видит, что заказ принят в обработку и виден операторам интернет магазина. Предоставлен номер заказа для отслеживания прихода денежных средств на кошелек. Это нужно для того, чтобы пользователь мог наглядно увидеть баланс кошелька и количество подтвержденных транзакций.

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

— id клиента (это всего лишь представление связи 2-х таблиц, и в данном примере не является функциональной единицей. Часто вместо номера клиента указывается его ФИО или ссылка на его профиль, для удобства работы с системой.)

Как только деньги приходят на определенный адрес, в графе «поступило на счет» появляется переведенная сумма + графа начинает светиться зеленым цветом:

Для внедрения приема BTC, необходимо установить и настроить демон bitcoind на сервере. Следует иметь ввиду, что если сайт расположен на виртуальном хостинге, внедрить оплату таким образом скорее всего не получится, т.к. редкие shared хостинги разрешают устанавливать программы на своих серверах. Установка и настройка bitcoind подробно расписана здесь.

Когда пользователь регистрируется в интернет магазине, для него создается, так называемый «аккаунт» в bitcoind. Account – это некий кошелек, который может содержать в себе неограниченное количество уникальных адресов. Данная процедура реализуется с помощью метода new_address. Если к методу указан параметр, то его имя и будет равняться имени нового акаунта. Например, при регистрации пользователя выполним следующий код:

После оформления заказа в пользовательском акаунте создается новый адрес, который привязывается к определенному заказу. Во время оформления заказа в базу данных, в таблицу «orders», заносятся данные о новом заказе.

После этого в административной панели появляется новая запись, с информацией о поступившем заказе. Нам необходимо реализовать проверку поступлений на выданный клиенту адрес. Для этого можно воспользоваться функцией get_recieved_address(), которая выводит все принятые транзакции на указанный в качестве параметра адрес. Например:

И на клиентскую, и на серверную часть можно установить проверку на количество подтверждений определенной транзакции. Для этого можно воспользоваться функцией listreceivedbyaddress, которая выдает информацию относительно принятых средств на указанном в качестве аргумента адресе. Нас интересует параметр confirmations, который и нужно выводить. Вот пример:

$receive = $btc-> listreceivedbyaddress(‘адрес’);

var_dump($recieve);

[

{

«address» : «1DVAcPkjru9nzfEqKYhubNDjdXBHjHqbLo»,

«account» : «»,

«amount» : 0.05500000,

«confirmations» : 266

},

{

«address» : «1Ctg4arv6EYmLHdqqTVtXekFi6sJAr9Edm»,

«account» : «»,

«amount» : 0.10000000,

«confirmations» : 311

}

]

По большому счету, это весь функционал. Обертка – дело каждого программиста. Но хочу сказать, что пользуясь всеми прелестями API bitcoind, можно реализовать гораздо более продуманную и защищенную систему.

Все материалы с данного сайта Вы можете свободно копировать с указанием на источник —
bits.media

Любые пожелания, предложения, материалы и т.п. Вы можете присылать на адрес
admin@bits.media

Адрес для добровольных пожертвований на развитие —
1BQ9qza7fn9snSCyJQB3ZcN46biBtkt4ee (
QR)