bitcoin_pay_in_siteВеличезна кількість статей про bitcoin і Bitcoin описують переваги технології перед звичними нам грошовими системами, розповідають про перспективи розвитку, про зростання курсу в недалекому майбутньому, про новий еволюційний виток в розвитку грошей і зовсім нові економічні відносини, оспівують ідейну складову біткоїн. Але, читаючи всі ці статті, складається враження, що біткоїн десь там, летить техногенним експресом повз … І до тих пір, поки біткоїном не можна розрахуватися за буханець хліба і пів літри, молока, біткоїн-майбутнє не настане для більшості.

Пропоную зачепитися за bitcoin-експрес! Приймайте біткоїни до обміну, на своєму сайті за товари та послуги. Подальша інформація стосується читачів хоч трохи знайомих з програмуванням або тих, хто має велике бажання долучити свій сайт до прогресу.

Отже, для початку, що являє собою оплата у біткоїнах на сайті? При оплаті біткоїнами покупець проходить три простих і швидких кроки:
1. Вибір товару, введення необхідної продавцю інформації.

001

2. Згода придбати товар, шляхом натискання кнопки “Сплатити” або “Enter”. У цей момент створюється транзакція. Генерується qr-код унікального рахунка, та ін. Покупець може здійснити оплату.

002

3. Оплата. Доставка товару за адресою.

003a

На цьому все. Ніяких реєстрацій, переходів на сторінку платіжної системи, верифікації, дозволів і блокувань від банку, комісій в відсотках і інших неприємних непотрібностей немає.

