bitFlyer/LightningのAPIをPHPから呼び出すライブラリ


Bitcoin、8/1のシステム刷新を控え高騰したり暴落したり忙しいですが、Bitcoinの取引所である「bitFlyer/Lightning」のAPIがあったので使えるPHPライブラリを探したのですがないようなので自作しました。

stk2k/phitflyer

APIリクエストはcURLを使用しています。マルチではないのでAPIレスポンスが返ってくるまではじっと我慢です。
ライセンスはMITですが、BitFlyerAPIの利用規約に従ってください。

bitFlyerって?

ビットコインの売買をすることができる取引所です。ユーザになると専用のビットコインアドレスが振られて、そこにビットコインを貯めることもできますし、ビットコインの送受信や売買を行うことができます。

bitFlyer/Lightningとは

通常のビットコイン現物取引やビットコインFX取引、イーサリアム取引ができるマーケットです。bitFlyerのログイン後画面から移動できます。

bitFlyer/Lightning APIとは

REST APIによって公開データの取得や自分の証拠金残高や資金移動、新規注文/キャンセルなど、通常画面から行う作業をプログラムから行うことができます。

本題

インストール

composerを使ってインストール:

composer require stk2k/phitflyer

GitHub:

git clone [email protected]:stk2k/phitflyer.git

使い方

APIキーの生成

APIを使って個人アカウントの情報にアクセスするためには「APIキー」と「APIシークレット」が必要になります。
開発者ページで自分の「APIキー」と「APIシークレット」を生成してください。
(名前はなんでもOK)

間違ってAPIキー、APIシークレットをGitHubなんかに置かないようにしましょう。

基本的な使い方

phitFlyerは以下のように使います。

require './vendor/autoload.php';

use PhitFlyer\PhitFlyerClient;

$flyer = new PhitFlyerClient();

$markets = $flyer->getMarkets();
foreach($markets as $idx => $market){
    echo $idx . '.' . PHP_EOL;
    echo 'product_code:' . $market->product_code . PHP_EOL;
    echo 'alias:' . (isset($market['alias']) ? $market['alias'] : '') . PHP_EOL;
}

まずcomposerのオートローダーを読み込みます。
次にPhitFlyerClientを作成して、目的のAPIに対応したメソッドを呼び出します。
ここではマーケット一覧を取得しています。
取得結果はvar_dump等で確認してください。

またAPIに書かれているAPIのうち、HTTP Public APIはAPIキー/APIシークレットを使用しませんが、HTTP Private APIの方は個人情報にアクセスするため前述のAPIキー/APIシークレットが必要になります。

require './vendor/autoload.php';

use PhitFlyer\PhitFlyerClient;

$api_key = '開発者ページで作成したAPIキー';
$api_secret = '開発者ページで作成したAPIシークレット';

$flyer = new PhitFlyerClient($api_key, $api_secret);

$markets = $flyer->meGetPermissions();

上記の例ではAPIキーのパーミッションを取得しています。
パーミッションはそのAPIキーで何ができるかを表していて、開発者ページで設定することができます。

当然ですがこの画面でチェックがついていない機能をAPIから利用することはできません。

結果をオブジェクトで取ってくる

PhitFlyerClientは取得結果をjson_decodeするだけなので高速ですが、取得結果の配列アクセス時にチェックする必要があります。
(板情報のaliasなど)
PhitFlyerObjectClient経由でメソッドコールすることでオブジェクトとして返してくれるので、その辺のチェックが不要になります。
(速度的には不利になりますが)

use PhitFlyer\PhitFlyerClient;
use PhitFlyer\PhitFlyerObjectClient;

$flyer = new PhitFlyerObjectClient(new PhitFlyerClient());

$markets = $flyer->getMarkets();

foreach($markets as $idx => $market){
    echo $idx . '.' . PHP_EOL;
    echo 'product_code:' . $market->getProductCode() . PHP_EOL;
    echo 'alias:' . $market->getAlias() . PHP_EOL;
}

サポートしているAPI

phitFlyerが実装しているbitFlyerAPIの機能です。

HTTP Public API(公開データAPI)

機能 HTTPリクエスト phitFlyerのメソッド 対応
マーケットの一覧 GET /v1/markets getMarkets() v0.1.0~
板情報 GET /v1/board getBoard() v0.1.0~
Ticker GET /v1/ticker getTicker() v0.1.0~
約定履歴 GET /v1/executions getExecutions() v0.1.0~
板の状態 GET /v1/getboardstate getBoardState() v0.2.0~
取引所の状態 GET /v1/gethealth getHealth() v0.1.0~
チャット GET /v1/getchats getChats() v0.1.0~

HTTP Private API(個人情報API)

機能 HTTPリクエスト phitFlyerのメソッド 対応
API キー権限取得 GET /v1/me/getpermissions meGetPermissions() v0.1.0~
資産残高 GET /v1/me/getbalance meGetBalance() v0.1.0~
証拠金 GET /v1/me/getcollateral meGetCollateral() v0.1.0~
通貨別 証拠金 GET /v1/me/getcollateralaccounts meGetCollateralAccounts() v0.1.0~
預入用ビットコイン・イーサリアムアドレス取得 GET /v1/me/getaddresses meGetAddress() v0.1.0~
ビットコイン・イーサ預入履歴 GET /v1/me/getcoinins meGetCoinIns() v0.1.0~
ビットコイン・イーサ送付履歴 GET /v1/me/getcoinouts meGetCoinOuts() v0.1.0~
銀行口座一覧取得 GET /v1/me/getbankaccounts meGetBankAccounts() v0.1.0~
入金履歴 GET /v1/me/getdeposits meGetDeposits() v0.1.0~
出金 GET /v1/me/withdraw meWithdraw() v0.1.0
出金履歴 GET /v1/me/getwithdrawals meGetWithdrawals() v0.1.0
新規注文を出す GET /v1/me/sendchildorder meSendChildOrder() v0.1.0~
注文をキャンセルする GET /v1/me/cancelchildorder meCancelChildOrder() v0.1.0~
新規の親注文を出す(特殊注文) GET /v1/me/sendparentorder - ×
親注文をキャンセルする GET /v1/me/cancelparentorder - ×
すべての注文をキャンセルする GET /v1/me/cancelallchildorders meCancelAllChildOrders() v0.1.0~
注文の一覧を取得 GET /v1/me/getchildorders meGetChildOrders() v0.1.0~
親注文の一覧を取得 GET /v1/me/getparentorders - ×
親注文の詳細を取得 GET /v1/me/getparentorder - ×
約定の一覧を取得 GET /v1/me/getexecutions meGetExecutions() v0.1.0~
建玉の一覧を取得 GET /v1/me/getpositions meGetPositions() v0.1.0~
取引手数料を取得 GET /v1/me/gettradingcommission meGetPositions() v0.1.0~

引数の詳細についてはAPIドキュメントを参照してください。

特殊注文系は未対応ですが、希望が多ければ対応するかもしれません。
寄付もお待ちています!

Bitcoin: 3HCw9pp6dSq1xU9iPoPKVFyVbM8iBrrinn

※バージョンアップ情報

日付 バージョン 内容
2018/2/20 v0.2.0 「板の状態」API(/v1/getboardstate)を追加
「出金」API(/v1/me/withdraw)を削除
「出金履歴」API(/v1/me/getwithdrawals)を削除
2018/5/8 v0.3.0 PhitFlyerClientの一部のメソッドが返すデータをオブジェクトから配列に変更
2018/5/22 v0.4.0 インタフェース名変更・HTTP接続ライブラリをstk2k/net-driverに変更・PSR-3 Logger対応