Bitcoin API и PHP – Базовое использование

Вы никогда не думали о продаже своих услуг в обмен на денежную единицу Bitcoin? Сегодня уже много крупных игроков на рынке делают это, начиная с OkCupid и Khan Academy, заканчивая даже WordPress-ом. Помимо этого, некоторые страны задумались об Bitcoin в качестве валюты. В этой серии уроков, мы познакомимся с Bitcoin API и Coinbase SDK.

Coinbase SDK

Для работы с Coinbase вы можете воспользоваться специальными инструментами и SDK, которые доступны абсолютно каждому (с некоторой оговоркой о цене).
Условия использования:
  • Прием платежей при помощи Coinbase осуществляется абсолютно бесплатно;
  • Вы соглашаетесь заплатить взнос (1%) в случае, если захотите перевести деньги на ваш банковский счет, но только если ваши продажи превышают $1.000.000 (один миллион долларов);
  • Минимальная сумма перевода в сети Bitcoin составляет 0,001 BTC. Используя Coinbase, можно понизить этот предел до 1 Satoshi (0,00000001 BTC);
Еще одним важный момент: вы можете подключать услугу “Мгновенный обмен”. Данная услуга преобразует сумму платежа Bitcoin сразу в выбранную вами валюту без дополнительных действий.

Типы интеграции

Как и многие другие сервисы онлайн-платежей, Coinbase предлагает два основных способа интеграции. Первый быстрее и легче, второй сложнее, но предоставляет расширенные возможности, которые больше подходят для больших проектов.
Первый вариант заключается в использовании одного из инструментов Coinbase, а именно MerchantTools. Вы можете использовать кнопкистраницы и фрэймы. Если вы используете CMS или системой управления электронной коммерцией (WordPress, WooCommerce, Magento...), то наверняка найдёте много соответствующих плагинов.
Второе способ заключается в полной интеграции сервиса, исключая обращение к Coinbase. На самом деле, мы будем использовать конкретный PHP SDK.
Что мы можем сделать при помощи данного SDK?
  • продавать или покупать bitcoin-ы (или совершать валютный обмен);
  • отправить/запрашивать bitcoin-ы по электронной почте или по bitcoin адресу;
  • принимать платежи bitcoin как мерчант-сервис;
  • хранить bitcoin-ы в одном или нескольких кошельках;
  • иметь доступ к списку операций над bitcoin-ами (блоки, транзакции и т.д.);
  • обрабатывать текущие и микро платежи;
Всего по-немногу.
На данный момент существует три версии SDK: для Ruby, Java и PHP. Есть также много неофициальных библиотеки для других языков (Python, .NET, Node.js ...). В нашем случае мы будем использовать PHP SDK, который вы можете найти на GitHub.
Примечание: прежде чем перейти к следующему шагу, вам необходимо быть зарегистрированным в Coinbase.

PHP SDK

Установка

Давайте начнем с установки пакета библиотеки. На GitHub-овскйо странице данного SDK вы не обнаружите возможность взаимодействия с Composer. Тем не менее, при помощи простого поиска можем найти соответствующий пакет coinbase/coinbase.
Для установки помещаем следующий код в файл composer.json:
1{
2    "require": {
3        "coinbase/coinbase""dev-master"
4    }
5}



Далее используем composer (если он у вас установлен) для скачивания библиотеки:
1composer update



Аутентификация

Перед тем как приступить к написанию кода, давайте поговорим об аутентификации. У разработчиков есть два варианта аутентификации, для получения доступа к методом API. Первый - это использование пары ключей API и API Secret. Второй, использование OAuth2.
Документация Coinbase вполне понятна: если вы намереваетесь взаимодействовать только с своим ??аккаунт-ом, вносить в него изменения, то можете использовать API Key. Если же вам необходимо, чтобы пользователь использовал свой аккаунт в рамках вашего приложения, то лучше всего воспользоваться OAuth2.

Ключ API + Secret

Создать ключ API очень просто, если у вас есть аккаунт Coinbase. Все, что вам нужно сделать, это перейти сюда и нажать на кнопку "+ New API Key".
Если вы делаете это впервые, то вам скорее всего придётся подтвердить аккаунт при помощи Authy.
Перед вами должна отобразиться следующая форма:

Вам нужно будет указать данные учетной записи и список прав, которые необходимо присвоить для конкретного ключа. Также вы можете выбрать один или несколько IP адресов для внесения их в “белый список”.
Для создания и активации ключа API нажмите сначала кнопку “Create”, а затем “Enable”.

OAuth 2.0

Если вы хотите использовать OAuth 2.0 , то сначала придётся пройти простую процедуру. На это раз вам нужно создавать не ключ API, тем не менее, а OAuth 2.0 приложение. Для этого отправляетесь по адресу https://coinbase.com/oauth/applications. Далее нажмите на кнопку “+ Create an Application”:

