Как принимать платежи биткоинами на вашем сайте

Гарда Предприятие: новый взгляд на DLP Тотальный контроль и интеллектуальная защита от утечек информации – это реальность.
Уникальный механизм блокировки позволит избежать утечек ценной информации и выявить инсайдеров, не нарушая бизнес-процессов внутри компании.

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

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

В этой статье мы попробуем добавить биткоины в качестве способа оплаты на сайте. Для принятия платежей мы будем использовать Blockchain.info Receive Payments API V2, так как он прост, безопасен и может быть реализован менее чем за 10 минут.

Paychanges API V2 Blockchain.info является самым простым и быстрым способом начать принимать платежи биткоинами от кого угодно в любой точке мира с помощью простого HTTP-GET-запроса. Стоит отметить, что одним из основных препятствий, связанных с принятием платежей биткойнами, является необходимость создания уникального адреса биткойнов для каждого нового пользователя или счета. Эти сгенерированные адреса должны быть под контролем и безопасно храниться. API приема платежей отвечает за создание и мониторинг биткоин-адресов. При получении платежей API позволяет уведомить сервер с помощью простой процедуры обратного вызова.

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

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

Чтобы иметь возможность получать платежи, вам потребуется учетная запись BIP32. Самый простой способ начать прием биткоинов — создать кошелек blockchain.info по адресу:

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

ключ xPub
, который можно найти в «Настройки-> Учетные записи и адреса -> Дополнительные параметры -> Показать код xPub».

Для каждого клиента у нас будет свой уникальный адрес, на который он будет отправлять платежи. При получении денег на любой из таких адресов вам будет отправлено HTTP-уведомление. Обратите внимание, что каждый вызов, сделанный на сервере, приведет к увеличению параметра index, это делается для того, чтобы убедиться, что один и тот же адрес не назначен более чем одному клиенту. Тем не менее все средства, отправленные на любой из созданных адресов, будут добавлены в один и тот же кошелек.

Следует учесть, что существует программное ограничение — кошелек не сканирует более 20 неиспользуемых адресов. Таким образом, API будет возвращать ошибку, если более 20 из ранее созданных адресов не были использованы. Если вы столкнулись с этой ошибкой, вам придется либо перейти на новый xPub (в том же блоке blockchain.info), либо начать получать платежи на один из ранее созданных неиспользуемых 20 адресов. 

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

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

$my_callback_url = ‘INSERT YOUR CALLBACK URL HERE +/- that can include customer identification parameters such as ?invoice_id=058921123&secret=’.$secret;

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

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

Чтобы подтвердить, что обратный вызов был успешно обработан, ваш сервер должен отвечать ok в текстовом формате, а не HTML. Если ваш сервер возвращает какой-либо другой ответ или бездействует, сервер blockchain.info будет повторно отправлять запрос каждые 10 минут в течение одной недели. Домены, не возвращающие никакого ответа, могут быть полностью заблокированы службой.

Теперь нам нужно будет проверить индекс разрыва между последним адресом, на который был успешно отправлен платеж, и последним сгенерированным адресом. Используем xPub следующим образом:

Мы должны добавить уникальный параметр $secret в URL обратного вызова. Этот параметр будет проверен кодом проверки действительности для того, чтобы предотвратить ситуации, когда недобропорядочные пользователи попытаются пометить счет оплаченным.

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

В этой статье мы кратко рассмотрели один из возможных путей добавления платежей «Биткоин» на ваш сайт, узнали все плюсы, минусы и нюансы использования этой системы. Это поможет вам упростить процесс оплаты ваших услуг или товаров, предлагаемых на сайте. Стоит отметить, что мы работали с реализацией на PHP, но это можно сделать и в Python, и в Ruby.

Свидетельство о регистрации СМИ ЭЛ № ФС 77 — 68398, выдано федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций (Роскомнадзор) 27.01.2017