З урахуванням досить швидкого зростання популярності такої електронної криптовалюта, як біткоіни, я став все частіше отримувати на пошту питання про те, а як же, власне, реалізувати прийом Bitcoin на своєму сайті, інтернет магазині. Ці питання і спонукали мене написати цю статтю.
Отже, припустимо у вас є інтернет магазин, який успішно функціонує. Ви реалізували можливість оплати товарів за допомогою таких систем, як Webmoney, Яндекс гроші, пластикова карта і т.д. і останнім часом, всерйоз задумалися про можливість приймати в якості оплати за ваші товари або послуги біткоіни. Для початку розберемося як же працює найпростіший алгоритм практично будь-якого інтернет магазину:
- Користувач реєструється в інтернет магазині.
Ось власне і все. При інтеграції прийому BTC в інтернет магазині даний алгоритм буде практично незмінний. Це означає, що ніяких складних нововведень, які ускладнюють роботу інтернет магазину і системи прийому платежів, не буде.
Для того, щоб наочно показати схему прийомів BTC з самих азів, я спеціально написав кілька модулів, які емулюють роботу клієнтської частини інтернет магазину (кошика), серверної частини (адмінки) і обробних скриптів.
Для початку представимо, що у нас є інтернет магазин, з фіксованими цінами в рублях, наприклад. Само собою зрозуміло, що якщо ви будете вводити можливість оплати біткоіни, то вам потрібно якимось чином реалізувати конвертацію ціни з рублів в BTC. Для вирішення цього завдання я б порекомендував скористатися курсом біржі mtgox.com. для конвертації рубльової ціни в біткоіни.
Отже, припустимо, що ця проблема вже вирішена, і що ви, наприклад, зробили іконку «Оплатити в BTC», при натисканні на яку ціна автоматично конвертується в біткоіни. Тепер уявімо простий інтерфейс кошика, який бачить користувач, який оформляє замовлення:
Тут ми бачимо, що в якості товару був обраний планшет на Андройде в кількості 1 штука і ціною в 10 BTC. Після того, як замовлення сформовано, і користувач готовий перейти до оплати, він натискає «Перейти до оплати».
Для кожного замовлення система генерує новий унікальний гаманець, призначений для прийому платежу для конкретного замовлення і тільки.
Система пропонує користувачеві перевести необхідну суму на вказаний гаманець. Клієнт оплачує, після чого натискає кнопку «Сплатив». Далі система видає наступну сторінку:
Користувач бачить, що замовлення прийняте в обробку і видно операторам інтернет магазину. Надано номер замовлення для відстеження приходу грошових коштів на гаманець. Це потрібно для того, щоб користувач міг наочно побачити баланс гаманця і кількість підтверджених транзакцій.
Після того, як користувач сформував замовлення, в базі даних інтернет магазину з'явився запис про нове замовлення. Оператор може побачити їй на спеціальній сторінці. Виглядають повідомлення звичайно в такий спосіб:
Даний інтерфейс надає найнеобхіднішу інформацію про замовлення, таку як:
- дата і час формування замовлення;
- сума для оплати;
- скільки надійшло на рахунок;
Після чого оператор може порівняти інформацію, що надійшла суму з сумою оплати, почати підготовку замовлення, зв'язатися з клієнтом.
Тепер розглянемо роботу цієї системи з точки зору програмування.
Для впровадження прийому BTC, необхідно встановити і налаштувати демон bitcoind на сервері. Слід мати на увазі, що якщо сайт розташований на віртуальному хостингу, впровадити оплату таким чином швидше за все не вийде, тому що рідкісні shared хостинги дозволяють встановлювати програми на своїх серверах. Установка і настройка bitcoind докладно розписана тут.
Після установки і настройки демона, необхідно скористатися класом, спеціально написаним для роботи з bitcoind з PHP. Клас можна безкоштовно завантажити тут.
Тепер у вас встановлено і налаштовано оточення для організації прийому BTC.
Алгоритм реалізований наступним чином.
$ Account = $ btc-> new_address ( "user"); // Отримаємо новий акаунт для користувача $ user з його ж ім'ям.
Відповідно, ці докази можна виводити в призначену для користувача або адміністративну панель для наочності.
За великим рахунком, це весь функціонал. Обгортка - справа кожного програміста. Але хочу сказати, що користуючись усіма принадами API bitcoind, можна реалізувати набагато більш продуману і захищену систему.