Bitso's official Java wrapper to interact with the Bitso REST API v3.
You can add this library as a dependency to your Maven or Gradle project through JitPack
Add the JitPack repository to your build file
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
Add the dependency
<dependency>
<groupId>com.github.bitsoex</groupId>
<artifactId>bitso-java</artifactId>
<version>4.1.0</version>
</dependency>
On Android Studio find build.gradle file Gradle Scripts -> build.gradle(Project: <your_app_name>)
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}On Android Studio find build.gradle file Gradle Scripts -> build.gradle(Module: app). Add gradle dependency for bitso-java api on the dependencies block.
dependencies {
implementation 'com.android.support:appcompat-v7:24.2.1'...
implementation 'com.github.bitsoex:bitso-java:4.1.0'
}Start by enabling an API Key on your account
Next, build an instance of the client by passing your API Key, and Secret to a Bitso object.
importcom.bitso.Bitso;
Bitsobitso = newBitso(System.getenv("BITSO_API_KEY"), System.getenv("BITSO_API_SECRET"));Notice here that we did not hard code the API keys into our codebase, but set them in environment variables instead. This is just one example, but keeping your credentials separate from your code base is a good security practice.
BitsoBalancebitsoBalance = bitso.getAccountBalance();
HashMap<String, BitsoBalance.Balance> balances = bitsoBalance.getBalances();
System.out.println(balances.get("mxn"));
System.out.println(balances.get("eth"));
System.out.println(balances.get("btc"));
System.out.println(balances.get("xrp"));
System.out.println(balances.get("bch"));BookInfo[] availableBooks = bitso.getAvailableBooks();
for (BookInfobookInfo : availableBooks) {
System.out.println(bookInfo);
}BitsoTicker[] tickers = bitso.getTicker();
for (Tickerticker : tickers) {
System.out.println(ticker);
}BitsoAccountStatusbitsoAccountStatus = bitso.getAccountStatus();
System.out.println(bitsoAccountStatus);BitsoFeebitsoFee = bitso.getFees();
HashMap<String, Fee> tradeFees = bitsoFee.getTradeFees();
System.out.println(tradeFees.get("eth_mxn"));
System.out.println(tradeFees.get("btc_mxn"));
System.out.println(tradeFees.get("xrp_mxn"));
System.out.println(tradeFees.get("bch_btc"));
System.out.println(tradeFees.get("xrp_btc"));
System.out.println(tradeFees.get("eth_btc"));
HashMap<String, String> withdrawalFees = bitsoFee.getWithdrawalFees();
System.out.println("BTC fee: " + withdrawalFees.get("btc"));
System.out.println("ETH fee: " + withdrawalFees.get("eth"));BitsoOperation[] defaultLedger = bitso.getLedger("");
for (BitsoOperationbitsoOperation : defaultLedger) {
System.out.println(bitsoOperation);
}String[] operations = { "trades", "fees", "fundings", "withdrawals" };
for (StringoperationType : operations) {
BitsoOperation[] specificLedger = bitso.getLedger(operationType);
for (BitsoOperationbitsoOperation : specificLedger) {
System.out.println(bitsoOperation);
}
}Stringaddress = "31yTCKDHTqNXF5eZcsddJDe76BzBh8pVLb";
BigDecimalamount = newBigDecimal("1.00");
booleansaveAccount = false;
BitsoWithdrawalbtcWithdrawal = bitso.bitcoinWithdrawal(amount, address, saveAccount);
// Save/update an account with an aliassaveAccount = true;
BitsoWithdrawalbtcWithdrawalAlias = bitso.bitcoinWithdrawal(amount, address, saveAccount, "new alias");Stringaddress = "0xc83adea9e8fea3797139942a5939b961f67abfb8";
BigDecimalamount = newBigDecimal("1.00");
booleansaveAccount = false;
BitsoWithdrawalethWithdrawal = bitso.etherWithdrawal(amount, address, saveAccount);
// Save/update an account with an aliassaveAccount = true;
BitsoWithdrawalethWithdrawalAlias = bitso.etherWithdrawal(amount, address, saveAccount, "new Alias");StringbuyOrderId = bitso.placeOrder("btc_mxn", BitsoOrder.SIDE.BUY, BitsoOrder.TYPE.LIMIT,
newBigDecimal("0.1"), null, newBigDecimal("90000"));
StringsellOrderId = bitso.placeOrder("btc_mxn", BitsoOrder.SIDE.SELL, BitsoOrder.TYPE.LIMIT,
newBigDecimal("0.00016"), null, newBigDecimal("150000"));
StringcanceledOrders[] = bitso.cancelOrder(buyOrderId, sellOrderId);Major denotes the cryptocurrency, in our case Bitcoin (BTC).
Minor denotes fiat currencies such as Mexican Peso (MXN), etc
An order book is always referred to in the API as "Major_Minor". For example: "btc_mxn"
This artifact relies on the JDK BigDecimal class for arithmetic to maintain decimal precision for all values returned.
When working with currency values in your application, it's important to remember that floating point arithmetic is prone to rounding errors. We recommend you always use BigDecimal.
Tests for this library can run against the actual server or using mocked responses.
Server responses are mocked using the mockito framework.
To run mocked tests, use the following command:
mvn -Dtest=**/BitsoMockTest.java testTo run many of these tests against the server, you will need to identify using an API Keey/Secret. Refer to the "HMAC Authentication section" for more information.
To run tests against the server, use the following command:
mvn -Dtest=**/BitsoServerTest.java testKeep in mind that a couple of environment variables are required to run the tests against the server:
- BITSO_DEV_PUBLIC_KEY
- BITSO_DEV_PRIVATE
Although we highly recommend you stick to our APIv3 Wrapper, you can access our APIv2 Wrapper here.