Вы никогда не думали о продаже своих услуг в обмен на денежную единицу 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
:
3 |
"coinbase/coinbase" : "dev-master" |
Далее используем composer (если он у вас установлен) для скачивания библиотеки:
Аутентификация
Перед тем как приступить к написанию кода, давайте поговорим об аутентификации. У разработчиков есть два варианта аутентификации, для получения доступа к методом 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() |
6 |
echo $user ->native_currency; |
Используя объект $coinbase
, мы так же можем получить информацию о продавце.
1 |
$user ->merchant->company_name; |
Примечание: свойство logo
возвращает URL-адрес логотипа.
Кроме того, мы можем получить контактные данные, вызвав метод getContacts()
.
1 |
$response = $coinbase ->getContacts( "user" ); |
3 |
foreach ( $response ->contacts as $contact ) |
Данные о валютах
SDK так же позволяет получить данные о валютах:
1 |
$currencies = $coinbase ->getCurrencies(); |
2 |
echo $currencies [0]->name; |
Метод getCurrencies()
возвращает список всех активных валют (в формате ISO), доступных в системе Bitcoin. Вот как, можно получить некоторую информацию о валютных курсах:
1 |
$rates = $coinbase ->getExchangeRate(); |
3 |
echo $rates ->btc_to_usd; |
5 |
echo $coinbase ->getExchangeRate( 'btc' , 'usd' ); |
В зависимости от параметров, которые мы передадим в getExchangeRate()
, получим разный результат.
Так же вы можете получить информацию о валютном курсе при помощи методов getBuyPrice()
и getSellPrice()
:
1 |
echo $coinbase ->getBuyPrice( '1' ); |
3 |
echo $coinbase ->getSellPrice( '1' ); |
Примечание: в данную сумму входит 1% сбора Coinbase и $0.15 банка.
Создание кнопки оплаты
Для создания кнопки оплаты воспользуйтесь методом createButton()
с определенным набором параметров:
1 |
createButton( $name , $price , $currency , $custom =null, $options = array ()) |
… а вот и пример:
1 |
$paymentButton = $coinbase ->createButton( |
7 |
"description" => "1 item at 19.99" |
Довольно просто, не так ли?
Первый параметр $name
— это “название” платежа, который вы хотите создать. Далее идёт $price
, сумма платежа. Потом этого, выберите валюту платежа , и $custom
настройки для конкретного кода транзакций который будет отправлен вам после процедуры оплаты.
И наконец, $options
позволит настроить внешний вид кнопки, настроить URL-адрес на который необходимо отправить пользователя при успешной или не успешной оплате. Больше информации об этом параметре можете найти на странице документации.
Для вывода самой кнопки, воспользуйтесь следующими полями:
1 |
echo $response ->button->code; |
4 |
echo $response ->embedHtml; |
Остаётся вывести кнопку $response->embedHtml
с помощью оператора echo
.
Подводя итог
На этом первая часть завершена. Тут мы рассмотрели основы: установку библиотеки, а так же принципы работы с API. Во второй части рассмотрим отправку и получения денег. Оставайтесь с нами!