17
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-07-19

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 git@github.com:stk2k/phitflyer.git

使い方

APIキーの生成

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

1b8d57c6c2a96edbd27645396e0adac2.png

間違って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キーで何ができるかを表していて、開発者ページで設定することができます。

83b206de95308ae7dcebdcccafb53fb8.png

当然ですがこの画面でチェックがついていない機能を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対応
17
9
15

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?