Статьи

Як приймати платежі біткоіни (Bitcoin) на своєму сайті

  1. Як приймати платежі біткоіни (Bitcoin) на своєму сайті Пірінгова платіжна система, яка використовує...
  2. Blockchain.info's API V2
  3. Як отримати ключ API?
  4. Отримання розширеного публічного ключа (Extended Public Key)
  5. Створення нових адрес для ваших клієнтів
  6. Реалізація зворотних дзвінків Blockchain.info
  7. Відповідь на зворотній дзвінок
  8. Перевірка проміжків між адресами
  9. Безпека
  10. Термін дії адрес
  11. висновки
  12. Як приймати платежі біткоіни (Bitcoin) на своєму сайті
  13. Вступ
  14. Blockchain.info's API V2
  15. Як отримати ключ API?
  16. Отримання розширеного публічного ключа (Extended Public Key)
  17. Створення нових адрес для ваших клієнтів
  18. Реалізація зворотних дзвінків Blockchain.info
  19. Відповідь на зворотній дзвінок
  20. Перевірка проміжків між адресами
  21. Безпека
  22. Термін дії адрес
  23. висновки
  24. Як приймати платежі біткоіни (Bitcoin) на своєму сайті
  25. Вступ
  26. Blockchain.info's API V2
  27. Як отримати ключ API?
  28. Отримання розширеного публічного ключа (Extended Public Key)
  29. Створення нових адрес для ваших клієнтів
  30. Реалізація зворотних дзвінків Blockchain.info
  31. Відповідь на зворотній дзвінок
  32. Перевірка проміжків між адресами
  33. Безпека
  34. Термін дії адрес
  35. висновки

Як приймати платежі біткоіни (Bitcoin) на своєму сайті

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

1. Введення

2. Як отримати ключ API?

3. Створення нових адрес для ваших клієнтів

4. Безпека

5. Висновки

Вступ

Біткоіни - досить привабливий метод оплати для онлайн-підприємців, в основному через те, що комісія при використанні цього методу вкрай незначна в порівнянні з PayPal або кредитними картами. Відповідно, це дозволяє отримати більш високий прибуток і пропонувати послуги клієнтам у всьому світі за доступними цінами. Більш того, біткоіни формально не обкладаються податком, оскільки не уявляють собою грошову форму, що видається урядом. Також серед переваг системи «біткоіни» можна виділити відсутність необхідності звернення до посередників.

У цій статті ми спробуємо додати біткоіни в якості способу оплати на сайті. Для прийняття платежів ми будемо використовувати Blockchain.info Receive Payments API V2, так як він простий, безпечний і може бути реалізований менш ніж за 10 хвилин.

Blockchain.info's API V2

Paychanges API V2 Blockchain.info є найпростішим і швидким способом почати приймати платежі біткоіни від кого завгодно в будь-якій точці світу за допомогою простого HTTP-GET-запиту. Варто зазначити, що одним з основних перешкод, пов'язаних з прийняттям платежів біткойнов, є необхідність створення унікального адреси біткойнов для кожного нового користувача або рахунку. Ці згенеровані адреси повинні бути під контролем і безпечно зберігатися. API прийому платежів відповідає за створення і моніторинг біткоіни-адрес. При отриманні платежів API дозволяє повідомити сервер за допомогою простої процедури зворотного виклику.

Як отримати ключ API?

Щоб використовувати API Blockchain.info, ви повинні заповнити форму заявки за адресою:

https://api.blockchain.info/v2/apikey/request/