Заполните форму: укажите название вашего приложения, выберите иконку, а так же укажите список URL-адресов для будущих редиректов.
Примечание: каждый URL должен начинаться с (https://...). Другие варианты будет игнорироваться.
Кликните окей и все готово! После этого вы должны получите письмо с вашим новым ClientID и Client Secret. Это конечно не вся информация об аутентификации, более подробное описание можете найти на соответствующей странице.

Права

Для более безопасной работы с API вам предстоит иметь дело с правами доступа. Полный список прав:
  • all: полный доступ к вашей учетной записи;
  • merchant: создание платежных кнопок, форм, доступ к основой информации о продавце, редактирование своих данных и создание новых адресов;
  • balance: доступ к вашему реальным состоянию счёта;
  • buttons: создание кнопки оплаты;
  • buy: покупка bitcoin-ов;
  • contacts: предоставление списка ваших контактных данных;
  • orders: предоставление списка принятых заказов;
  • sell: продажа bitcoin-ов;
  • transactions: предоставление истории ваших сделок;
  • send: отправка определенного количества bitcoin-ов с вашего счета;
  • request: запрос bitcoin-ов с вашего счета;
  • transfers: предоставляет историю о покупках и продажах;
  • recurring_payments: предоставляет список регулярных платежей;
  • oauth_apps: просматривать, создавать и редактировать OAuth приложения;
  • reports: получение и создание новых отчетов;

Принципы работы с SDK

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

Доступ по ключам API и Secret

1$coinbase = Coinbase::withApiKey($coinbaseAPIKey$coinbaseAPISecret);



Вставьте ключ API и API Secret в качестве параметров в метод withApiKey(). Далее для работы с SDK мы будем использовать объект $coinbase.

Доступ через OAuth

После создания OAuth приложения, нам нужно создать объект $coinbaseOauth, указав Client ID и Client Secret которые мы получили ранее. Как в этом примере:
1$coinbaseOauth new Coinbase_OAuth($_CLIENT_ID$_CLIENT_SECRET$_REDIRECT_URL);
2header("Location: " $coinbaseOauth->createAuthorizeUrl("all"));



После успешной аутентификации пользователь будет перенаправлен на URL, указанный ранее во время установки. Для получения валидного токена, так же нужно передать параметр code:
1$tokens $coinbaseOauth->getTokens($_GET['code']);



Далее нам необходимо создать объект $coinbase, используя токен:
1$coinbase = Coinbase::withOauth($coinbaseOauth$tokens);



Независимо от того, каким способом мы прошли аутентификацию, процесс работы с объектом $coinbase один и тот же.

Доступ к данным

Получить ваши данные очень просто. Для этого воспользуемся объектом $coinbase.
Для проверки вашего баланса, выполните следующий код:
1echo $coinbase->getBalance() . " BTC";



Вот как получить данные пользователя:
1$user $coinbase->getUser()
2 
3echo $user->name;
4echo $user->email;
5echo $user->time_zone;
6echo $user->native_currency;



Используя объект $coinbase, мы так же можем получить информацию о продавце.
1$user->merchant->company_name;
2$user->merchant->logo;



Примечание: свойство logo возвращает URL-адрес логотипа.
Кроме того, мы можем получить контактные данные, вызвав метод getContacts().
1$response $coinbase->getContacts("user");
2 
3foreach($response->contacts as $contact)
4{
5    echo $contact;
6    // 'guyaddress@provider.com'
7}



Данные о валютах

SDK так же позволяет получить данные о валютах:
1$currencies $coinbase->getCurrencies();
2echo $currencies[0]->name;



Метод getCurrencies() возвращает список всех активных валют (в формате ISO), доступных в системе Bitcoin. Вот как, можно получить некоторую информацию о валютных курсах:
1$rates $coinbase->getExchangeRate();
2 
3echo $rates->btc_to_usd;
4// is the same as...
5echo $coinbase->getExchangeRate('btc''usd');



В зависимости от параметров, которые мы передадим в getExchangeRate(), получим разный результат.
Так же вы можете получить информацию о валютном курсе при помощи методов getBuyPrice() и getSellPrice():
1echo $coinbase->getBuyPrice('1');
2// '125.31'
3echo $coinbase->getSellPrice('1');
4// '122.41'



Примечание: в данную сумму входит 1% сбора Coinbase и $0.15 банка.

Создание кнопки оплаты

Для создания кнопки оплаты воспользуйтесь методом createButton() с определенным набором параметров:
1createButton($name$price$currency$custom=null, $options=array())



… а вот и пример:
1$paymentButton $coinbase->createButton(
2    "Order #1",
3    "19.99",
4    "EUR",
5    "TRACKING_CODE_1",
6    array(
7        "description" => "1 item at 19.99"
8    )
9);



Довольно просто, не так ли?
Первый параметр $name - это “название” платежа, который вы хотите создать. Далее идёт $price, сумма платежа. Потом этого, выберите валюту платежа , и $custom настройки для конкретного кода транзакций который будет отправлен вам после процедуры оплаты.
И наконец, $options позволит настроить внешний вид кнопки, настроить URL-адрес на который необходимо отправить пользователя при успешной или не успешной оплате. Больше информации об этом параметре можете найти на странице документации.
Для вывода самой кнопки, воспользуйтесь следующими полями:
1echo $response->button->code;
2// '93865b9cae83706ae59220c013bc0afd'
3 
4echo $response->embedHtml;
5// '<div class=\"coinbase-button\" data-code=\"93865b9cae83706ae59220c013bc0afd\"></div><script src=\"https://coinbase.com/assets/button.js\" type=\"text/jаvascript\"></script>'



Остаётся вывести кнопку $response->embedHtml с помощью оператора echo.

Подводя итог

На этом первая часть завершена. Тут мы рассмотрели основы: установку библиотеки, а так же принципы работы с API. Во второй части рассмотрим отправку и получения денег. Оставайтесь с нами!скачать dle 11.3
Добавить комментарий

Оставить комментарий

Кликните на изображение чтобы обновить код, если он неразборчив