Exchange & Orders (Binance)
Dokumentasi untuk endpoint market data dan order/trading yang memakai integrasi Binance Spot.
Semua response mengikuti envelope di docs/bitwewe/api-conventions.
Market data (publik)
API v1 (prefix /api/exchange/binance/)
| Method | Path | Controller@method | Catatan |
|---|---|---|---|
| GET | /api/exchange/binance/exchangeInfo | BinanceSpotController@exchangeInformation | |
| GET | /api/exchange/binance/config | BinanceSpotController@config | |
| GET | /api/exchange/binance/time | BinanceSpotController@time | |
| GET | /api/exchange/binance/symbols | BinanceSpotController@symbols | |
| GET | /api/exchange/binance/history | BinanceSpotController@candlestickData | |
| POST | /api/exchange/binance/testOrder | BinanceSpotController@testNewOrder |
Payload untuk sebagian endpoint market data divalidasi oleh request class spesifik (mis.
BinanceCandlestickRequest,BinanceGetSymbolsRequest). Jika diperlukan, kita dokumentasikan per endpoint dari file request tersebut.
Trading (protected)
API v1 (auth.xtoken)
Base: /api/exchange/binance/* di dalam grup auth.xtoken, verified:api.
| Method | Path | Controller@method |
|---|---|---|
| GET | /api/exchange/binance/historyTrade | OrderController@historyTrades |
| GET | /api/exchange/binance/historyOrder | OrderController@historyOrders |
| GET | /api/exchange/binance/currentOrder | OrderController@currentOrders |
| POST | /api/exchange/binance/order | OrderController@createOrder |
| DELETE | /api/exchange/binance/order/{orderNo} | OrderController@cancelOrder |
| POST | /api/exchange/binance/order/{exchangeOrderId}/{userId}/delete | OrderController@deleteOrder |
| DELETE | /api/exchange/binance/symbolOrders | OrderController@cancelSymbolOrders |
| DELETE | /api/exchange/binance/allOrders | OrderController@cancelAllOrders |
| GET | /api/exchange/binance/accountInfo | BinanceSpotController@accountInformation |
Create order
Route
- API v1:
POST /api/exchange/binance/order→Api\\OrderController@createOrder - Request validation:
App\\Http\\Requests\\Api\\BinanceCreateOrderRequest
Payload (JSON)
BinanceCreateOrderRequest memvalidasi berdasarkan type:
LIMIT
| Field | Tipe | Wajib |
|---|---|---|
side | string | Ya (BUY / SELL) |
type | string | Ya (LIMIT) |
txPair | string | Ya (contoh: BTCUSDT) |
volume | number | Ya |
price | number | Ya |
MARKET
| Field | Tipe | Wajib |
|---|---|---|
side | string | Ya |
type | string | Ya (MARKET) |
txPair | string | Ya |
volume | number | Ya |
Contoh LIMIT:
{
"side": "BUY",
"type": "LIMIT",
"txPair": "BTCUSDT",
"volume": 0.01,
"price": 65000
}
Proses server (highlight)
Berdasarkan controller OrderController@createOrder:
- Memverifikasi status user (
$user->verifyStatus()). - Memastikan trading pair ada dan aktif (
TxPair). - Menghitung amount/volume/price final (
TOrder::computeOrderPriceVolumeAmount). - Memastikan saldo user cukup (
UserBalance::checkSufficientUserCoinBalance). - Memanggil Binance untuk create order (
BinanceSpotController->createOrder). - Menyimpan order ke tabel
t_orderdan mengunci saldo (freeze).
Khusus v1 ada validasi tambahan untuk LIMIT price vs market price (mengambil market dari getBitweweDataSocket()):
- LIMIT BUY: input price tidak boleh lebih tinggi dari market
- LIMIT SELL: input price tidak boleh lebih rendah dari market
Response sukses (200)
Mengembalikan data berupa JSON string berisi ringkasan order:
{
"code": 200,
"title": "OK",
"message": "api.order_create_success",
"result": true,
"data": "{\"order_no\":\"...\",\"status\":\"CREATE\"}"
}
Catatan:
datapada implementasi ini adalah string JSON (json_encode($response)), bukan object JSON langsung.
Response gagal (contoh)
| Kondisi | HTTP | message |
|---|---|---|
| Market price tidak tersedia (v1) | 400 | api.market_price_unavailable |
| LIMIT BUY price terlalu tinggi (v1) | 400 | api.limit_buy_price_too_high |
| LIMIT SELL price terlalu rendah (v1) | 400 | api.limit_sell_price_too_low |
| Pair tidak ada / nonaktif | 400 | api.trading_pair_does_not_exist |
| Saldo tidak cukup | 400 | api.order_insufficient_funds |
Cancel order
Route
- API v1:
DELETE /api/exchange/binance/order/{orderNo}→Api\\OrderController@cancelOrder
Payload
Tidak ada payload body; orderNo dari path param.
Response sukses (200)
{
"code": 200,
"title": "OK",
"message": "api.order_cancel_success",
"result": true
}
Response gagal (contoh)
| Kondisi | HTTP | message |
|---|---|---|
| Order tidak ditemukan | 400 | api.order_does_not_exist |
| Order sudah DONE | 400 | api.order_status_completed |
| Order sudah CANCEL | 400 | api.order_status_canceled |
| Cancel ke Binance gagal | 400 | api.order_cancel_fail / order_cancel_fail |
Cancel symbol orders
Route
- API v1:
DELETE /api/exchange/binance/symbolOrders→cancelSymbolOrders - Request validation:
BinanceCancelSymbolOrdersRequest
Payload (JSON)
{ "txPair": "BTCUSDT" }
Response sukses (200)
{
"code": 200,
"title": "OK",
"message": "api.order_all_cancel_success",
"result": true
}
Payload create order sama dengan BinanceCreateOrderRequest.