Вы никогда не думали о продаже своих услуг в обмен на денежную единицу 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 (если он у вас установлен) для скачивания библиотеки:
1 |
composer 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); |
2 |
header("Location: " . $coinbaseOauth->createAuthorizeUrl("all")); |
После успешной аутентификации пользователь будет перенаправлен на URL, указанный ранее во время установки. Для получения валидного токена, так же нужно передать параметр code:
1 |
$tokens = $coinbaseOauth->getTokens($_GET['code']); |
Далее нам необходимо создать объект $coinbase, используя токен:
1 |
$coinbase = Coinbase::withOauth($coinbaseOauth, $tokens); |
Независимо от того, каким способом мы прошли аутентификацию, процесс работы с объектом $coinbase один и тот же.
Доступ к данным
Получить ваши данные очень просто. Для этого воспользуемся объектом $coinbase.
Для проверки вашего баланса, выполните следующий код:
1 |
echo $coinbase->getBalance() . " BTC"; |
Вот как получить данные пользователя:
1 |
$user = $coinbase->getUser() |
2 |
3 |
echo $user->name; |
4 |
echo $user->email; |
5 |
echo $user->time_zone; |
6 |
echo $user->native_currency; |
Используя объект $coinbase, мы так же можем получить информацию о продавце.
1 |
$user->merchant->company_name; |
2 |
$user->merchant->logo; |
Примечание: свойство logo возвращает URL-адрес логотипа.
Кроме того, мы можем получить контактные данные, вызвав метод getContacts().
1 |
$response = $coinbase->getContacts("user"); |
2 |
3 |
foreach($response->contacts as $contact) |
4 |
{ |
5 |
echo $contact; |
6 |
// '[email protected]' |
7 |
} |
Данные о валютах
SDK так же позволяет получить данные о валютах:
1 |
$currencies = $coinbase->getCurrencies(); |
2 |
echo $currencies[0]->name; |
Метод getCurrencies() возвращает список всех активных валют (в формате ISO), доступных в системе Bitcoin. Вот как, можно получить некоторую информацию о валютных курсах:
1 |
$rates = $coinbase->getExchangeRate(); |
2 |
3 |
echo $rates->btc_to_usd; |
4 |
// is the same as... |
5 |
echo $coinbase->getExchangeRate('btc', 'usd'); |
В зависимости от параметров, которые мы передадим в getExchangeRate(), получим разный результат.
Так же вы можете получить информацию о валютном курсе при помощи методов getBuyPrice() и getSellPrice():
1 |
echo $coinbase->getBuyPrice('1'); |
2 |
// '125.31' |
3 |
echo $coinbase->getSellPrice('1'); |
4 |
// '122.41' |
Примечание: в данную сумму входит 1% сбора Coinbase и $0.15 банка.
Создание кнопки оплаты
Для создания кнопки оплаты воспользуйтесь методом createButton() с определенным набором параметров:
1 |
createButton($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-адрес на который необходимо отправить пользователя при успешной или не успешной оплате. Больше информации об этом параметре можете найти на странице документации.
Для вывода самой кнопки, воспользуйтесь следующими полями:
1 |
echo $response->button->code; |
2 |
// '93865b9cae83706ae59220c013bc0afd' |
3 |
4 |
echo $response->embedHtml; |
5 |
// '<div class=\"coinbase-button\" data-code=\"93865b9cae83706ae59220c013bc0afd\"></div><script src=\"https://coinbase.com/assets/button.js\" type=\"text/javascript\"></script>' |
Остаётся вывести кнопку $response->embedHtml с помощью оператора echo.
Подводя итог
На этом первая часть завершена. Тут мы рассмотрели основы: установку библиотеки, а так же принципы работы с API. Во второй части рассмотрим отправку и получения денег. Оставайтесь с нами!