Зверніть увагу, що цей ключ API призначений тільки для отримання платежів. Існує стандартний API гаманця, який доступний в Python, Java, .NET (C #), Ruby, PHP і Node і може використовуватися для надсилання та отримання платежів. Однак він відрізняється від Receive Payments V2 API тим, що не підходить для генерації різних адрес для різних користувачів.

На малюнку нижче показана форма заявки на отримання Receive Payments V2 API. Вам потрібно буде ввести своє ім'я, адресу електронної пошти, URL-адресу сайту, на якому ви будете впроваджувати API, а також опис товарів, які ви продаєте, або послуг, які пропонуєте на своєму веб-сайті. У більшості випадків заявка розглядається протягом 2-3 робочих днів.

Малюнок 1. Форма заявки на отримання Receive Payments V2 API

Отримання розширеного публічного ключа (Extended Public Key)

Щоб мати можливість отримувати платежі, вам потрібен обліковий запис BIP32. Найпростіший спосіб почати прийом біткоіни - створити гаманець blockchain.info за адресою:

https://blockchain.info/wallet/#/signup

Вам потрібно створити новий обліковий запис, який буде використовуватися виключно для отримання транзакцій, підтримуваних API. При виклику API потрібно використовувати, який можна знайти в «Настройки> Облікові записи та адреси -> Додаткові параметри -> Показати код xPub».

Малюнок 2. Отримання ключа xPub

Отримання ключа xPub

Створення нових адрес для ваших клієнтів

Для кожного клієнта у нас буде своя унікальна адреса, на який він буде відправляти платежі. При отриманні грошей на будь-який з таких адрес вам буде надіслано HTTP-повідомлення. Зверніть увагу, що кожен виклик, зроблений на сервері, призведе до збільшення параметра index, це робиться для того, щоб переконатися, що один і той же адреса не призначений більш ніж одному клієнту. Проте всі засоби, відправлені на будь-який з створених адрес, будуть додані в один і той же гаманець.

https://api.blockchain.info/v2/receive?xpub= $ xpub & callback = $ callback_url & key = $ key

Слід врахувати, що існує програмне обмеження - гаманець не сканує більше 20 невикористовуваних адрес. Таким чином, API буде повертати помилку, якщо більше 20 з раніше створених адрес не були використані. Якщо ви зіткнулися з цією помилкою, вам доведеться або перейти на новий xPub (в тому ж блоці blockchain.info), або почати отримувати платежі на один з раніше створених невикористовуваних 20 адрес.

Це можна опціонально контролювати, додаючи gap_limit в якості додаткового параметра URL, що не призведе до збільшення числа біткоіни-адрес, які можуть відслідковуватися серверами Blockahin.info. Додавання параметра gap_limit змінює максимально допустимий інтервал, після якого API більше не буде генерувати нові адреси.

https://api.blockchain.info/v2/receive?xpub= $ xpub & callback = $ callback_url & key = $ key & gap_limit = $ gap_limit

Нижче розглянемо параметри, які використовуються в наведеному URL:

  • xpub: ваш xPub (пункт призначення, куди будуть відправлятися платежі ваших клієнтів).
  • callback_url: це URL-адресу зворотного зв'язку, на який будуть приходити повідомлення при отриманні платежу.
  • key: ваш ключ API-інтерфейсу отримання платежів, який ви отримаєте після того, як додаток буде успішно прийнято.
  • gap_limit: необов'язковий параметр, який визначає кількість невикористовуваних адрес біткоіни, дозволених до того, як буде повернуто помилку.

За допомогою xPub створюємо невикористаний біткойн-адреса:

curl https: //api.blockchain.info/v2/receive? xpub = xpub6CWiJoiwxPQni3DFbrQNHWq8 ...

Тепер нехай ваші клієнти відправляють кошти за адресою, вказаною у відповіді:

RESPONSE: 200 OK, APPLICATION / JSON

{ "Address": "19jJyiC6DnKyKvPg38eBE8R6yCSXLLEjqw", "index": 23, "callback": " https://mystore.com?invoice_id=058921123 "}

Нижче наведено приклад реалізації на PHP:

$ Secret = 'ZzsMLGKe162CfA5EcG6j';

$ My_xpub = '{YOUR XPUB ADDRESS}';

$ My_api_key = '{YOUR API KEY}';

$ My_callback_url = 'INSERT YOUR CALLBACK URL HERE +/- that can include customer identification parameters such as? Invoice_id = 058921123 & secret ='. $ Secret;

$ Root_url = ' https://api.blockchain.info/v2/receive ';

$ Parameters = 'xpub ='. $ My_xpub. '& Callback =' .urlencode ($ my_callback_url). '& Key ='. $ My_api_key;

$ Response = file_get_contents ($ root_url. '?'. $ Parameters);

$ Object = json_decode ($ response);

echo 'Send Payment To:'. $ Object-> address;

Реалізація зворотних дзвінків Blockchain.info

Всякий раз, коли ви отримуєте платіж, сервери blockchain.info перевірятимуть вказаний вами зворотний URL-адресу. URL зворотного виклику обмежений довжиною 255 символів.

  • transaction_hash: хеш платежу.
  • address: адреса призначення, який є частиною облікового запису xPub.
  • confirmations: кількість підтверджень транзакції.
  • value: значення отриманого платежу в satoshis, що становить 1/100 000 000 біткоіни.
  • {Custom parameter}: ця функція може використовуватися для додавання параметрів до вашого URL зворотного виклику, наприклад, invoice_id або customer_id допоможуть відслідковувати, які платежі були здійснені клієнтами.

Нижче наведено приклад PHP-коду на зворотній дзвінок, отриманого в результаті раніше представленого скрипта:

$ Real_secret = 'ZzsMLGKe162CfA5EcG6j';

$ Invoice_id = $ _GET [ 'invoice_id']; // invoice_id is passed back to the callback URL

$ Transaction_hash = $ _GET [ 'transaction_hash'];

$ Value_in_satoshi = $ _GET [ 'value'];

$ Value_in_btc = $ value_in_satoshi / 100000000;

// Commented out to test, uncomment when live

if ($ _GET [ 'test'] == true) {

return;

}

try {

// create or open the database

$ Database = new SQLiteDatabase ( 'db.sqlite', 0666, $ error);

} Catch (Exception $ e) {

die ($ error);

}

// Add the invoice to the database

$ Stmt = $ db-> prepare ( "replace INTO invoice_payments (invoice_id, transaction_hash, value) values ​​(?,?,?)");

$ Stmt-> bind_param ( "isd", $ invoice_id, $ transaction_hash, $ value_in_btc);

if ($ stmt-> execute ()) {

echo "* ok *";

}

Відповідь на зворотній дзвінок

Щоб підтвердити, що зворотний виклик був успішно оброблений, ваш сервер повинен відповідати ok в текстовому форматі, а не HTML. Якщо ваш сервер повертає будь-якої іншої відповідь або не діє, сервер blockchain.info буде повторно відправляти запит кожні 10 хвилин протягом одного тижня. Домени, що не повертають жодної відповіді, можуть бути повністю заблоковані службою.

Перевірка проміжків між адресами

Тепер нам потрібно буде перевірити індекс розриву між останнім адресою, на який був успішно відправлений платіж, і останнім згенерував адресою. Використовуємо xPub наступним чином:

curl https://api.blockchain.info/v2/receive/checkgap?xpub= [yourxpubhere]] & key ...

{ "Gap": 2}

Безпека

Ми повинні додати унікальний параметр $ secret в URL зворотного виклику. Цей параметр буде перевірений кодом перевірки дійсності для того, щоб запобігти ситуації, коли непорядні користувачі спробують позначити рахунок сплаченим.

На додаток до біткоіни ви можете використовувати свою місцеву валюту. Для цього потрібно буде скористатися.

Термін дії адрес

До тих пір, поки адреса повертає у відповіді ok, термін дії адреси не закінчиться і буде постійно відслідковуватися. В цілому, система створена таким чином, що може відстежувати мільйони біткоіни-адрес.

висновки

У цій статті ми коротко розглянули один з можливих шляхів додавання платежів «біткоіни» на ваш сайт, дізналися всі плюси, мінуси та нюанси використання цієї системи. Це допоможе вам спростити процес оплати ваших послуг або товарів, пропонованих на сайті. Варто зазначити, що ми працювали з реалізацією на PHP, але це можна зробити і в Python, і в Ruby.

Як приймати платежі біткоіни (Bitcoin) на своєму сайті

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

1. Введення

2. Як отримати ключ API?

3. Створення нових адрес для ваших клієнтів

4. Безпека

5. Висновки

Вступ

Біткоіни - досить привабливий метод оплати для онлайн-підприємців, в основному через те, що комісія при використанні цього методу вкрай незначна в порівнянні з PayPal або кредитними картами. Відповідно, це дозволяє отримати більш високий прибуток і пропонувати послуги клієнтам у всьому світі за доступними цінами. Більш того, біткоіни формально не обкладаються податком, оскільки не уявляють собою грошову форму, що видається урядом. Також серед переваг системи «біткоіни» можна виділити відсутність необхідності звернення до посередників.

У цій статті ми спробуємо додати біткоіни в якості способу оплати на сайті. Для прийняття платежів ми будемо використовувати Blockchain.info Receive Payments API V2, так як він простий, безпечний і може бути реалізований менш ніж за 10 хвилин.

Blockchain.info's API V2

Paychanges API V2 Blockchain.info є найпростішим і швидким способом почати приймати платежі біткоіни від кого завгодно в будь-якій точці світу за допомогою простого HTTP-GET-запиту. Варто зазначити, що одним з основних перешкод, пов'язаних з прийняттям платежів біткойнов, є необхідність створення унікального адреси біткойнов для кожного нового користувача або рахунку. Ці згенеровані адреси повинні бути під контролем і безпечно зберігатися. API прийому платежів відповідає за створення і моніторинг біткоіни-адрес. При отриманні платежів API дозволяє повідомити сервер за допомогою простої процедури зворотного виклику.

Як отримати ключ API?

Щоб використовувати API Blockchain.info, ви повинні заповнити форму заявки за адресою:

https://api.blockchain.info/v2/apikey/request/

Зверніть увагу, що цей ключ API призначений тільки для отримання платежів. Існує стандартний API гаманця, який доступний в Python, Java, .NET (C #), Ruby, PHP і Node і може використовуватися для надсилання та отримання платежів. Однак він відрізняється від Receive Payments V2 API тим, що не підходить для генерації різних адрес для різних користувачів.

На малюнку нижче показана форма заявки на отримання Receive Payments V2 API. Вам потрібно буде ввести своє ім'я, адресу електронної пошти, URL-адресу сайту, на якому ви будете впроваджувати API, а також опис товарів, які ви продаєте, або послуг, які пропонуєте на своєму веб-сайті. У більшості випадків заявка розглядається протягом 2-3 робочих днів.

Малюнок 1. Форма заявки на отримання Receive Payments V2 API

Отримання розширеного публічного ключа (Extended Public Key)

Щоб мати можливість отримувати платежі, вам потрібен обліковий запис BIP32. Найпростіший спосіб почати прийом біткоіни - створити гаманець blockchain.info за адресою:

https://blockchain.info/wallet/#/signup

Вам потрібно створити новий обліковий запис, який буде використовуватися виключно для отримання транзакцій, підтримуваних API. При виклику API потрібно використовувати, який можна знайти в «Настройки> Облікові записи та адреси -> Додаткові параметри -> Показати код xPub».

Малюнок 2. Отримання ключа xPub

Отримання ключа xPub

Створення нових адрес для ваших клієнтів

Для кожного клієнта у нас буде своя унікальна адреса, на який він буде відправляти платежі. При отриманні грошей на будь-який з таких адрес вам буде надіслано HTTP-повідомлення. Зверніть увагу, що кожен виклик, зроблений на сервері, призведе до збільшення параметра index, це робиться для того, щоб переконатися, що один і той же адреса не призначений більш ніж одному клієнту. Проте всі засоби, відправлені на будь-який з створених адрес, будуть додані в один і той же гаманець.

https://api.blockchain.info/v2/receive?xpub= $ xpub & callback = $ callback_url & key = $ key

Слід врахувати, що існує програмне обмеження - гаманець не сканує більше 20 невикористовуваних адрес. Таким чином, API буде повертати помилку, якщо більше 20 з раніше створених адрес не були використані. Якщо ви зіткнулися з цією помилкою, вам доведеться або перейти на новий xPub (в тому ж блоці blockchain.info), або почати отримувати платежі на один з раніше створених невикористовуваних 20 адрес.

Це можна опціонально контролювати, додаючи gap_limit в якості додаткового параметра URL, що не призведе до збільшення числа біткоіни-адрес, які можуть відслідковуватися серверами Blockahin.info. Додавання параметра gap_limit змінює максимально допустимий інтервал, після якого API більше не буде генерувати нові адреси.

https://api.blockchain.info/v2/receive?xpub= $ xpub & callback = $ callback_url & key = $ key & gap_limit = $ gap_limit

Нижче розглянемо параметри, які використовуються в наведеному URL:

  • xpub: ваш xPub (пункт призначення, куди будуть відправлятися платежі ваших клієнтів).
  • callback_url: це URL-адресу зворотного зв'язку, на який будуть приходити повідомлення при отриманні платежу.
  • key: ваш ключ API-інтерфейсу отримання платежів, який ви отримаєте після того, як додаток буде успішно прийнято.
  • gap_limit: необов'язковий параметр, який визначає кількість невикористовуваних адрес біткоіни, дозволених до того, як буде повернуто помилку.

За допомогою xPub створюємо невикористаний біткойн-адреса:

curl https: //api.blockchain.info/v2/receive? xpub = xpub6CWiJoiwxPQni3DFbrQNHWq8 ...

Тепер нехай ваші клієнти відправляють кошти за адресою, вказаною у відповіді:

RESPONSE: 200 OK, APPLICATION / JSON

{ "Address": "19jJyiC6DnKyKvPg38eBE8R6yCSXLLEjqw", "index": 23, "callback": " https://mystore.com?invoice_id=058921123 "}

Нижче наведено приклад реалізації на PHP:

$ Secret = 'ZzsMLGKe162CfA5EcG6j';

$ My_xpub = '{YOUR XPUB ADDRESS}';

$ My_api_key = '{YOUR API KEY}';

$ My_callback_url = 'INSERT YOUR CALLBACK URL HERE +/- that can include customer identification parameters such as? Invoice_id = 058921123 & secret ='. $ Secret;

$ Root_url = ' https://api.blockchain.info/v2/receive ';

$ Parameters = 'xpub ='. $ My_xpub. '& Callback =' .urlencode ($ my_callback_url). '& Key ='. $ My_api_key;

$ Response = file_get_contents ($ root_url. '?'. $ Parameters);

$ Object = json_decode ($ response);

echo 'Send Payment To:'. $ Object-> address;

Реалізація зворотних дзвінків Blockchain.info

Всякий раз, коли ви отримуєте платіж, сервери blockchain.info перевірятимуть вказаний вами зворотний URL-адресу. URL зворотного виклику обмежений довжиною 255 символів.

  • transaction_hash: хеш платежу.
  • address: адреса призначення, який є частиною облікового запису xPub.
  • confirmations: кількість підтверджень транзакції.
  • value: значення отриманого платежу в satoshis, що становить 1/100 000 000 біткоіни.
  • {Custom parameter}: ця функція може використовуватися для додавання параметрів до вашого URL зворотного виклику, наприклад, invoice_id або customer_id допоможуть відслідковувати, які платежі були здійснені клієнтами.

Нижче наведено приклад PHP-коду на зворотній дзвінок, отриманого в результаті раніше представленого скрипта:

$ Real_secret = 'ZzsMLGKe162CfA5EcG6j';

$ Invoice_id = $ _GET [ 'invoice_id']; // invoice_id is passed back to the callback URL

$ Transaction_hash = $ _GET [ 'transaction_hash'];

$ Value_in_satoshi = $ _GET [ 'value'];

$ Value_in_btc = $ value_in_satoshi / 100000000;

// Commented out to test, uncomment when live

if ($ _GET [ 'test'] == true) {

return;

}

try {

// create or open the database

$ Database = new SQLiteDatabase ( 'db.sqlite', 0666, $ error);

} Catch (Exception $ e) {

die ($ error);

}

// Add the invoice to the database

$ Stmt = $ db-> prepare ( "replace INTO invoice_payments (invoice_id, transaction_hash, value) values ​​(?,?,?)");

$ Stmt-> bind_param ( "isd", $ invoice_id, $ transaction_hash, $ value_in_btc);

if ($ stmt-> execute ()) {

echo "* ok *";

}

Відповідь на зворотній дзвінок

Щоб підтвердити, що зворотний виклик був успішно оброблений, ваш сервер повинен відповідати ok в текстовому форматі, а не HTML. Якщо ваш сервер повертає будь-якої іншої відповідь або не діє, сервер blockchain.info буде повторно відправляти запит кожні 10 хвилин протягом одного тижня. Домени, що не повертають жодної відповіді, можуть бути повністю заблоковані службою.

Перевірка проміжків між адресами

Тепер нам потрібно буде перевірити індекс розриву між останнім адресою, на який був успішно відправлений платіж, і останнім згенерував адресою. Використовуємо xPub наступним чином:

curl https://api.blockchain.info/v2/receive/checkgap?xpub= [yourxpubhere]] & key ...

{ "Gap": 2}

Безпека

Ми повинні додати унікальний параметр $ secret в URL зворотного виклику. Цей параметр буде перевірений кодом перевірки дійсності для того, щоб запобігти ситуації, коли непорядні користувачі спробують позначити рахунок сплаченим.

На додаток до біткоіни ви можете використовувати свою місцеву валюту. Для цього потрібно буде скористатися.

Термін дії адрес

До тих пір, поки адреса повертає у відповіді ok, термін дії адреси не закінчиться і буде постійно відслідковуватися. В цілому, система створена таким чином, що може відстежувати мільйони біткоіни-адрес.

висновки

У цій статті ми коротко розглянули один з можливих шляхів додавання платежів «біткоіни» на ваш сайт, дізналися всі плюси, мінуси та нюанси використання цієї системи. Це допоможе вам спростити процес оплати ваших послуг або товарів, пропонованих на сайті. Варто зазначити, що ми працювали з реалізацією на PHP, але це можна зробити і в Python, і в Ruby.

Як приймати платежі біткоіни (Bitcoin) на своєму сайті

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

1. Введення

2. Як отримати ключ API?

3. Створення нових адрес для ваших клієнтів

4. Безпека

5. Висновки

Вступ

Біткоіни - досить привабливий метод оплати для онлайн-підприємців, в основному через те, що комісія при використанні цього методу вкрай незначна в порівнянні з PayPal або кредитними картами. Відповідно, це дозволяє отримати більш високий прибуток і пропонувати послуги клієнтам у всьому світі за доступними цінами. Більш того, біткоіни формально не обкладаються податком, оскільки не уявляють собою грошову форму, що видається урядом. Також серед переваг системи «біткоіни» можна виділити відсутність необхідності звернення до посередників.

У цій статті ми спробуємо додати біткоіни в якості способу оплати на сайті. Для прийняття платежів ми будемо використовувати Blockchain.info Receive Payments API V2, так як він простий, безпечний і може бути реалізований менш ніж за 10 хвилин.

Blockchain.info's API V2

Paychanges API V2 Blockchain.info є найпростішим і швидким способом почати приймати платежі біткоіни від кого завгодно в будь-якій точці світу за допомогою простого HTTP-GET-запиту. Варто зазначити, що одним з основних перешкод, пов'язаних з прийняттям платежів біткойнов, є необхідність створення унікального адреси біткойнов для кожного нового користувача або рахунку. Ці згенеровані адреси повинні бути під контролем і безпечно зберігатися. API прийому платежів відповідає за створення і моніторинг біткоіни-адрес. При отриманні платежів API дозволяє повідомити сервер за допомогою простої процедури зворотного виклику.

Як отримати ключ API?

Щоб використовувати API Blockchain.info, ви повинні заповнити форму заявки за адресою:

https://api.blockchain.info/v2/apikey/request/

Зверніть увагу, що цей ключ API призначений тільки для отримання платежів. Існує стандартний API гаманця, який доступний в Python, Java, .NET (C #), Ruby, PHP і Node і може використовуватися для надсилання та отримання платежів. Однак він відрізняється від Receive Payments V2 API тим, що не підходить для генерації різних адрес для різних користувачів.

На малюнку нижче показана форма заявки на отримання Receive Payments V2 API. Вам потрібно буде ввести своє ім'я, адресу електронної пошти, URL-адресу сайту, на якому ви будете впроваджувати API, а також опис товарів, які ви продаєте, або послуг, які пропонуєте на своєму веб-сайті. У більшості випадків заявка розглядається протягом 2-3 робочих днів.

Малюнок 1. Форма заявки на отримання Receive Payments V2 API

Отримання розширеного публічного ключа (Extended Public Key)

Щоб мати можливість отримувати платежі, вам потрібен обліковий запис BIP32. Найпростіший спосіб почати прийом біткоіни - створити гаманець blockchain.info за адресою:

https://blockchain.info/wallet/#/signup

Вам потрібно створити новий обліковий запис, який буде використовуватися виключно для отримання транзакцій, підтримуваних API. При виклику API потрібно використовувати, який можна знайти в «Настройки> Облікові записи та адреси -> Додаткові параметри -> Показати код xPub».

Малюнок 2. Отримання ключа xPub

Отримання ключа xPub

Створення нових адрес для ваших клієнтів

Для кожного клієнта у нас буде своя унікальна адреса, на який він буде відправляти платежі. При отриманні грошей на будь-який з таких адрес вам буде надіслано HTTP-повідомлення. Зверніть увагу, що кожен виклик, зроблений на сервері, призведе до збільшення параметра index, це робиться для того, щоб переконатися, що один і той же адреса не призначений більш ніж одному клієнту. Проте всі засоби, відправлені на будь-який з створених адрес, будуть додані в один і той же гаманець.

https://api.blockchain.info/v2/receive?xpub= $ xpub & callback = $ callback_url & key = $ key

Слід врахувати, що існує програмне обмеження - гаманець не сканує більше 20 невикористовуваних адрес. Таким чином, API буде повертати помилку, якщо більше 20 з раніше створених адрес не були використані. Якщо ви зіткнулися з цією помилкою, вам доведеться або перейти на новий xPub (в тому ж блоці blockchain.info), або почати отримувати платежі на один з раніше створених невикористовуваних 20 адрес.

Це можна опціонально контролювати, додаючи gap_limit в якості додаткового параметра URL, що не призведе до збільшення числа біткоіни-адрес, які можуть відслідковуватися серверами Blockahin.info. Додавання параметра gap_limit змінює максимально допустимий інтервал, після якого API більше не буде генерувати нові адреси.

https://api.blockchain.info/v2/receive?xpub= $ xpub & callback = $ callback_url & key = $ key & gap_limit = $ gap_limit

Нижче розглянемо параметри, які використовуються в наведеному URL:

  • xpub: ваш xPub (пункт призначення, куди будуть відправлятися платежі ваших клієнтів).
  • callback_url: це URL-адресу зворотного зв'язку, на який будуть приходити повідомлення при отриманні платежу.
  • key: ваш ключ API-інтерфейсу отримання платежів, який ви отримаєте після того, як додаток буде успішно прийнято.
  • gap_limit: необов'язковий параметр, який визначає кількість невикористовуваних адрес біткоіни, дозволених до того, як буде повернуто помилку.

За допомогою xPub створюємо невикористаний біткойн-адреса:

curl https: //api.blockchain.info/v2/receive? xpub = xpub6CWiJoiwxPQni3DFbrQNHWq8 ...

Тепер нехай ваші клієнти відправляють кошти за адресою, вказаною у відповіді:

RESPONSE: 200 OK, APPLICATION / JSON

{ "Address": "19jJyiC6DnKyKvPg38eBE8R6yCSXLLEjqw", "index": 23, "callback": " https://mystore.com?invoice_id=058921123 "}

Нижче наведено приклад реалізації на PHP:

$ Secret = 'ZzsMLGKe162CfA5EcG6j';

$ My_xpub = '{YOUR XPUB ADDRESS}';

$ My_api_key = '{YOUR API KEY}';

$ My_callback_url = 'INSERT YOUR CALLBACK URL HERE +/- that can include customer identification parameters such as? Invoice_id = 058921123 & secret ='. $ Secret;

$ Root_url = ' https://api.blockchain.info/v2/receive ';

$ Parameters = 'xpub ='. $ My_xpub. '& Callback =' .urlencode ($ my_callback_url). '& Key ='. $ My_api_key;

$ Response = file_get_contents ($ root_url. '?'. $ Parameters);

$ Object = json_decode ($ response);

echo 'Send Payment To:'. $ Object-> address;

Реалізація зворотних дзвінків Blockchain.info

Всякий раз, коли ви отримуєте платіж, сервери blockchain.info перевірятимуть вказаний вами зворотний URL-адресу. URL зворотного виклику обмежений довжиною 255 символів.

  • transaction_hash: хеш платежу.
  • address: адреса призначення, який є частиною облікового запису xPub.
  • confirmations: кількість підтверджень транзакції.
  • value: значення отриманого платежу в satoshis, що становить 1/100 000 000 біткоіни.
  • {Custom parameter}: ця функція може використовуватися для додавання параметрів до вашого URL зворотного виклику, наприклад, invoice_id або customer_id допоможуть відслідковувати, які платежі були здійснені клієнтами.

Нижче наведено приклад PHP-коду на зворотній дзвінок, отриманого в результаті раніше представленого скрипта:

$ Real_secret = 'ZzsMLGKe162CfA5EcG6j';

$ Invoice_id = $ _GET [ 'invoice_id']; // invoice_id is passed back to the callback URL

$ Transaction_hash = $ _GET [ 'transaction_hash'];

$ Value_in_satoshi = $ _GET [ 'value'];

$ Value_in_btc = $ value_in_satoshi / 100000000;

// Commented out to test, uncomment when live

if ($ _GET [ 'test'] == true) {

return;

}

try {

// create or open the database

$ Database = new SQLiteDatabase ( 'db.sqlite', 0666, $ error);

} Catch (Exception $ e) {

die ($ error);

}

// Add the invoice to the database

$ Stmt = $ db-> prepare ( "replace INTO invoice_payments (invoice_id, transaction_hash, value) values ​​(?,?,?)");

$ Stmt-> bind_param ( "isd", $ invoice_id, $ transaction_hash, $ value_in_btc);

if ($ stmt-> execute ()) {

echo "* ok *";

}

Відповідь на зворотній дзвінок

Щоб підтвердити, що зворотний виклик був успішно оброблений, ваш сервер повинен відповідати ok в текстовому форматі, а не HTML. Якщо ваш сервер повертає будь-якої іншої відповідь або не діє, сервер blockchain.info буде повторно відправляти запит кожні 10 хвилин протягом одного тижня. Домени, що не повертають жодної відповіді, можуть бути повністю заблоковані службою.

Перевірка проміжків між адресами

Тепер нам потрібно буде перевірити індекс розриву між останнім адресою, на який був успішно відправлений платіж, і останнім згенерував адресою. Використовуємо xPub наступним чином:

curl https://api.blockchain.info/v2/receive/checkgap?xpub= [yourxpubhere]] & key ...

{ "Gap": 2}

Безпека

Ми повинні додати унікальний параметр $ secret в URL зворотного виклику. Цей параметр буде перевірений кодом перевірки дійсності для того, щоб запобігти ситуації, коли непорядні користувачі спробують позначити рахунок сплаченим.

На додаток до біткоіни ви можете використовувати свою місцеву валюту. Для цього потрібно буде скористатися.

Термін дії адрес

До тих пір, поки адреса повертає у відповіді ok, термін дії адреси не закінчиться і буде постійно відслідковуватися. В цілому, система створена таким чином, що може відстежувати мільйони біткоіни-адрес.

висновки

У цій статті ми коротко розглянули один з можливих шляхів додавання платежів «біткоіни» на ваш сайт, дізналися всі плюси, мінуси та нюанси використання цієї системи. Це допоможе вам спростити процес оплати ваших послуг або товарів, пропонованих на сайті. Варто зазначити, що ми працювали з реалізацією на PHP, але це можна зробити і в Python, і в Ruby.

2. Як отримати ключ API?
Як отримати ключ API?
Info/v2/receive?
Info/v2/receive?
Info/v2/receive?
Com?
Info/v2/receive/checkgap?
Як отримати ключ API?
Info/v2/receive?
Info/v2/receive?

Новости