Тепер більш детально про те, як же приєднати таку форму оплати до свого сайту.
Саму можливість оплати біткоїнами та її автоматизацію надає сервіс Blokchain.info, безкоштовно, без реєстрації продавця і рахунки на цьому сервісі, без верифікації. Ви просто можете отримувати платежі за товар на ваш мобільний біткойн-рахунок! Саме API Blokchain.info ми і будемо використовувати.
Схема прийому платежів в біткоїн проста, відносно. Для цього Вам необхідно як мінімум два php-файли (#1, #2), папка (наприклад qremg) і підключений модуль генерації qr-коду (phpqrcode):

1. php-файл #1, в ньому буде розташовуватися форма прийому платежів.
До цього файлу необхідно підключити модуль генерації qr-коду.
Для початку необхідно:

a. Завантажити архів з папкою модуля: PHP QR CODE
б. Розархівувати і помістити папку phpqrcode в корінь вашого сайту.
в. Підключити модуль до php-файлу #1: include “../phpqrcode/qrlib.php”;

Наступний блок коду в php-файлі #1 це безпосередньо API c Blokchain.info (все що нижче можна просто скопіювати, видаливши коментарі і змінивши параметри на ваші):

$secret = “87dgf654fg”; // Це секретний код, який передає ваш сайт на сервер blokchain.info випадкове або невипадкове число, який не будь хеш транзакції і часу її створення, наприклад обрізаний до невпізнання
$my_address = “1M9FJtkCSG2268Rn5ZJbHUJTnesqYY9L4G”; // В цей параметр ви вводите свій номер біткойн-рахунку, на який отримаєте гроші. Можна підключити функцію, яка у випадковому порядку буде вибирати один з декількох ваших рахунків, або навпаки, спеціально призначений для даного товару рахунок.
$ my_callback_url = “http: //…./файл#2.php? invoice_id =”. $id_transaction. “& secret =”. $secret; // У цьому параметрі ви вказуєте адресу файла#2, а також привласнюєте змінним номер створеної транзакції $id_transaction і секретний код $secret
$ root_url = ‘https://blockchain.info/api/receive’; // Адреса сервера blockchain.info на який піде запит
$parameters = “method = create & address =”. $my_address. “& callback =”. urlencode ($my_callback_url); // Формуєте рядок запиту на сервер blokchain.info
$response = file_get_contents ($root_url. “?”. $parameters); // Відправляєте і отримуєте відповідь від blokchain.info, дані відповіді записуються в параметр $response в json форматі
Два наступні рядки обробляють параметр $response і заносять отримані дані в масив $datcallback
$object = json_decode ($response);
foreach ($object as $k => $v) $datcallback [] = $v;

Отриманий масив $datcallback містить наступну практично важливу інформацію:
$datcallback [0] – callback_url; // Адреса php-файла#2
$datcallback [1] – input_address; // Унікальний біткойн-рахунок на який покупець оплачує суму
$datcallback [2] – destination // номер вашого біткойн-рахунку, на який отримаєте гроші
$datcallback [3] – fee_percent = 0 // комісія за угоду, яка прискорить процес підтвердження факту оплати біткойнов. Вона може дорівнювати 0, в цьому випадку, blokchain.info, як воно стверджує, само оплачує мінімальну комісію для підтвердження угоди.
А також хеш та ін.
Успішне формування масиву $datcallback означає, що ви можете генерувати qr-код для оплати покупцем.

Наступний блок коду в php-файлі #1 звертається до відповідної функції підключеного модуля генерації qr-кода, і створює зображення з qr-кодом:
QRcode :: png (“bitcoin:”. $Datcallback [1]. “? Amount =”. $Bitmony, “./qremg /”.$img_qr_code.”.png”, “L”, 3, 4, false, $backColor, $foreColor);
де,
$datcallback [1] – input_address; – Унікальний біткойн-рахунок, на який покупець оплачує суму
$bitmony – сума за товар в btc;
“./qremg/”.$img_qr_code.”.png” – шлях до тієї самої папці (наприклад qremg), яка необхідна для зберігання зображень і назва файлу зображення $img_qr_code.png У цій папці будуть збиратися всі зображення з qr-кодом транзакцій .
“L”, 3, 4, false, $backColor, $foreColor – параметри зображення: розмір, квадратики, кольори фону і квадратиків, коротше параметри стилю.

При виконанні останнього програмного коду, зображення згенерованого qr-коду зберігається в папці qremg і готово до виклику у відповідній частині сторінки сайту, або (і) відсилання на електронну пошту покупця.
Також, ви можете, або навіть зобов’язані, зберегти інформацію про створену транзакцію в звітний файл, зі статусом не оплачена. Коли покупець сплатить рахунок, необхідно буде знайти транзакцію, визначити який саме товар оплатив покупець і т.п. чисто технічні питання продавця.

2. php-файл#2 – це файл-обробник відповіді від сервера blokchain.info Тільки в разі успішної оплати покупцем рахунка, сервер blokchain.info викликає php-файл#2 і повертає йому параметри id транзакції ($id_transaction), секретний ключ, або просто код ($secret) та інші параметри.
Php-файл отримує від сервера blokchain.info інформацію, обробляє її необхідним продавцеві чином, фіксує успішність транзакції записом у звітному файлі або базі даних, відправляє повідомлення на адресу електронної пошти покупця, самого продавця і взагалі робить все, що душа забажає, на розсуд продавця.
Представлений нижче код, показує, як приймати інформацію від сервера blokchain.info:

$input_transaction_hash = $_GET [“input_transaction_hash”];
$shared = $_GET [“shared”];
$address = $_GET [“address”];
$destination_address = $_GET [“destination_address”]; // Aадреса продавця на який повинна прийти оплата.
$input_address = $_GET [“input_address”]; // Згенерована унікальна адреса, на яку покупець зробив оплату.
$test = $_GET [“test”];
$anonymous = $_GET [“anonymous”];
$confirmations = $_GET [“confirmations”]; // Число підтверджень цієї угоди
$value = $_GET [“value”]; // Сума оплати в Satoshi.
$transaction_hash = $_GET [“transaction_hash”]; // Хеш транзакції.
$invoice_id = $_GET [“invoice_id”]; // $Id_transaction – номер транзакції у вашій системі.
$secret = $_GET [“secret”]; // Ваш секретний код.

Саме ці параметри, далі, беруть участь у перевірках, обробці та запису в звітний файл на вашому сайті.

Ось і все. Посилання на оригінал API blokchain.info

Зверніть увагу на схему оплати.
1. Покупець платить не на ваш рахунок, а на рахунок, створений blokchain.info спеціально для вашої транзакції, цей рахунок унікальний і неповторний.

004

2. Сплачена сума на ваш рахунок приходить з 2, 3 різних рахунків, серед яких і той, на який покупець зробив оплату, але сума з цього унікального рахунку зарахована вам, не дорівнює сумі яку сплатив покупець на цей унікальний рахунок. В цілому, з 2, 3 рахунків, ви отримуєте все що оплатив покупець до Satoshi, за винятком комісії в 10, 20 тис. Satoshi. Тобто перерахування оплаченої покупцем суми, проходить на ваш рахунок через … кілька рахунків десь у надрах blokchain.info.
Мінімальна сума, яку можна оплатити за допомогою API blokchain.info становить 50000 Satoshi (що приблизно 0,20 $) – цілком собі мікро-платіж, плюс комісія.

Якщо у вас виникли які-небудь питання по темі, запитуйте в коментарях…