laravel-bitunix-api/README.md

4.3 KiB

Laravel Bitunix API Package

A Laravel package for interacting with the Bitunix cryptocurrency exchange API.

Installation

composer require msr/laravel-bitunix-api

Configuration

1. Environment Variables

Add the following variables to your .env file:

BITUNIX_API_KEY=your-api-key-here
BITUNIX_API_SECRET=your-api-secret-here
BITUNIX_LANGUAGE=en-US

2. Publish Configuration (Optional)

php artisan vendor:publish --tag=bitunix-api-config

3. Verify Configuration

Run the configuration check script:

php scripts/check-config.php

Usage

Change Leverage

use Msr\LaravelBitunixApi\Requests\ChangeLeverageRequestContract;

$api = app(ChangeLeverageRequestContract::class);
$response = $api->changeLeverage('BTCUSDT', 'USDT', 12);

if ($response->getStatusCode() === 200) {
    $data = json_decode($response->getBody()->getContents(), true);
    if ($data['code'] === 0) {
        echo "Leverage changed successfully!";
    }
}

Change Margin Mode

use Msr\LaravelBitunixApi\Requests\ChangeMarginModeRequestContract;

$api = app(ChangeMarginModeRequestContract::class);
$response = $api->changeMarginMode('BTCUSDT', 'USDT', 'ISOLATION');

if ($response->getStatusCode() === 200) {
    $data = json_decode($response->getBody()->getContents(), true);
    if ($data['code'] === 0) {
        echo "Margin mode changed successfully!";
    }
}

Get Future Kline Data

use Msr\LaravelBitunixApi\Requests\FutureKLineRequestContract;

$api = app(FutureKLineRequestContract::class);
$response = $api->getFutureKline('BTCUSDT', '1h', 100);

if ($response->getStatusCode() === 200) {
    $data = json_decode($response->getBody()->getContents(), true);
    // Process kline data
}

API Methods

Account Management

  • changeLeverage(string $symbol, string $marginCoin, int $leverage) - Change leverage
  • changeMarginMode(string $symbol, string $marginCoin, string $marginMode) - Change margin mode

Market Data

  • getFutureKline(string $symbol, string $interval, int $limit, ?int $startTime, ?int $endTime, string $type) - Get kline data

Configuration Options

Option Description Default
future_base_uri Bitunix API base URI https://fapi.bitunix.com/
api_key Your API key From BITUNIX_API_KEY env var
api_secret Your API secret From BITUNIX_API_SECRET env var
language API language From BITUNIX_LANGUAGE env var or en-US

Rate Limits

  • Change Leverage: 10 req/sec/uid
  • Change Margin Mode: 10 req/sec/uid

Error Handling

All methods return a ResponseInterface object. Check the response status and parse the JSON response:

$response = $api->changeLeverage('BTCUSDT', 'USDT', 12);

if ($response->getStatusCode() === 200) {
    $data = json_decode($response->getBody()->getContents(), true);
    
    if ($data['code'] === 0) {
        // Success
        echo "Operation successful: " . $data['msg'];
    } else {
        // API Error
        echo "API Error: " . $data['msg'];
    }
} else {
    // HTTP Error
    echo "HTTP Error: " . $response->getStatusCode();
}

Testing

Run the test suite:

vendor/bin/pest

Run specific tests:

vendor/bin/pest tests/ChangeLeverageTest.php
vendor/bin/pest tests/ChangeMarginModeTest.php
vendor/bin/pest tests/HeaderTest.php

Examples

See the examples/ directory for complete usage examples:

  • ChangeLeverageExample.php
  • ChangeMarginModeExample.php

Troubleshooting

API credentials not loading from .env

  1. Make sure your .env file is in the project root
  2. Check that the variable names match exactly (case-sensitive)
  3. Restart your application/server after changing .env
  4. Clear config cache: php artisan config:clear

Signature generation fails

  1. Verify API key and secret are correct
  2. Check that the credentials have the necessary permissions
  3. Ensure your system time is synchronized

Security

  • Never commit API credentials to version control
  • Use environment variables for all sensitive data
  • Restrict API key permissions to minimum required
  • Regularly rotate API keys

License

MIT License. See LICENSE file for details.

Support

For issues and questions, please create an issue on the GitHub repository.