diff --git a/huobi_contract_Java.iml b/huobi_contract_Java.iml
index 5e405d8..c068425 100644
--- a/huobi_contract_Java.iml
+++ b/huobi_contract_Java.iml
@@ -73,4 +73,7 @@
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/huobi/api/response/usdt/market/SwapQueryElementsResponse.java b/src/main/java/com/huobi/api/response/usdt/market/SwapQueryElementsResponse.java
index e1ca41f..171eb23 100644
--- a/src/main/java/com/huobi/api/response/usdt/market/SwapQueryElementsResponse.java
+++ b/src/main/java/com/huobi/api/response/usdt/market/SwapQueryElementsResponse.java
@@ -1,7 +1,7 @@
package com.huobi.api.response.usdt.market;
import com.google.gson.annotations.SerializedName;
-import com.sun.deploy.security.WSecureRandom;
+
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
diff --git a/src/main/java/com/huobi/api/service/coin_futures/account/AccountAPIServiceImpl.java b/src/main/java/com/huobi/api/service/coin_futures/account/AccountAPIServiceImpl.java
index 14604d1..8d8a799 100644
--- a/src/main/java/com/huobi/api/service/coin_futures/account/AccountAPIServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/coin_futures/account/AccountAPIServiceImpl.java
@@ -15,11 +15,17 @@
import java.util.HashMap;
import java.util.Map;
+
public class AccountAPIServiceImpl implements AccountAPIService {
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+// 这里的sign代表着是使用hmac256签名方法还是Ed25519签名方法。这里的key和secret代表了公钥和私钥。也就是hmac签名里面的accesskey和secretkey。在ed25519签名就是publickey和privatekey
+// The sign indicates whether to use the hmac256 signature method or the Ed25519 signature method.Here key and secret stand for public and private keys. The accesskey and secretkey in the hmac signature. In ed25519, signatures are PublicKeys and privateKeys
+
+ String sign = "256";
String url_prex = "https://api.hbdm.com";
+
Logger logger = LoggerFactory.getLogger(getClass());
public AccountAPIServiceImpl(String api_key, String secret_key) {
@@ -27,7 +33,6 @@ public AccountAPIServiceImpl(String api_key, String secret_key) {
this.secret_key = secret_key;
}
-
@Override
public ContractAccountInfoResponse getContractAccountInfo(String symbol) {
String body;
@@ -36,7 +41,7 @@ public ContractAccountInfoResponse getContractAccountInfo(String symbol) {
if (StringUtils.isNotEmpty(symbol)) {
params.put("symbol", symbol.toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_ACCOUNT_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_ACCOUNT_INFO, params,sign);
ContractAccountInfoResponse response = JSON.parseObject(body, ContractAccountInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -56,7 +61,7 @@ public ContractPositionInfoResponse getContractPositionInfo(String symbol) {
if (StringUtils.isNotEmpty(symbol)) {
params.put("symbol", symbol.toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_POSITION_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_POSITION_INFO, params,sign);
ContractPositionInfoResponse response = JSON.parseObject(body, ContractPositionInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -82,7 +87,7 @@ public ContractSubAccountListResponse getContractSubAccountList(String symbol, S
if (fromId != null) {
params.put("from_id", fromId);
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_SUB_ACCOUNT_LIST, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_SUB_ACCOUNT_LIST, params,sign);
ContractSubAccountListResponse response = JSON.parseObject(body, ContractSubAccountListResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -103,7 +108,7 @@ public ContractSubAccountInfoResponse getContractSubAccountInfo(String symbol, L
params.put("symbol", symbol.toUpperCase());
}
params.put("sub_uid", subUid);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_SUB_ACCOUNT_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_SUB_ACCOUNT_INFO, params,sign);
ContractSubAccountInfoResponse response = JSON.parseObject(body, ContractSubAccountInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -124,7 +129,7 @@ public ContractSubPositionInfoResponse getContractSubPositionInfo(String symbol,
params.put("symbol", symbol.toUpperCase());
}
params.put("sub_uid", subUid);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_SUB_POSITION_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_SUB_POSITION_INFO, params,sign);
ContractSubPositionInfoResponse response = JSON.parseObject(body, ContractSubPositionInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -145,7 +150,7 @@ public ContractOrderLimitResponse getContractOrderLimitResponse(String symbol, S
params.put("symbol", symbol.toUpperCase());
}
params.put("order_price_type", orderPriceType);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_ORDER_LIMIT, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_ORDER_LIMIT, params,sign);
ContractOrderLimitResponse response = JSON.parseObject(body, ContractOrderLimitResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -165,7 +170,7 @@ public ContractFeeResponse getContractFeeResponse(String symbol) {
if (StringUtils.isNotEmpty(symbol)) {
params.put("symbol", symbol.toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_FEE, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_FEE, params,sign);
ContractFeeResponse response = JSON.parseObject(body, ContractFeeResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -185,7 +190,7 @@ public ContractTransferLimitResponse getContractTransferLimitResponse(String sym
if (StringUtils.isNotEmpty(symbol)) {
params.put("symbol", symbol.toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_TRANSFER_LIMIT, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_TRANSFER_LIMIT, params,sign);
ContractTransferLimitResponse response = JSON.parseObject(body, ContractTransferLimitResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -205,7 +210,7 @@ public ContractPositionLimitResponse getContractPositionLimitResponse(String sym
if (StringUtils.isNotEmpty(symbol)) {
params.put("symbol", symbol.toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_POSITION_LIMIT, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_POSITION_LIMIT, params,sign);
ContractPositionLimitResponse response = JSON.parseObject(body, ContractPositionLimitResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -227,7 +232,7 @@ public ContractMasterSubTransferResponse getContractMasterSubTransfer(ContractMa
params.put("amount", request.getAmount());
params.put("type", request.getType());
params.put("client_order_id", request.getClientOrderId());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_MASTER_SUB_TRANSFER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_MASTER_SUB_TRANSFER, params,sign);
ContractMasterSubTransferResponse response = JSON.parseObject(body, ContractMasterSubTransferResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -245,7 +250,7 @@ public ContractAccountPositionInfoResponse getContractAccountPositionInfo(String
try {
Map params = new HashMap<>();
params.put("symbol", symbol.toUpperCase());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_ACCOUNT_POSITION_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_ACCOUNT_POSITION_INFO, params,sign);
ContractAccountPositionInfoResponse response = JSON.parseObject(body, ContractAccountPositionInfoResponse.class);
logger.debug("body:{}", body);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -275,7 +280,7 @@ public ContractUserSettlementRecordsResponse getContractUserSettlementRecords(Co
if (request.getPageSize() != null) {
params.put("page_size", request.getPageSize());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_USER_SETTLEMENT_RECORDS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_USER_SETTLEMENT_RECORDS, params,sign);
ContractUserSettlementRecordsResponse response = JSON.parseObject(body, ContractUserSettlementRecordsResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -303,7 +308,7 @@ public ContractMasterSubTransferRecordResponse getContractMasterSubTransferRecor
if (request.getPageSize() != null) {
params.put("page_size", request.getPageSize());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_MASTER_SUB_TRANSFER_RECORD, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_MASTER_SUB_TRANSFER_RECORD, params,sign);
ContractMasterSubTransferRecordResponse response = JSON.parseObject(body, ContractMasterSubTransferRecordResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -337,7 +342,7 @@ public ContractAvailableLevelRateResponse getContractAvailableLevelRate(String s
try {
Map params = new HashMap<>();
params.put("symbol", symbol.toUpperCase());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_AVAILABLE_LEVEL_RATE, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_AVAILABLE_LEVEL_RATE, params,sign);
ContractAvailableLevelRateResponse response = JSON.parseObject(body, ContractAvailableLevelRateResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -355,7 +360,7 @@ public ContractSubAuthResponse getContractSubAuth(String subUid, Integer subAuth
Map params = new HashMap<>();
params.put("sub_uid", subUid);
params.put("sub_auth",subAuth);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_SUB_AUTH, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_SUB_AUTH, params,sign);
logger.debug("body:{}",body);
ContractSubAuthResponse response = JSON.parseObject(body, ContractSubAuthResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -381,7 +386,7 @@ public ContractSubAccountInfoListResponse getContractSubAccountInfoList(Contract
if (request.getPageSize()!=null){
params.put("page_size",request.getPageSize());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_SUB_ACCOUNT_INFO_LIST, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_SUB_ACCOUNT_INFO_LIST, params,sign);
logger.debug("body:{}",body);
ContractSubAccountInfoListResponse response = JSON.parseObject(body, ContractSubAccountInfoListResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -401,7 +406,7 @@ public ContractBalanceValuationResponse getContractBalanceValuation(String Valua
if (StringUtils.isNotEmpty(ValuationAsset)){
params.put("valuation_asset",ValuationAsset.toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_BALANCE_VALUATION, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_BALANCE_VALUATION, params,sign);
logger.debug("body:{}",body);
ContractBalanceValuationResponse response = JSON.parseObject(body, ContractBalanceValuationResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -436,7 +441,7 @@ public ContractFinancialRecordV3Response getContractFinancialRecordV3(ContractFi
if (StringUtils.isNotEmpty(request.getSymbol())) {
params.put("symbol", request.getSymbol());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_FINANCIAL_RECORD_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_FINANCIAL_RECORD_V3, params,sign);
logger.debug("body:{}",body);
ContractFinancialRecordV3Response response = JSON.parseObject(body, ContractFinancialRecordV3Response.class);
if (response.getCode() != null && response.getCode() == 200) {
@@ -471,7 +476,7 @@ public ContractFinancialRecordExactV3Response getContractFinancialRecordExactV3(
if (StringUtils.isNotEmpty(request.getSymbol())) {
params.put("symbol", request.getSymbol());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_FINANCIAL_RECORD_EXACT_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_FINANCIAL_RECORD_EXACT_V3, params,sign);
logger.debug("body:{}",body);
ContractFinancialRecordExactV3Response response = JSON.parseObject(body, ContractFinancialRecordExactV3Response.class);
if (response.getCode() != null && response.getCode() == 200) {
diff --git a/src/main/java/com/huobi/api/service/coin_futures/strategy/StrategyAPIServiceImpl.java b/src/main/java/com/huobi/api/service/coin_futures/strategy/StrategyAPIServiceImpl.java
index 85ce965..270094a 100644
--- a/src/main/java/com/huobi/api/service/coin_futures/strategy/StrategyAPIServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/coin_futures/strategy/StrategyAPIServiceImpl.java
@@ -17,6 +17,7 @@
public class StrategyAPIServiceImpl implements StrategyAPIService{
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+ String sign = "";
String url_prex = "https://api.hbdm.com";
Logger logger = LoggerFactory.getLogger(getClass());
@@ -47,7 +48,7 @@ public ContractTriggerOrderResponse contractTriggerOrderRequest(ContractTriggerO
params.put("direction",request.getDirection().getValue());
params.put("offset",request.getOffset().getValue());
params.put("lever_rate",request.getLeverRate());
- body= HbdmHttpClient.getInstance().doPost(api_key,secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_TRIGGER_ORDER,params);
+ body= HbdmHttpClient.getInstance().doPost(api_key,secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_TRIGGER_ORDER,params,sign);
ContractTriggerOrderResponse response= JSON.parseObject(body,ContractTriggerOrderResponse.class);
if("ok".equalsIgnoreCase(response.getStatus())){
return response;
@@ -67,7 +68,7 @@ public ContractTriggerCancelResponse contractTriggerCancelRequest(ContractTrigge
params.put("symbol",request.getSymbol().toUpperCase());
}
params.put("order_id",request.getOrderId());
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRIGGER_CANCEL,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRIGGER_CANCEL,params,sign);
logger.debug("body:{}",body);
ContractTriggerCancelResponse response=JSON.parseObject(body,ContractTriggerCancelResponse.class);
if("ok".equalsIgnoreCase(response.getStatus())){
@@ -98,7 +99,7 @@ public ContractTriggerCancelallResponse contractTriggerCancelallRequest(Contract
if (request.getContractType()!=null) {
params.put("contract_type", request.getContractType());
}
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex+HuobiFutureAPIConstants.CONTRACT_TRIGGER_CANCELALL,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex+HuobiFutureAPIConstants.CONTRACT_TRIGGER_CANCELALL,params,sign);
ContractTriggerCancelallResponse response=JSON.parseObject(body,ContractTriggerCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
return response;
@@ -129,7 +130,7 @@ public ContractTriggerOpenordersResponse contractTriggerOpenordersRequest(Contra
if (request.getTrade_type()!=null){
params.put("trade_type",request.getTrade_type());
}
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRIGGER_OPENORDERS,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRIGGER_OPENORDERS,params,sign);
ContractTriggerOpenordersResponse response=JSON.parseObject(body,ContractTriggerOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
return response;
@@ -161,7 +162,7 @@ public ContractTriggerHisordersResponse contractTriggerHisorders(ContractTrigger
if (request.getSortBy()!=null){
params.put("sort_by",request.getSortBy());
}
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRIGGER_HISORDERS,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRIGGER_HISORDERS,params,sign);
ContractTriggerHisordersResponse response=JSON.parseObject(body,ContractTriggerHisordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
return response;
@@ -206,7 +207,7 @@ public ContractTpslOrderResponse contractTpslOrder(ContractTpslOrderRequest requ
if (request.getSlTriggerPrice()!=null && request.getSlTriggerPrice()!=BigDecimal.valueOf(0)){
params.put("sl_trigger_price",request.getSlTriggerPrice());
}
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TPSL_ORDER,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TPSL_ORDER,params,sign);
ContractTpslOrderResponse response=JSON.parseObject(body,ContractTpslOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
return response;
@@ -224,7 +225,7 @@ public ContractTpslCancelResponse contractTpslCancelResponse(ContractTpslCancelR
Map params=new HashMap<>();
params.put("symbol", request.getSymbol().toUpperCase());
params.put("order_id", request.getOrderId());
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TPSL_CANCEL,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TPSL_CANCEL,params,sign);
logger.debug("body:{}",body);
ContractTpslCancelResponse response=JSON.parseObject(body,ContractTpslCancelResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -253,7 +254,7 @@ public ContractTpslCancelallResponse contractTpslCancelallResponse(ContractTpslC
if (request.getDirection()!=null){
params.put("direction",request.getDirection());
}
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TPSL_CANCELALL,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TPSL_CANCELALL,params,sign);
logger.debug("body:{}",body);
ContractTpslCancelallResponse response=JSON.parseObject(body,ContractTpslCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -283,7 +284,7 @@ public ContractTpslOpenordersResponse contractTpslOpenordersResponse(ContractTps
if (request.getTrade_type()!=null){
params.put("trade_type",request.getTrade_type());
}
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TPSL_OPENORDERS,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TPSL_OPENORDERS,params,sign);
ContractTpslOpenordersResponse response=JSON.parseObject(body,ContractTpslOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
return response;
@@ -313,7 +314,7 @@ public ContractTpslHisordersResponse contractTpslHisordersResponse(ContractTpslH
if (request.getSortBy()!=null){
params.put("sort_by",request.getSortBy());
}
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TPSL_HISORDERS,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TPSL_HISORDERS,params,sign);
logger.debug("body:{}",body);
ContractTpslHisordersResponse response=JSON.parseObject(body,ContractTpslHisordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -332,7 +333,7 @@ public ContractRelationTpslOrderResponse contractRelationTpslOrderResponse(Contr
Map params=new HashMap<>();
params.put("symbol", request.getSymbol().toUpperCase());
params.put("order_id",request.getOrderId());
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_RELATION_TPSL_ORDER,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_RELATION_TPSL_ORDER,params,sign);
logger.debug("body:{}",body);
ContractRelationTpslOrderResponse response=JSON.parseObject(body,ContractRelationTpslOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -367,7 +368,7 @@ public ContractTrackOrderResponse contractTrackOrderResponse(ContractTrackOrderR
params.put("callback_rate",request.getCallbackRate());
params.put("active_price",request.getActivePrice());
params.put("order_price_type", request.getOrderPriceType());
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRACK_ORDER,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRACK_ORDER,params,sign);
logger.debug("body:{}",body);
ContractTrackOrderResponse response=JSON.parseObject(body,ContractTrackOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -386,7 +387,7 @@ public ContractTrackCancelResponse contractTrackCancelResponse(ContractTrackCanc
Map params=new HashMap<>();
params.put("symbol", request.getSymbol().toUpperCase());
params.put("order_id",request.getOrderId());
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRACK_CANCEL,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRACK_CANCEL,params,sign);
logger.debug("body:{}",body);
ContractTrackCancelResponse response=JSON.parseObject(body,ContractTrackCancelResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -416,7 +417,7 @@ public ContractTrackCancelallResponse contractTrackCancelallResponse(ContractTra
if (request.getOffset()!=null){
params.put("offset",request.getOffset());
}
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRACK_CANCELALL,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRACK_CANCELALL,params,sign);
logger.debug("body:{}",body);
ContractTrackCancelallResponse response=JSON.parseObject(body,ContractTrackCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -446,7 +447,7 @@ public ContractTrackOpenordersResponse contractTrackOpenordersResponse(ContractT
if (request.getPageSize()!=null){
params.put("page_size",request.getPageSize());
}
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRACK_OPENORDERS,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRACK_OPENORDERS,params,sign);
logger.debug("body:{}",body);
ContractTrackOpenordersResponse response=JSON.parseObject(body,ContractTrackOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -485,7 +486,7 @@ public ContractTrackHisordersResponse contractTrackHisordersResponse(ContractTra
if (request.getSortBy()!=null){
params.put("sort_by",request.getSortBy());
}
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRACK_HISORDERS,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_TRACK_HISORDERS,params,sign);
logger.debug("body:{}",body);
ContractTrackHisordersResponse response=JSON.parseObject(body,ContractTrackHisordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
diff --git a/src/main/java/com/huobi/api/service/coin_futures/trade/TradeAPIServiceImpl.java b/src/main/java/com/huobi/api/service/coin_futures/trade/TradeAPIServiceImpl.java
index 0998e8d..c27f71e 100644
--- a/src/main/java/com/huobi/api/service/coin_futures/trade/TradeAPIServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/coin_futures/trade/TradeAPIServiceImpl.java
@@ -23,6 +23,7 @@ public class TradeAPIServiceImpl implements TradeAPIService {
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+ String sign= "";
String url_prex = "https://api.hbdm.com";
Logger logger = LoggerFactory.getLogger(getClass());
@@ -75,7 +76,7 @@ public ContractOrderResponse contractOrderRequest(ContractOrderRequest request)
if (request.getSlOrderPriceType()!=null){
params.put("sl_order_price_type",request.getSlOrderPriceType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_ORDER, params,sign);
ContractOrderResponse response = JSON.parseObject(body, ContractOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -138,7 +139,7 @@ public ContractBatchorderResponse contractBatchorderRequest(ContractBatchorderRe
params.put("orders_data", listMap);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_BATCHORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_BATCHORDER, params,sign);
ContractBatchorderResponse response = JSON.parseObject(body, ContractBatchorderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -168,7 +169,7 @@ public ContractCancelResponse contractCancelRequest(ContractCancelRequest reques
params.put("client_order_id", request.getClientOrderId());
}
params.put("symbol", request.getSymbol().toUpperCase());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_CANCEL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_CANCEL, params,sign);
ContractCancelResponse response = JSON.parseObject(body, ContractCancelResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -205,7 +206,7 @@ public ContractCancelallResponse contractCancelallRequest(ContractCancelallReque
if (request.getOffset()!=null){
params.put("offset",request.getOffset());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_CANCELALL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_CANCELALL, params,sign);
ContractCancelallResponse response = JSON.parseObject(body, ContractCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -231,7 +232,7 @@ public ContractOrderInfoResponse contractOrderInfoRequest(ContractOrderInfoReque
if (request.getOrderId() != null) {
params.put("order_id", request.getOrderId());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_ORDER_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_ORDER_INFO, params,sign);
ContractOrderInfoResponse response = JSON.parseObject(body, ContractOrderInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -266,7 +267,7 @@ public ContractOrderDetailResponse contractOrderDetailRequest(ContractOrderDetai
if (request.getPageSize() != null) {
params.put("page_size", request.getPageSize());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_ORDER_DETAIL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_ORDER_DETAIL, params,sign);
ContractOrderDetailResponse response = JSON.parseObject(body, ContractOrderDetailResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -302,7 +303,7 @@ public ContractOpenordersResponse contractOpenordersRequest(ContractOpenordersRe
if (request.getTradeType()!=null){
params.put("trade_type",request.getTradeType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_OPENORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.CONTRACT_OPENORDERS, params,sign);
ContractOpenordersResponse response = JSON.parseObject(body, ContractOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -336,7 +337,7 @@ public LightningClosePositionResponse lightningClosePositionRequest(LightningClo
if (request.getOrderPriceType() != null) {
params.put("order_price_type", request.getOrderPriceType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.LIGHTNING_CLOSE_POSITION, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.LIGHTNING_CLOSE_POSITION, params,sign);
LightningClosePositionResponse response = JSON.parseObject(body, LightningClosePositionResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
return response;
@@ -355,7 +356,7 @@ public ContractSwitchLeverRateResponse contractSwitchLeverRateRequest(String sym
Map params=new HashMap<>();
params.put("symbol",symbol.toUpperCase());
params.put("lever_rate",leverRate);
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_SWITCH_LEVER_RATE,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_SWITCH_LEVER_RATE,params,sign);
logger.debug("body:{}",body);
ContractSwitchLeverRateResponse response=JSON.parseObject(body,ContractSwitchLeverRateResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -378,7 +379,7 @@ public ContractCancelAfterResponse contractCancelAfterResponse(ContractCancelAft
if (request.getTimeOut()!=null){
params.put("time_out",request.getTimeOut());
}
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_CANCEL_AFTER,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_CANCEL_AFTER,params,sign);
logger.debug("body:{}",body);
ContractCancelAfterResponse response=JSON.parseObject(body,ContractCancelAfterResponse.class);
if (response.getCode() != null && response.getCode() == 200){
@@ -428,7 +429,7 @@ public ContractHisordersV3Response contractHisordersV3Response(ContractHisorders
if (StringUtils.isNotEmpty(request.getSortBy())) {
params.put("sort_by", request.getSortBy());
}
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_HISORDERS_V3,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_HISORDERS_V3,params,sign);
logger.debug("body:{}",body);
ContractHisordersV3Response response=JSON.parseObject(body,ContractHisordersV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
@@ -475,7 +476,7 @@ public ContractHisordersExactV3Response contractHisordersExactV3Response(Contrac
if (StringUtils.isNotEmpty(request.getOrderType())) {
params.put("order_type", request.getOrderType());
}
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_HISORDERS_EXACT_V3,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_HISORDERS_EXACT_V3,params,sign);
logger.debug("body:{}",body);
ContractHisordersExactV3Response response=JSON.parseObject(body,ContractHisordersExactV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
@@ -510,7 +511,7 @@ public ContractMatchResultsV3Response contractMatchResultsV3Response(ContractMat
if (StringUtils.isNotEmpty(request.getSymbol())) {
params.put("symbol", request.getSymbol());
}
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_MATCHRESULTS_V3,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_MATCHRESULTS_V3,params,sign);
logger.debug("body:{}",body);
ContractMatchResultsV3Response response=JSON.parseObject(body,ContractMatchResultsV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
@@ -548,7 +549,7 @@ public ContractMatchResultsExactV3Response contractMatchResultsExactV3Response(C
if (StringUtils.isNotEmpty(request.getContract())) {
params.put("contract", request.getContract().toUpperCase());
}
- body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_MATCHRESULTS_EXACT_V3,params);
+ body=HbdmHttpClient.getInstance().doPost(api_key,secret_key,url_prex + HuobiFutureAPIConstants.CONTRACT_MATCHRESULTS_EXACT_V3,params,sign);
logger.debug("body:{}",body);
ContractMatchResultsExactV3Response response=JSON.parseObject(body,ContractMatchResultsExactV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
diff --git a/src/main/java/com/huobi/api/service/coin_futures/transfer/TransferApiServiceImpl.java b/src/main/java/com/huobi/api/service/coin_futures/transfer/TransferApiServiceImpl.java
index 4086237..f63d761 100644
--- a/src/main/java/com/huobi/api/service/coin_futures/transfer/TransferApiServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/coin_futures/transfer/TransferApiServiceImpl.java
@@ -18,6 +18,7 @@ public class TransferApiServiceImpl implements TransferApiService {
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+ String sign = "";
String url_prex = "https://api.huobi.pro";
public TransferApiServiceImpl(String api_key, String secret_key) {
@@ -40,7 +41,7 @@ public FuturesTransferResponse transfer(String currency, BigDecimal amount, Stri
params.put("currency", currency.toLowerCase());
params.put("amount", amount);
params.put("type", type);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.FUTURES_TRANSFER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.FUTURES_TRANSFER, params,sign);
FuturesTransferResponse response = JSON.parseObject(body, FuturesTransferResponse.class);
return response;
@@ -69,7 +70,7 @@ public AccountTransferResponse accountTransfer(AccountTransferRequest request) {
if (StringUtils.isNotEmpty(request.getMarginAccount())) {
params.put("margin-account", request.getMarginAccount());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.ACCOUNT_TRANSFER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiFutureAPIConstants.ACCOUNT_TRANSFER, params,sign);
AccountTransferResponse response = JSON.parseObject(body, AccountTransferResponse.class);
return response;
diff --git a/src/main/java/com/huobi/api/service/coin_swap/account/AccountAPIServiceImpl.java b/src/main/java/com/huobi/api/service/coin_swap/account/AccountAPIServiceImpl.java
index 7cb3f41..fb6fa91 100644
--- a/src/main/java/com/huobi/api/service/coin_swap/account/AccountAPIServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/coin_swap/account/AccountAPIServiceImpl.java
@@ -19,6 +19,7 @@ public class AccountAPIServiceImpl implements AccountAPIService {
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+ String sign = "";
String url_prex = "https://api.hbdm.com";
Logger logger = LoggerFactory.getLogger(getClass());
@@ -37,7 +38,7 @@ public SwapAccountInfoResponse getSwapAccountInfo(String contractCode) {
if (StringUtils.isNotEmpty(contractCode)) {
params.put("contract_code", contractCode.toUpperCase().toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_ACCOUNT_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_ACCOUNT_INFO, params,sign);
logger.debug("body:{}", body);
SwapAccountInfoResponse response = JSON.parseObject(body, SwapAccountInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -58,7 +59,7 @@ public SwapPositionInfoResponse getSwapPositionInfo(String contractCode) {
if (StringUtils.isNotEmpty(contractCode)) {
params.put("contract_code", contractCode.toUpperCase().toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_POSITION_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_POSITION_INFO, params,sign);
logger.debug("body:{}", body);
SwapPositionInfoResponse response = JSON.parseObject(body, SwapPositionInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -77,7 +78,7 @@ public SwapAccountPositionInfoResponse getSwapAccountPositionInfo(String contrac
try {
Map params = new HashMap<>();
params.put("contract_code", contractCode.toUpperCase().toUpperCase());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_ACCOUNT_POSITION_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_ACCOUNT_POSITION_INFO, params,sign);
logger.debug("body:{}", body);
SwapAccountPositionInfoResponse response = JSON.parseObject(body, SwapAccountPositionInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -104,7 +105,7 @@ public SwapSubAccountListResponse getSwapSubAccountList(String contractCode, Str
if (fromId != null) {
params.put("from_id", fromId);
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_SUB_ACCOUNT_LIST, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_SUB_ACCOUNT_LIST, params,sign);
logger.debug("body:{}", body);
SwapSubAccountListResponse response = JSON.parseObject(body, SwapSubAccountListResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -126,7 +127,7 @@ public SwapSubAccountInfoResponse getSwapSubAccountInfo(String contractCode, Lon
params.put("contract_code", contractCode.toUpperCase().toUpperCase());
}
params.put("sub_uid", subUid);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_SUB_ACCOUNT_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_SUB_ACCOUNT_INFO, params,sign);
logger.debug("body:{}", body);
SwapSubAccountInfoResponse response = JSON.parseObject(body, SwapSubAccountInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -148,7 +149,7 @@ public SwapSubPositionInfoResponse getSwapSubPositionInfo(String contractCode, L
params.put("contract_code", contractCode.toUpperCase().toUpperCase());
}
params.put("sub_uid", subUid);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_SUB_POSITION_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_SUB_POSITION_INFO, params,sign);
logger.debug("body:{}", body);
SwapSubPositionInfoResponse response = JSON.parseObject(body, SwapSubPositionInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -170,7 +171,7 @@ public SwapOrderLimitResponse getSwapOrderLimitResponse(String contractCode, Str
params.put("contract_code", contractCode.toUpperCase());
}
params.put("order_price_type", orderPriceType);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_ORDER_LIMIT, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_ORDER_LIMIT, params,sign);
logger.debug("body:{}", body);
SwapOrderLimitResponse response = JSON.parseObject(body, SwapOrderLimitResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -191,7 +192,7 @@ public SwapFeeResponse getSwapFeeResponse(String contractCode) {
if (StringUtils.isNoneEmpty(contractCode)) {
params.put("contract_code", contractCode.toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_FEE, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_FEE, params,sign);
logger.debug("body:{}", body);
SwapFeeResponse response = JSON.parseObject(body, SwapFeeResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -212,7 +213,7 @@ public SwapTransferLimitResponse getSwapTransferLimitResponse(String contractCod
if (StringUtils.isNoneEmpty(contractCode)) {
params.put("contract_code", contractCode.toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRANSFER_LIMIT, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRANSFER_LIMIT, params,sign);
logger.debug("body:{}", body);
SwapTransferLimitResponse response = JSON.parseObject(body, SwapTransferLimitResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -233,7 +234,7 @@ public SwapPositionLimitResponse getSwapPositionLimitResponse(String contractCod
if (StringUtils.isNoneEmpty(contractCode)) {
params.put("contract_code", contractCode.toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_POSITION_LIMIT, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_POSITION_LIMIT, params,sign);
logger.debug("body:{}", body);
SwapPositionLimitResponse response = JSON.parseObject(body, SwapPositionLimitResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -256,7 +257,7 @@ public SwapMasterSubTransferResponse getSwapMasterSubTransferResponse(SwapMaster
params.put("amount", request.getAmount());
params.put("type", request.getType());
params.put("client_order_id", request.getClientOrderId());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_MASTER_SUB_TRANSFER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_MASTER_SUB_TRANSFER, params,sign);
logger.debug("body:{}", body);
SwapMasterSubTransferResponse response = JSON.parseObject(body, SwapMasterSubTransferResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -285,7 +286,7 @@ public SwapMasterSubTransferRecordResponse getSwapMasterSubTransferRecordRespons
if (request.getPageSize() != null) {
params.put("page_size", request.getPageSize());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_MASTER_SUB_TRANSFER_RECORD, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_MASTER_SUB_TRANSFER_RECORD, params,sign);
logger.debug("body:{}", body);
SwapMasterSubTransferRecordResponse response = JSON.parseObject(body, SwapMasterSubTransferRecordResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -334,7 +335,7 @@ public SwapUserSettlementRecordsResponse getSwapUserSettlementRecords(SwapUserSe
if (request.getPageSize()!=null){
params.put("page_size",request.getPageSize());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_USER_SETTLEMENT_RECORDS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_USER_SETTLEMENT_RECORDS, params,sign);
logger.debug("body:{}", body);
SwapUserSettlementRecordsResponse response = JSON.parseObject(body, SwapUserSettlementRecordsResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -352,7 +353,7 @@ public SwapAvailableLevelRateResponse getSwapAvailableLevelRate(String contractC
try {
Map params = new HashMap<>();
params.put("contract_code", contractCode.toUpperCase());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_AVAILABLE_LEVEL_RATE, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_AVAILABLE_LEVEL_RATE, params,sign);
logger.debug("body:{}", body);
SwapAvailableLevelRateResponse response = JSON.parseObject(body, SwapAvailableLevelRateResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -371,7 +372,7 @@ public SwapSubAuthResponse getSwapSubAuth(String subUid, Integer subAuth) {
Map params = new HashMap<>();
params.put("sub_uid", subUid);
params.put("sub_auth", subAuth);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_SUB_AUTH, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_SUB_AUTH, params,sign);
logger.debug("body:{}", body);
SwapSubAuthResponse response = JSON.parseObject(body, SwapSubAuthResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -397,7 +398,7 @@ public SwapSubAccountInfoListResponse getSwapSubAccountInfoList(String contractC
if (pageSize!=null){
params.put("page_size",pageSize);
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_SUB_ACCOUNT_INFO_LIST, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_SUB_ACCOUNT_INFO_LIST, params,sign);
logger.debug("body:{}", body);
SwapSubAccountInfoListResponse response = JSON.parseObject(body, SwapSubAccountInfoListResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -417,7 +418,7 @@ public SwapBalanceValuationResponse getSwapBalanceValuation(String ValuationAsse
if (StringUtils.isNotEmpty(ValuationAsset)){
params.put("valuation_asset",ValuationAsset.toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_BALANCE_VALUATION, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_BALANCE_VALUATION, params,sign);
logger.debug("body:{}", body);
SwapBalanceValuationResponse response = JSON.parseObject(body, SwapBalanceValuationResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -452,7 +453,7 @@ public SwapFinancialRecordV3Response getSwapFinancialRecordV3(SwapFinancialRecor
if (request.getType() != null) {
params.put("type", request.getType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_FINANCIAL_RECORD_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_FINANCIAL_RECORD_V3, params,sign);
logger.debug("body:{}", body);
SwapFinancialRecordV3Response response = JSON.parseObject(body, SwapFinancialRecordV3Response.class);
if (response.getCode() != null && response.getCode() == 200) {
@@ -487,7 +488,7 @@ public SwapFinancialRecordExactV3Response getSwapFinancialRecordExactV3(SwapFina
if (request.getType() != null) {
params.put("type", request.getType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_FINANCIAL_RECORD_EXACT_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_FINANCIAL_RECORD_EXACT_V3, params,sign);
logger.debug("body:{}", body);
SwapFinancialRecordExactV3Response response = JSON.parseObject(body, SwapFinancialRecordExactV3Response.class);
if (response.getCode() != null && response.getCode() == 200) {
diff --git a/src/main/java/com/huobi/api/service/coin_swap/strategy/StrategyAPIServiceImpl.java b/src/main/java/com/huobi/api/service/coin_swap/strategy/StrategyAPIServiceImpl.java
index b0543f5..492c96f 100644
--- a/src/main/java/com/huobi/api/service/coin_swap/strategy/StrategyAPIServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/coin_swap/strategy/StrategyAPIServiceImpl.java
@@ -17,6 +17,7 @@
public class StrategyAPIServiceImpl implements StrategyAPIService{
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+ String sign = "";
String url_prex = "https://api.hbdm.com";
Logger logger = LoggerFactory.getLogger(getClass());
@@ -46,7 +47,7 @@ public SwapTriggerOrderResponse swapTriggerOrderResponse(SwapTriggerOrderRequest
if (request.getLeverRate() != null) {
params.put("lever_rate", request.getLeverRate());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRIGGER_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRIGGER_ORDER, params,sign);
logger.debug("body:{}", body);
SwapTriggerOrderResponse response = JSON.parseObject(body, SwapTriggerOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -65,7 +66,7 @@ public SwapTriggerCancelResponse swapTriggerCancelResponse(SwapTriggerCancelRequ
Map params = new HashMap<>();
params.put("contract_code", request.getContractCode().toUpperCase());
params.put("order_id", request.getOrderId());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRIGGER_CANCEL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRIGGER_CANCEL, params,sign);
logger.debug("body:{}", body);
SwapTriggerCancelResponse response = JSON.parseObject(body, SwapTriggerCancelResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -89,7 +90,7 @@ public SwapTriggerCancelallResponse swapTriggerCancelallResponse(SwapTriggerCanc
if (request.getOffset()!=null){
params.put("offset",request.getOffset());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRIGGER_CANCELALL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRIGGER_CANCELALL, params,sign);
logger.debug("body:{}", body);
SwapTriggerCancelallResponse response = JSON.parseObject(body, SwapTriggerCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -116,7 +117,7 @@ public SwapTriggerOpenordersResponse swapTriggerOpenordersResponse(SwapTriggerOp
if (request.getTradeType()!=null){
params.put("trade_type",request.getTradeType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRIGGER_OPENORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRIGGER_OPENORDERS, params,sign);
logger.debug("body:{}", body);
SwapTriggerOpenordersResponse response = JSON.parseObject(body, SwapTriggerOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -147,7 +148,7 @@ public SwapTriggerHisordersResponse swapTriggerHisordersResponse(SwapTriggerHiso
if (request.getSortBy()!=null){
params.put("sort_by",request.getSortBy());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRIGGER_HISORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRIGGER_HISORDERS, params,sign);
logger.debug("body:{}", body);
SwapTriggerHisordersResponse response = JSON.parseObject(body, SwapTriggerHisordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -185,7 +186,7 @@ public SwapTpslOrderResponse swapTpslOrderResponse(SwapTpslOrderRequest request)
if (request.getSlOrderPriceType()!=null){
params.put("sl_order_price_type",request.getSlOrderPriceType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TPSL_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TPSL_ORDER, params,sign);
logger.debug("body:{}", body);
SwapTpslOrderResponse response = JSON.parseObject(body, SwapTpslOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -204,7 +205,7 @@ public SwapTpslCancelResponse swapTpslCancelResponse(SwapTpslCancelRequest reque
try {
params.put("contract_code",request.getContractCode().toUpperCase());
params.put("order_id",request.getOrderId());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TPSL_CANCEL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TPSL_CANCEL, params,sign);
logger.debug("body:{}", body);
SwapTpslCancelResponse response = JSON.parseObject(body, SwapTpslCancelResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -225,7 +226,7 @@ public SwapTpslCancelallResponse swapTpslCancelallResponse(SwapTpslCancelallRequ
if (request.getDirection()!=null){
params.put("direction",request.getDirection());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TPSL_CANCELALL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TPSL_CANCELALL, params,sign);
logger.debug("body:{}", body);
SwapTpslCancelallResponse response = JSON.parseObject(body, SwapTpslCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -252,7 +253,7 @@ public SwapTpslOpenordersResponse swapTpslOpenordersResponse(SwapTpslOpenordersR
if (request.getTradeType()!=null){
params.put("trade_type",request.getTradeType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TPSL_OPENORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TPSL_OPENORDERS, params,sign);
logger.debug("body:{}", body);
SwapTpslOpenordersResponse response = JSON.parseObject(body, SwapTpslOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -281,7 +282,7 @@ public SwapTpslHisordersResponse swapTpslHisordersResponse(SwapTpslHisordersRequ
if (StringUtils.isNotEmpty(request.getSortBy())){
params.put("sort_by",request.getSortBy());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TPSL_HISORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TPSL_HISORDERS, params,sign);
logger.debug("body:{}", body);
SwapTpslHisordersResponse response = JSON.parseObject(body, SwapTpslHisordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -300,7 +301,7 @@ public SwapRelationTpslOrderResponse swapRelationTpslOrderResponse(SwapRelationT
try {
params.put("contract_code",request.getContractCode().toUpperCase());
params.put("order_id",request.getOrderId());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_RELATION_TPSL_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_RELATION_TPSL_ORDER, params,sign);
logger.debug("body:{}", body);
SwapRelationTpslOrderResponse response = JSON.parseObject(body, SwapRelationTpslOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -327,7 +328,7 @@ public SwapTrackOrderResponse swapTrackOrderResponse(SwapTrackOrderRequest reque
params.put("callback_rate", request.getCallbackRate());
params.put("active_price", request.getActivePrice());
params.put("order_price_type", request.getOrderPriceType());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRACK_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRACK_ORDER, params,sign);
logger.debug("body:{}", body);
SwapTrackOrderResponse response = JSON.parseObject(body, SwapTrackOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -346,7 +347,7 @@ public SwapTrackCancelResponse swapTrackCancelResponse(SwapTrackCancelRequest re
try {
params.put("contract_code", request.getContractCode().toUpperCase());
params.put("order_id", request.getOrderId());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRACK_CANCEL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRACK_CANCEL, params,sign);
logger.debug("body:{}", body);
SwapTrackCancelResponse response = JSON.parseObject(body, SwapTrackCancelResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -370,7 +371,7 @@ public SwapTrackCancelallResponse swapTrackCancelallResponse(SwapTrackCancelallR
if (request.getOffset()!=null) {
params.put("offset", request.getOffset());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRACK_CANCELALL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRACK_CANCELALL, params,sign);
logger.debug("body:{}", body);
SwapTrackCancelallResponse response = JSON.parseObject(body, SwapTrackCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -397,7 +398,7 @@ public SwapTrackOpenordersResponse swapTrackOpenordersResponse(SwapTrackOpenorde
if (request.getPageSize()!=null){
params.put("page_size",request.getPageSize());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRACK_OPENORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRACK_OPENORDERS, params,sign);
logger.debug("body:{}", body);
SwapTrackOpenordersResponse response = JSON.parseObject(body, SwapTrackOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -427,7 +428,7 @@ public SwapTrackHisordersResponse swapTrackHisordersResponse(SwapTrackHisordersR
if (request.getSortBy()!=null){
params.put("sort_by",request.getSortBy());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRACK_HISORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_TRACK_HISORDERS, params,sign);
logger.debug("body:{}", body);
SwapTrackHisordersResponse response = JSON.parseObject(body, SwapTrackHisordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
diff --git a/src/main/java/com/huobi/api/service/coin_swap/trade/TradeAPIServiceImpl.java b/src/main/java/com/huobi/api/service/coin_swap/trade/TradeAPIServiceImpl.java
index 151bce6..39c2320 100644
--- a/src/main/java/com/huobi/api/service/coin_swap/trade/TradeAPIServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/coin_swap/trade/TradeAPIServiceImpl.java
@@ -29,6 +29,7 @@ public class TradeAPIServiceImpl implements TradeAPIService {
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+ String sign = "";
String url_prex = "https://api.hbdm.com";
Logger logger = LoggerFactory.getLogger(getClass());
@@ -75,7 +76,7 @@ public SwapOrderResponse swapOrderRequest(SwapOrderRequest request) {
if (request.getSlOrderPriceType()!=null){
params.put("sl_order_price_type",request.getSlOrderPriceType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_ORDER, params,sign);
logger.debug("body:{}", body);
SwapOrderResponse response = JSON.parseObject(body, SwapOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -134,7 +135,7 @@ public SwapBatchorderResponse swapBatchorderRequest(SwapBatchorderRequest reques
params.put("orders_data", listMap);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_BATCHORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_BATCHORDER, params,sign);
logger.debug("body:{}", body);
SwapBatchorderResponse response = JSON.parseObject(body, SwapBatchorderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -162,7 +163,7 @@ public SwapCancelResponse swapCancelRequest(SwapCancelRequest request) {
params.put("client_order_id", request.getClientOrderId());
}
params.put("contract_code", request.getContractCode().toUpperCase());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_CANCEL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_CANCEL, params,sign);
logger.debug("body:{}", body);
SwapCancelResponse response = JSON.parseObject(body, SwapCancelResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -191,7 +192,7 @@ public SwapCancelallResponse swapCancelallRequest(SwapCancelallRequest request)
if (request.getOffset()!=null){
params.put("offset",request.getOffset());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_CANCELALL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_CANCELALL, params,sign);
logger.debug("body:{}", body);
SwapCancelallResponse response = JSON.parseObject(body, SwapCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -216,7 +217,7 @@ public SwapOrderInfoResponse swapOrderInfoRequest(SwapOrderInfoRequest request)
if (request.getOrderId() != null) {
params.put("order_id", request.getOrderId());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_ORDER_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_ORDER_INFO, params,sign);
logger.debug("body:{}", body);
SwapOrderInfoResponse response = JSON.parseObject(body, SwapOrderInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -251,7 +252,7 @@ public SwapOrderDetailResponse swapOrderDetailRequest(SwapOrderDetailRequest req
if (request.getPageSize() != null) {
params.put("page_size", request.getPageSize());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_ORDER_DETAIL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_ORDER_DETAIL, params,sign);
logger.debug("body:{}", body);
SwapOrderDetailResponse response = JSON.parseObject(body, SwapOrderDetailResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -285,7 +286,7 @@ public SwapOpenordersResponse swapOpenordersRequest(SwapOpenordersRequest reques
params.put("trade_type",request.getTradeType());
}
params.put("contract_code", request.getContractCode().toUpperCase());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_OPENORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_OPENORDERS, params,sign);
logger.debug("body:{}", body);
SwapOpenordersResponse response = JSON.parseObject(body, SwapOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -312,7 +313,7 @@ public SwapLightningClosePositionResponse swapLightningClosePositionRequest(Swap
if (request.getClientOrderId() != null) {
params.put("client_order_id", request.getClientOrderId());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_LIGHTNING_CLOSE_POSITION, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_LIGHTNING_CLOSE_POSITION, params,sign);
logger.debug("body:{}", body);
SwapLightningClosePositionResponse response = JSON.parseObject(body, SwapLightningClosePositionResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -336,7 +337,7 @@ public SwapSwitchLeverRateResponse swapSwitchLeverRateResponse(String contractCd
Map params = new HashMap<>();
params.put("contract_code", contractCdoe.toUpperCase());
params.put("lever_rate", leverRate);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_SWITCH_LEVER_RATE, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_SWITCH_LEVER_RATE, params,sign);
logger.debug("body:{}", body);
SwapSwitchLeverRateResponse response = JSON.parseObject(body, SwapSwitchLeverRateResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -359,7 +360,7 @@ public SwapCancelAfterResponse swapCancelAfterResponse(SwapCancelAfterRequest re
if (request.getTimeOut() != null) {
params.put("time_out", request.getTimeOut());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_CANCEL_AFTER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_CANCEL_AFTER, params,sign);
logger.debug("body:{}", body);
SwapCancelAfterResponse response = JSON.parseObject(body, SwapCancelAfterResponse.class);
if (response.getCode() != null && response.getCode() == 200){
@@ -400,7 +401,7 @@ public SwapHisordersV3Response swapHisordersV3Response(SwapHisordersV3Request re
if (StringUtils.isNotEmpty(request.getStatus())) {
params.put("status", request.getStatus());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_HISORDERS_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_HISORDERS_V3, params,sign);
logger.debug("body:{}", body);
SwapHisordersV3Response response = JSON.parseObject(body, SwapHisordersV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
@@ -444,7 +445,7 @@ public SwapHisordersExactV3Response swapHisordersExactV3Response(SwapHisordersEx
if (StringUtils.isNotEmpty(request.getPriceType())) {
params.put("price_type", request.getPriceType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key,url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_HISORDERS_EXACT_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key,url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_HISORDERS_EXACT_V3, params,sign);
logger.debug("body:{}", body);
SwapHisordersExactV3Response response = JSON.parseObject(body, SwapHisordersExactV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
@@ -479,7 +480,7 @@ public SwapMatchResultsV3Response swapMatchResultsV3Response(SwapMatchResultsV3R
if (request.getTradeType() != null) {
params.put("trade_type", request.getTradeType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_MATCHRESULTS_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_MATCHRESULTS_V3, params,sign);
logger.debug("body:{}", body);
SwapMatchResultsV3Response response = JSON.parseObject(body, SwapMatchResultsV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
@@ -514,7 +515,7 @@ public SwapMatchResultsExactV3Response swapMatchResultsExactV3Response(SwapMatch
if (request.getTradeType() != null) {
params.put("trade_type", request.getTradeType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_MATCHRESULTS_EXACT_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.SWAP_MATCHRESULTS_EXACT_V3, params,sign);
logger.debug("body:{}", body);
SwapMatchResultsExactV3Response response = JSON.parseObject(body, SwapMatchResultsExactV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
diff --git a/src/main/java/com/huobi/api/service/coin_swap/transfer/TransferApiServiceImpl.java b/src/main/java/com/huobi/api/service/coin_swap/transfer/TransferApiServiceImpl.java
index 88ce0b8..27899da 100644
--- a/src/main/java/com/huobi/api/service/coin_swap/transfer/TransferApiServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/coin_swap/transfer/TransferApiServiceImpl.java
@@ -14,6 +14,7 @@ public class TransferApiServiceImpl implements TransferApiService {
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+ String sign = "";
String url_prex = "https://api.huobi.pro";
public TransferApiServiceImpl(String api_key, String secret_key) {
@@ -34,7 +35,7 @@ public UsdtSwapTransferResponse transfer(UsdtSwapTransferRequest request) {
params.put("to", request.getTo());
params.put("currency",request.getCurrency());
params.put("amount",request.getAmount());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.USDT_SWAP_TRANSFER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiCoinMarginedSwapAPIOptions.USDT_SWAP_TRANSFER, params,sign);
UsdtSwapTransferResponse response = JSON.parseObject(body, UsdtSwapTransferResponse.class);
return response;
diff --git a/src/main/java/com/huobi/api/service/usdt/account/AccountAPIServiceImpl.java b/src/main/java/com/huobi/api/service/usdt/account/AccountAPIServiceImpl.java
index 9b81c25..eeb1014 100644
--- a/src/main/java/com/huobi/api/service/usdt/account/AccountAPIServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/usdt/account/AccountAPIServiceImpl.java
@@ -18,6 +18,7 @@ public class AccountAPIServiceImpl implements AccountAPIService {
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+ String sign = "";
String url_prex = "https://api.hbdm.com";
Logger logger = LoggerFactory.getLogger(getClass());
@@ -36,7 +37,7 @@ public SwapAccountInfoResponse getSwapAccountInfo(String contractCode) {
if (StringUtils.isNotEmpty(contractCode)) {
params.put("contract_code", contractCode.toUpperCase().toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_ACCOUNT_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_ACCOUNT_INFO, params,sign);
logger.debug("body:{}", body);
SwapAccountInfoResponse response = JSON.parseObject(body, SwapAccountInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -57,7 +58,7 @@ public SwapPositionInfoResponse getSwapPositionInfo(String contractCode) {
if (StringUtils.isNotEmpty(contractCode)) {
params.put("contract_code", contractCode.toUpperCase().toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_POSITION_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_POSITION_INFO, params,sign);
logger.debug("body:{}", body);
SwapPositionInfoResponse response = JSON.parseObject(body, SwapPositionInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -76,7 +77,7 @@ public SwapAccountPositionInfoResponse getSwapAccountPositionInfo(String contrac
try {
Map params = new HashMap<>();
params.put("contract_code", contractCode.toUpperCase().toUpperCase());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_ACCOUNT_POSITION_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_ACCOUNT_POSITION_INFO, params,sign);
logger.debug("body:{}", body);
SwapAccountPositionInfoResponse response = JSON.parseObject(body, SwapAccountPositionInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -103,7 +104,7 @@ public SwapSubAccountListResponse getSwapSubAccountList(String contractCode, Str
if (fromId != null) {
params.put("from_id", fromId);
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SUB_ACCOUNT_LIST, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SUB_ACCOUNT_LIST, params,sign);
logger.debug("body:{}", body);
SwapSubAccountListResponse response = JSON.parseObject(body, SwapSubAccountListResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -125,7 +126,7 @@ public SwapSubAccountInfoResponse getSwapSubAccountInfo(String contractCode, Lon
params.put("contract_code", contractCode.toUpperCase().toUpperCase());
}
params.put("sub_uid", subUid);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SUB_ACCOUNT_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SUB_ACCOUNT_INFO, params,sign);
logger.debug("body:{}", body);
SwapSubAccountInfoResponse response = JSON.parseObject(body, SwapSubAccountInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -147,7 +148,7 @@ public SwapSubPositionInfoResponse getSwapSubPositionInfo(String contractCode, L
params.put("contract_code", contractCode.toUpperCase().toUpperCase());
}
params.put("sub_uid", subUid);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SUB_POSITION_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SUB_POSITION_INFO, params,sign);
logger.debug("body:{}", body);
SwapSubPositionInfoResponse response = JSON.parseObject(body, SwapSubPositionInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -178,7 +179,7 @@ public SwapOrderLimitResponse getSwapOrderLimitResponse(String contractCode, Str
params.put("business_type",businessType);
}
params.put("order_price_type", orderPriceType);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_ORDER_LIMIT, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_ORDER_LIMIT, params,sign);
logger.debug("body:{}", body);
SwapOrderLimitResponse response = JSON.parseObject(body, SwapOrderLimitResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -208,7 +209,7 @@ public SwapFeeResponse getSwapFeeResponse(String contractCode,String pair,String
if (businessType!=null){
params.put("business_type",businessType);
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_FEE, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_FEE, params,sign);
logger.debug("body:{}", body);
SwapFeeResponse response = JSON.parseObject(body, SwapFeeResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -229,7 +230,7 @@ public SwapTransferLimitResponse getSwapTransferLimitResponse(String contractCod
if (StringUtils.isNoneEmpty(contractCode)) {
params.put("contract_code", contractCode.toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRANSFER_LIMIT, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRANSFER_LIMIT, params,sign);
logger.debug("body:{}", body);
SwapTransferLimitResponse response = JSON.parseObject(body, SwapTransferLimitResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -250,7 +251,7 @@ public SwapPositionLimitResponse getSwapPositionLimitResponse(String contractCod
if (StringUtils.isNoneEmpty(contractCode)) {
params.put("contract_code", contractCode.toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_POSITION_LIMIT, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_POSITION_LIMIT, params,sign);
logger.debug("body:{}", body);
SwapPositionLimitResponse response = JSON.parseObject(body, SwapPositionLimitResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -277,7 +278,7 @@ public SwapMasterSubTransferResponse getSwapMasterSubTransferResponse(SwapMaster
if (request.getClientOrderId()!=null && request.getClientOrderId()!=0){
params.put("client_order_id",request.getClientOrderId());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_MASTER_SUB_TRANSFER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_MASTER_SUB_TRANSFER, params,sign);
logger.debug("body:{}", body);
SwapMasterSubTransferResponse response = JSON.parseObject(body, SwapMasterSubTransferResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -306,7 +307,7 @@ public SwapMasterSubTransferRecordResponse getSwapMasterSubTransferRecordRespons
if (request.getPageSize() != null) {
params.put("page_size", request.getPageSize());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_MASTER_SUB_TRANSFER_RECORD, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_MASTER_SUB_TRANSFER_RECORD, params,sign);
logger.debug("body:{}", body);
SwapMasterSubTransferRecordResponse response = JSON.parseObject(body, SwapMasterSubTransferRecordResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -331,7 +332,7 @@ public SwapTransferInnerResponse getSwapTransferInner(String asset, String fromM
if (clientOrderId!=null && clientOrderId!=0){
params.put("client_order_id",clientOrderId);
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRANSFER_INNER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRANSFER_INNER, params,sign);
logger.debug("body:{}", body);
SwapTransferInnerResponse response = JSON.parseObject(body, SwapTransferInnerResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -369,7 +370,7 @@ public SwapAvailableLevelRateResponse getSwapAvailableLevelRate(String contractC
if (StringUtils.isNoneEmpty(contractCode)) {
params.put("contract_code", contractCode.toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_AVAILABLE_LEVEL_RATE, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_AVAILABLE_LEVEL_RATE, params,sign);
logger.debug("body:{}", body);
SwapAvailableLevelRateResponse response = JSON.parseObject(body, SwapAvailableLevelRateResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -388,7 +389,7 @@ public SwapSubAuthResponse getSwapSubAuth(String subUid, Integer subAuth) {
try {
params.put("sub_uid", subUid);
params.put("sub_auth", subAuth);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SUB_AUTH, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SUB_AUTH, params,sign);
logger.debug("body:{}", body);
SwapSubAuthResponse response = JSON.parseObject(body, SwapSubAuthResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -412,7 +413,7 @@ public SwapSubAccountInfoListResponse getSwapSubAccountInfoList(String contractC
if (pageSize != null) {
params.put("page_size", pageSize);
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SUB_ACCOUNT_INFO_LIST, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SUB_ACCOUNT_INFO_LIST, params,sign);
logger.debug("body:{}", body);
SwapSubAccountInfoListResponse response = JSON.parseObject(body, SwapSubAccountInfoListResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -432,7 +433,7 @@ public SwapBalanceValuationResponse getSwapBalanceValuation(String ValuationAsse
if (StringUtils.isNotEmpty(ValuationAsset)){
params.put("valuation_asset",ValuationAsset.toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_BALANCE_VALUATION, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_BALANCE_VALUATION, params,sign);
logger.debug("body:{}", body);
SwapBalanceValuationResponse response = JSON.parseObject(body, SwapBalanceValuationResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -455,7 +456,7 @@ public SwapLeverPositionLimitResponse getSwapLeverPositionLimit(String contractC
if (leverRate!=null && leverRate!=0){
params.put("lever_rate",leverRate);
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_LEVER_POSITION_LIMIT, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_LEVER_POSITION_LIMIT, params,sign);
logger.debug("body:{}", body);
SwapLeverPositionLimitResponse response = JSON.parseObject(body, SwapLeverPositionLimitResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -491,7 +492,7 @@ public SwapFinancialRecordV3Response getSwapFinancialRecordV3(SwapFinancialRecor
if (request.getFromId() != null) {
params.put("from_id", request.getFromId());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_FINANCIAL_RECORD_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_FINANCIAL_RECORD_V3, params,sign);
logger.debug("body:{}", body);
SwapFinancialRecordV3Response response = JSON.parseObject(body, SwapFinancialRecordV3Response.class);
if (response.getCode() != null && response.getCode() == 200) {
@@ -529,7 +530,7 @@ public SwapFinancialRecordExactV3Response getSwapFinancialRecordExactV3(SwapFina
if (request.getFromId() != null) {
params.put("from_id", request.getFromId());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_FINANCIAL_RECORD_EXACT_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_FINANCIAL_RECORD_EXACT_V3, params,sign);
logger.debug("body:{}", body);
SwapFinancialRecordExactV3Response response = JSON.parseObject(body, SwapFinancialRecordExactV3Response.class);
if (response.getCode() != null && response.getCode() == 200) {
diff --git a/src/main/java/com/huobi/api/service/usdt/account/CrossAccountAPIServiceImpl.java b/src/main/java/com/huobi/api/service/usdt/account/CrossAccountAPIServiceImpl.java
index 30bdec1..3c06293 100644
--- a/src/main/java/com/huobi/api/service/usdt/account/CrossAccountAPIServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/usdt/account/CrossAccountAPIServiceImpl.java
@@ -18,6 +18,7 @@ public class CrossAccountAPIServiceImpl implements CrossAccountAPIService {
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+ String sign = "";
String url_prex = "https://api.hbdm.com";
Logger logger = LoggerFactory.getLogger(getClass());
@@ -35,7 +36,7 @@ public SwapCrossAccountInfoResponse getSwapCrossAccountInfo(String marginAccount
if (StringUtils.isNotEmpty(marginAccount)) {
params.put("margin_account", marginAccount.toUpperCase().toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_ACCOUNT_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_ACCOUNT_INFO, params,sign);
logger.debug("body:{}", body);
SwapCrossAccountInfoResponse response = JSON.parseObject(body, SwapCrossAccountInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -62,7 +63,7 @@ public SwapCrossPositionInfoResponse getSwapCrossPositionInfo(String contractCod
if (StringUtils.isNotEmpty(contractType)) {
params.put("contract_type", contractType);
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_POSITION_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_POSITION_INFO, params,sign);
logger.debug("body:{}", body);
SwapCrossPositionInfoResponse response = JSON.parseObject(body, SwapCrossPositionInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -81,7 +82,7 @@ public SwapCrossAccountPositionInfoResponse getSwapCrossAccountPositionInfo(Stri
try {
Map params = new HashMap<>();
params.put("margin_account", marginAccount.toUpperCase().toUpperCase());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_ACCOUNT_POSITION_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_ACCOUNT_POSITION_INFO, params,sign);
logger.debug("body:{}", body);
SwapCrossAccountPositionInfoResponse response = JSON.parseObject(body, SwapCrossAccountPositionInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -108,7 +109,7 @@ public SwapCrossSubAccountListResponse getSwapCrossSubAccountList(String marginA
if (fromId != null) {
params.put("from_id", fromId);
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_SUB_ACCOUNT_LIST, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_SUB_ACCOUNT_LIST, params,sign);
logger.debug("body:{}", body);
SwapCrossSubAccountListResponse response = JSON.parseObject(body, SwapCrossSubAccountListResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -130,7 +131,7 @@ public SwapCrossSubAccountInfoResponse getSwapCrossSubAccountInfo(String marginA
params.put("margin_account", marginAccount.toUpperCase().toUpperCase());
}
params.put("sub_uid", subUid);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_SUB_ACCOUNT_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_SUB_ACCOUNT_INFO, params,sign);
logger.debug("body:{}", body);
SwapCrossSubAccountInfoResponse response = JSON.parseObject(body, SwapCrossSubAccountInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -158,7 +159,7 @@ public SwapCrossSubPositionInfoResponse getSwapCrossSubPositionInfo(String contr
params.put("contract_type", contractType);
}
params.put("sub_uid", subUid);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_SUB_POSITION_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_SUB_POSITION_INFO, params,sign);
logger.debug("body:{}", body);
SwapCrossSubPositionInfoResponse response = JSON.parseObject(body, SwapCrossSubPositionInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -180,7 +181,7 @@ public SwapCrossTransferLimitResponse getSwapCrossTransferLimitResponse(String m
if (StringUtils.isNoneEmpty(marginAccount)) {
params.put("margin_account", marginAccount.toUpperCase());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRANSFER_LIMIT, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRANSFER_LIMIT, params,sign);
logger.debug("body:{}", body);
SwapCrossTransferLimitResponse response = JSON.parseObject(body, SwapCrossTransferLimitResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -210,7 +211,7 @@ public SwapCrossPositionLimitResponse getSwapCrossPositionLimitResponse(String c
if (businessType!=null){
params.put("business_type",businessType);
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_POSITION_LIMIT, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_POSITION_LIMIT, params,sign);
logger.debug("body:{}", body);
SwapCrossPositionLimitResponse response = JSON.parseObject(body, SwapCrossPositionLimitResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -241,7 +242,7 @@ public SwapCrossAvailableLevelRateResponse getSwapCrossAvailableLevelRate(String
if (StringUtils.isNotEmpty(businessType)) {
params.put("business_type", businessType);
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_AVAILABLE_LEVEL_RATE, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_AVAILABLE_LEVEL_RATE, params,sign);
logger.debug("body:{}", body);
SwapCrossAvailableLevelRateResponse response = JSON.parseObject(body, SwapCrossAvailableLevelRateResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -261,7 +262,7 @@ public SwapSubAccountInfoListResponse getSwapCrossSubAccountInfoList(String marg
params.put("margin_account", marginAccount);
params.put("page_index", pageIndex);
params.put("page_size", pagesize);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_SUB_ACCOUNT_INFO_LIST, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_SUB_ACCOUNT_INFO_LIST, params,sign);
logger.debug("body:{}", body);
SwapSubAccountInfoListResponse response = JSON.parseObject(body, SwapSubAccountInfoListResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -296,7 +297,7 @@ public SwapLeverPositionLimitResponse getSwapCrossLeverPositionLimit(SwapCrossLe
if (StringUtils.isNotEmpty(request.getTradePartition())){
params.put("trade_partition",request.getTradePartition());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_LEVER_POSITION_LIMIT, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_LEVER_POSITION_LIMIT, params,sign);
logger.debug("body:{}", body);
SwapLeverPositionLimitResponse response = JSON.parseObject(body, SwapLeverPositionLimitResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
diff --git a/src/main/java/com/huobi/api/service/usdt/strategy/CrossStrategyAPIServiceImpl.java b/src/main/java/com/huobi/api/service/usdt/strategy/CrossStrategyAPIServiceImpl.java
index 4475430..74eaa44 100644
--- a/src/main/java/com/huobi/api/service/usdt/strategy/CrossStrategyAPIServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/usdt/strategy/CrossStrategyAPIServiceImpl.java
@@ -17,6 +17,7 @@
public class CrossStrategyAPIServiceImpl implements CrossStrategyAPIService{
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+ String sign = "";
String url_prex = "https://api.hbdm.com";
Logger logger = LoggerFactory.getLogger(getClass());
@@ -59,7 +60,7 @@ public SwapCrossTriggerOrderResponse swapCrossTriggerOrderResponse(SwapCrossTrig
if(request.getReduceOnly()!=null){
params.put("reduce_only",request.getReduceOnly());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRIGGER_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRIGGER_ORDER, params,sign);
logger.debug("body:{}", body);
SwapCrossTriggerOrderResponse response = JSON.parseObject(body, SwapCrossTriggerOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -86,7 +87,7 @@ public SwapCrossTriggerCancelResponse swapCrossTriggerCancelResponse(SwapCrossTr
params.put("contract_type",request.getContractType());
}
params.put("order_id", request.getOrderId());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRIGGER_CANCEL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRIGGER_CANCEL, params,sign);
logger.debug("body:{}", body);
SwapCrossTriggerCancelResponse response = JSON.parseObject(body, SwapCrossTriggerCancelResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -118,7 +119,7 @@ public SwapCrossTriggerCancelallResponse swapCrossTriggerCancelallResponse(SwapC
if (request.getOffset() != null) {
params.put("offset", request.getOffset());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRIGGER_CANCELALL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRIGGER_CANCELALL, params,sign);
logger.debug("body:{}", body);
SwapCrossTriggerCancelallResponse response = JSON.parseObject(body, SwapCrossTriggerCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -153,7 +154,7 @@ public SwapCrossTriggerOpenordersResponse swapCrossTriggerOpenordersResponse(Swa
if (StringUtils.isNotEmpty(request.getTradePartition())){
params.put("trade_partition",request.getTradePartition());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRIGGER_OPENORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRIGGER_OPENORDERS, params,sign);
logger.debug("body:{}", body);
SwapCrossTriggerOpenordersResponse response = JSON.parseObject(body, SwapCrossTriggerOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -188,7 +189,7 @@ public SwapCrossTriggerHisordersResponse swapCrossTriggerHisordersResponse(SwapC
if (request.getSortBy() != null) {
params.put("sort_by", request.getSortBy());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRIGGER_HISORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRIGGER_HISORDERS, params,sign);
logger.debug("body:{}", body);
SwapCrossTriggerHisordersResponse response = JSON.parseObject(body, SwapCrossTriggerHisordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -234,7 +235,7 @@ public SwapTpslOrderResponse swapCrossTpslOrderResponse(SwapTpslOrderRequest req
if (request.getSlOrderPriceType() != null) {
params.put("sl_order_price_type", request.getSlOrderPriceType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TPSL_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TPSL_ORDER, params,sign);
logger.debug("body:{}", body);
SwapTpslOrderResponse response = JSON.parseObject(body, SwapTpslOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -261,7 +262,7 @@ public SwapTpslCancelResponse swapCrossTpslCancelResponse(SwapTpslCancelRequest
params.put("contract_type",request.getContractType());
}
params.put("order_id", request.getOrderId());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TPSL_CANCEL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TPSL_CANCEL, params,sign);
logger.debug("body:{}", body);
SwapTpslCancelResponse response = JSON.parseObject(body, SwapTpslCancelResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -290,7 +291,7 @@ public SwapTpslCancelallResponse swapCrossTpslCancelallResponse(SwapTpslCancelal
if (request.getDirection() != null) {
params.put("direction", request.getDirection());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TPSL_CANCELALL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TPSL_CANCELALL, params,sign);
logger.debug("body:{}", body);
SwapTpslCancelallResponse response = JSON.parseObject(body, SwapTpslCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -325,7 +326,7 @@ public SwapTpslOpenordersResponse swapCrossTpslOpenordersResponse(SwapTpslOpenor
if (StringUtils.isNotEmpty(request.getTradePartition())){
params.put("trade_partition",request.getTradePartition());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TPSL_OPENORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TPSL_OPENORDERS, params,sign);
logger.debug("body:{}", body);
SwapTpslOpenordersResponse response = JSON.parseObject(body, SwapTpslOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -359,7 +360,7 @@ public SwapTpslHisordersResponse swapCrossTpslHisordersResponse(SwapTpslHisorder
if (StringUtils.isNotEmpty(request.getSortBy())) {
params.put("sort_by", request.getSortBy());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TPSL_HISORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TPSL_HISORDERS, params,sign);
logger.debug("body:{}", body);
SwapTpslHisordersResponse response = JSON.parseObject(body, SwapTpslHisordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -383,7 +384,7 @@ public SwapRelationTpslOrderResponse swapCrossRelationTpslOrderResponse(SwapRela
params.put("pair",request.getPair().toUpperCase());
}
params.put("order_id", request.getOrderId());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_RELATION_TPSL_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_RELATION_TPSL_ORDER, params,sign);
logger.debug("body:{}", body);
SwapRelationTpslOrderResponse response = JSON.parseObject(body, SwapRelationTpslOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -423,7 +424,7 @@ public SwapTrackOrderResponse swapCrossTrackOrderResponse(SwapTrackOrderRequest
if(request.getReduceOnly()!=null){
params.put("reduce_only",request.getReduceOnly());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRACK_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRACK_ORDER, params,sign);
logger.debug("body:{}", body);
SwapTrackOrderResponse response = JSON.parseObject(body, SwapTrackOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -450,7 +451,7 @@ public SwapTrackCancelResponse swapCrossTrackCancelResponse(SwapTrackCancelReque
params.put("contract_type",request.getContractType());
}
params.put("order_id", request.getOrderId());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRACK_CANCEL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRACK_CANCEL, params,sign);
logger.debug("body:{}", body);
SwapTrackCancelResponse response = JSON.parseObject(body, SwapTrackCancelResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -482,7 +483,7 @@ public SwapTrackCancelallResponse swapCrossTrackCancelallResponse(SwapTrackCance
if (request.getOffset()!=null) {
params.put("offset", request.getOffset());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRACK_CANCELALL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRACK_CANCELALL, params,sign);
logger.debug("body:{}", body);
SwapTrackCancelallResponse response = JSON.parseObject(body, SwapTrackCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -517,7 +518,7 @@ public SwapTrackOpenordersResponse swapCrossTrackOpenordersResponse(SwapTrackOpe
if (StringUtils.isNotEmpty(request.getTradePartition())){
params.put("trade_partition",request.getTradePartition());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRACK_OPENORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRACK_OPENORDERS, params,sign);
logger.debug("body:{}", body);
SwapTrackOpenordersResponse response = JSON.parseObject(body, SwapTrackOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -552,7 +553,7 @@ public SwapTrackHisordersResponse swapCrossTrackHisordersResponse(SwapTrackHisor
if (request.getSortBy()!=null){
params.put("sort_by",request.getSortBy());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRACK_HISORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_TRACK_HISORDERS, params,sign);
logger.debug("body:{}", body);
SwapTrackHisordersResponse response = JSON.parseObject(body, SwapTrackHisordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
diff --git a/src/main/java/com/huobi/api/service/usdt/strategy/StrategyAPIServiceImpl.java b/src/main/java/com/huobi/api/service/usdt/strategy/StrategyAPIServiceImpl.java
index 07e4b3f..e9e5f9a 100644
--- a/src/main/java/com/huobi/api/service/usdt/strategy/StrategyAPIServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/usdt/strategy/StrategyAPIServiceImpl.java
@@ -17,6 +17,7 @@
public class StrategyAPIServiceImpl implements StrategyAPIService{
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+ String sign = "";
String url_prex = "https://api.hbdm.com";
Logger logger = LoggerFactory.getLogger(getClass());
@@ -51,7 +52,7 @@ public SwapTriggerOrderResponse swapTriggerOrderResponse(SwapTriggerOrderRequest
if(request.getReduceOnly()!=null){
params.put("reduce_only",request.getReduceOnly());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRIGGER_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRIGGER_ORDER, params,sign);
logger.debug("body:{}", body);
SwapTriggerOrderResponse response = JSON.parseObject(body, SwapTriggerOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -70,7 +71,7 @@ public SwapTriggerCancelResponse swapTriggerCancelResponse(SwapTriggerCancelRequ
Map params = new HashMap<>();
params.put("contract_code", request.getContractCode().toUpperCase());
params.put("order_id", request.getOrderId());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRIGGER_CANCEL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRIGGER_CANCEL, params,sign);
logger.debug("body:{}", body);
SwapTriggerCancelResponse response = JSON.parseObject(body, SwapTriggerCancelResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -94,7 +95,7 @@ public SwapTriggerCancelallResponse swapTriggerCancelallResponse(SwapTriggerCanc
if (request.getOffset() != null) {
params.put("offset", request.getOffset());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRIGGER_CANCELALL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRIGGER_CANCELALL, params,sign);
logger.debug("body:{}", body);
SwapTriggerCancelallResponse response = JSON.parseObject(body, SwapTriggerCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -121,7 +122,7 @@ public SwapTriggerOpenordersResponse swapTriggerOpenordersResponse(SwapTriggerOp
if (request.getTradeType() != null) {
params.put("trade_type", request.getTradeType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRIGGER_OPENORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRIGGER_OPENORDERS, params,sign);
logger.debug("body:{}", body);
SwapTriggerOpenordersResponse response = JSON.parseObject(body, SwapTriggerOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -152,7 +153,7 @@ public SwapTriggerHisordersResponse swapTriggerHisordersResponse(SwapTriggerHiso
if (request.getSortBy() != null) {
params.put("sort_by", request.getSortBy());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRIGGER_HISORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRIGGER_HISORDERS, params,sign);
logger.debug("body:{}", body);
SwapTriggerHisordersResponse response = JSON.parseObject(body, SwapTriggerHisordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -190,7 +191,7 @@ public SwapTpslOrderResponse swapTpslOrderResponse(SwapTpslOrderRequest request)
if (request.getSlOrderPriceType() != null) {
params.put("sl_order_price_type", request.getSlOrderPriceType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TPSL_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TPSL_ORDER, params,sign);
logger.debug("body:{}", body);
SwapTpslOrderResponse response = JSON.parseObject(body, SwapTpslOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -209,7 +210,7 @@ public SwapTpslCancelResponse swapTpslCancelResponse(SwapTpslCancelRequest reque
try {
params.put("contract_code", request.getContractCode().toUpperCase());
params.put("order_id", request.getOrderId());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TPSL_CANCEL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TPSL_CANCEL, params,sign);
logger.debug("body:{}", body);
SwapTpslCancelResponse response = JSON.parseObject(body, SwapTpslCancelResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -230,7 +231,7 @@ public SwapTpslCancelallResponse swapTpslCancelallResponse(SwapTpslCancelallRequ
if (request.getDirection() != null) {
params.put("direction", request.getDirection());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TPSL_CANCELALL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TPSL_CANCELALL, params,sign);
logger.debug("body:{}", body);
SwapTpslCancelallResponse response = JSON.parseObject(body, SwapTpslCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -257,7 +258,7 @@ public SwapTpslOpenordersResponse swapTpslOpenordersResponse(SwapTpslOpenordersR
if (request.getTradeType() != null) {
params.put("trade_type", request.getTradeType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TPSL_OPENORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TPSL_OPENORDERS, params,sign);
logger.debug("body:{}", body);
SwapTpslOpenordersResponse response = JSON.parseObject(body, SwapTpslOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -286,7 +287,7 @@ public SwapTpslHisordersResponse swapTpslHisordersResponse(SwapTpslHisordersRequ
if (StringUtils.isNotEmpty(request.getSortBy())) {
params.put("sort_by", request.getSortBy());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TPSL_HISORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TPSL_HISORDERS, params,sign);
logger.debug("body:{}", body);
SwapTpslHisordersResponse response = JSON.parseObject(body, SwapTpslHisordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -305,7 +306,7 @@ public SwapRelationTpslOrderResponse swapRelationTpslOrderResponse(SwapRelationT
try {
params.put("contract_code", request.getContractCode().toUpperCase());
params.put("order_id", request.getOrderId());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_RELATION_TPSL_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_RELATION_TPSL_ORDER, params,sign);
logger.debug("body:{}", body);
SwapRelationTpslOrderResponse response = JSON.parseObject(body, SwapRelationTpslOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -337,7 +338,7 @@ public SwapTrackOrderResponse swapTrackOrderResponse(SwapTrackOrderRequest reque
if(request.getReduceOnly()!=null){
params.put("reduce_only",request.getReduceOnly());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRACK_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRACK_ORDER, params,sign);
logger.debug("body:{}", body);
SwapTrackOrderResponse response = JSON.parseObject(body, SwapTrackOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -356,7 +357,7 @@ public SwapTrackCancelResponse swapTrackCancelResponse(SwapTrackCancelRequest re
try {
params.put("contract_code", request.getContractCode().toUpperCase());
params.put("order_id", request.getOrderId());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRACK_CANCEL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRACK_CANCEL, params,sign);
logger.debug("body:{}", body);
SwapTrackCancelResponse response = JSON.parseObject(body, SwapTrackCancelResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -380,7 +381,7 @@ public SwapTrackCancelallResponse swapTrackCancelallResponse(SwapTrackCancelallR
if (request.getOffset()!=null) {
params.put("offset", request.getOffset());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRACK_CANCELALL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRACK_CANCELALL, params,sign);
logger.debug("body:{}", body);
SwapTrackCancelallResponse response = JSON.parseObject(body, SwapTrackCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -407,7 +408,7 @@ public SwapTrackOpenordersResponse swapTrackOpenordersResponse(SwapTrackOpenorde
if (request.getPageSize()!=null){
params.put("page_size",request.getPageSize());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRACK_OPENORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRACK_OPENORDERS, params,sign);
logger.debug("body:{}", body);
SwapTrackOpenordersResponse response = JSON.parseObject(body, SwapTrackOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
@@ -437,7 +438,7 @@ public SwapTrackHisordersResponse swapTrackHisordersResponse(SwapTrackHisordersR
if (request.getSortBy()!=null){
params.put("sort_by",request.getSortBy());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRACK_HISORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_TRACK_HISORDERS, params,sign);
logger.debug("body:{}", body);
SwapTrackHisordersResponse response = JSON.parseObject(body, SwapTrackHisordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())){
diff --git a/src/main/java/com/huobi/api/service/usdt/trade/CrossTradeAPIServiceImpl.java b/src/main/java/com/huobi/api/service/usdt/trade/CrossTradeAPIServiceImpl.java
index a3636c0..60b44c2 100644
--- a/src/main/java/com/huobi/api/service/usdt/trade/CrossTradeAPIServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/usdt/trade/CrossTradeAPIServiceImpl.java
@@ -22,6 +22,7 @@ public class CrossTradeAPIServiceImpl implements CrossTradeAPIService {
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+ String sign = "";
String url_prex = "https://api.hbdm.com";
Logger logger = LoggerFactory.getLogger(getClass());
@@ -67,7 +68,7 @@ public SwapSwitchPositionModeResponse swapCrossSwitchPositionModeResponse(String
Map params = new HashMap<>();
params.put("margin_account", marginAccount);
params.put("position_mode", positionMode);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_SWITCH_POSITION_MODE, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_SWITCH_POSITION_MODE, params,sign);
logger.debug("body:{}", body);
SwapSwitchPositionModeResponse response = JSON.parseObject(body, SwapSwitchPositionModeResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -129,7 +130,7 @@ public SwapCrossOrderResponse swapCrossOrderRequest(SwapCrossOrderRequest reques
if(request.getReduceOnly()!=null){
params.put("reduce_only",request.getReduceOnly());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_ORDER, params,sign);
logger.debug("body:{}", body);
SwapCrossOrderResponse response = JSON.parseObject(body, SwapCrossOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -200,7 +201,7 @@ public SwapCrossBatchorderResponse swapCrossBatchorderRequest(SwapCrossBatchorde
params.put("orders_data", listMap);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_BATCHORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_BATCHORDER, params,sign);
logger.debug("body:{}", body);
SwapCrossBatchorderResponse response = JSON.parseObject(body, SwapCrossBatchorderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -236,7 +237,7 @@ public SwapCrossCancelResponse swapCrossCancelRequest(SwapCrossCancelRequest req
if (request.getContractType() != null) {
params.put("contract_type", request.getContractType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_CANCEL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_CANCEL, params,sign);
logger.debug("body:{}", body);
SwapCrossCancelResponse response = JSON.parseObject(body, SwapCrossCancelResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -273,7 +274,7 @@ public SwapCrossCancelallResponse swapCrossCancelallRequest(SwapCrossCancelallRe
if (request.getOffset() != null) {
params.put("offset", request.getOffset());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_CANCELALL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_CANCELALL, params,sign);
logger.debug("body:{}", body);
SwapCrossCancelallResponse response = JSON.parseObject(body, SwapCrossCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -303,7 +304,7 @@ public SwapCrossOrderInfoResponse swapCrossOrderInfoRequest(SwapCrossOrderInfoRe
if (request.getOrderId() != null) {
params.put("order_id", request.getOrderId());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_ORDER_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_ORDER_INFO, params,sign);
logger.debug("body:{}", body);
SwapCrossOrderInfoResponse response = JSON.parseObject(body, SwapCrossOrderInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -343,7 +344,7 @@ public SwapCrossOrderDetailResponse swapCrossOrderDetailRequest(SwapCrossOrderDe
if (request.getPageSize() != null) {
params.put("page_size", request.getPageSize());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_ORDER_DETAIL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_ORDER_DETAIL, params,sign);
logger.debug("body:{}", body);
SwapCrossOrderDetailResponse response = JSON.parseObject(body, SwapCrossOrderDetailResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -385,7 +386,7 @@ public SwapCrossOpenordersResponse swapCrossOpenordersRequest(SwapCrossOpenorder
if (StringUtils.isNotEmpty(request.getTradePartition())){
params.put("trade_partition",request.getTradePartition());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_OPENORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_OPENORDERS, params,sign);
logger.debug("body:{}", body);
SwapCrossOpenordersResponse response = JSON.parseObject(body, SwapCrossOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -420,7 +421,7 @@ public SwapCrossLightningClosePositionResponse swapCrossLightningClosePositionRe
if (request.getClientOrderId() != null) {
params.put("client_order_id", request.getClientOrderId());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_LIGHTNING_CLOSE_POSITION, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_LIGHTNING_CLOSE_POSITION, params,sign);
logger.debug("body:{}", body);
SwapCrossLightningClosePositionResponse response = JSON.parseObject(body, SwapCrossLightningClosePositionResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -450,7 +451,7 @@ public SwapCrossSwitchLeverRateResponse getSwapCrossSwitchLeverRate(String contr
params.put("contract_type", contractType);
}
params.put("lever_rate", leverRate);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_SWITCH_LEVER_RATE, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_SWITCH_LEVER_RATE, params,sign);
logger.debug("body:{}", body);
SwapCrossSwitchLeverRateResponse response = JSON.parseObject(body, SwapCrossSwitchLeverRateResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -497,7 +498,7 @@ public SwapCrossHisordersExactV3Response swapCrossHisordersExactV3Response(SwapC
if (StringUtils.isNotEmpty(request.getPriceType())) {
params.put("price_type", request.getPriceType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_HISORDERS_EXACT_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_HISORDERS_EXACT_V3, params,sign);
logger.debug("body:{}", body);
SwapCrossHisordersExactV3Response response = JSON.parseObject(body, SwapCrossHisordersExactV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
@@ -541,7 +542,7 @@ public SwapCrossHisordersV3Response swapCrossHisordersV3Response(SwapCrossHisord
if (StringUtils.isNotEmpty(request.getStatus())) {
params.put("status", request.getStatus());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_HISORDERS_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_HISORDERS_V3, params,sign);
logger.debug("body:{}", body);
SwapCrossHisordersV3Response response = JSON.parseObject(body, SwapCrossHisordersV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
@@ -579,7 +580,7 @@ public SwapCrossMatchResultsV3Response swapCrossMatchResultsV3Response(SwapCross
if (StringUtils.isNotEmpty(request.getPair())) {
params.put("pair", request.getPair());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_MATCHRESULTS_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_MATCHRESULTS_V3, params,sign);
logger.debug("body:{}", body);
SwapCrossMatchResultsV3Response response = JSON.parseObject(body, SwapCrossMatchResultsV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
@@ -617,7 +618,7 @@ public SwapCrossMatchResultsExactV3Response swapCrossMatchResultsExactV3Response
if (StringUtils.isNotEmpty(request.getPair())) {
params.put("pair", request.getPair());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_MATCHRESULTS_EXACT_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapCrossAPIConstants.SWAP_CROSS_MATCHRESULTS_EXACT_V3, params,sign);
logger.debug("body:{}", body);
SwapCrossMatchResultsExactV3Response response = JSON.parseObject(body, SwapCrossMatchResultsExactV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
diff --git a/src/main/java/com/huobi/api/service/usdt/trade/TradeAPIServiceImpl.java b/src/main/java/com/huobi/api/service/usdt/trade/TradeAPIServiceImpl.java
index da8b500..6803e76 100644
--- a/src/main/java/com/huobi/api/service/usdt/trade/TradeAPIServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/usdt/trade/TradeAPIServiceImpl.java
@@ -21,6 +21,7 @@ public class TradeAPIServiceImpl implements TradeAPIService {
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+ String sign = "";
String url_prex = "https://api.hbdm.com";
Logger logger = LoggerFactory.getLogger(getClass());
@@ -39,7 +40,7 @@ public SwapSwitchPositionModeResponse swapSwitchPositionModeResponse(String marg
params.put("margin_account", marginAccount);
params.put("position_mode", positionMode);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SWITCH_POSITION_MODE, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SWITCH_POSITION_MODE, params,sign);
logger.debug("body:{}", body);
SwapSwitchPositionModeResponse response = JSON.parseObject(body, SwapSwitchPositionModeResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -93,7 +94,7 @@ public SwapOrderResponse swapOrderRequest(SwapOrderRequest request) {
if(request.getReduceOnly()!=null){
params.put("reduce_only",request.getReduceOnly());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_ORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_ORDER, params,sign);
logger.debug("body:{}", body);
SwapOrderResponse response = JSON.parseObject(body, SwapOrderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -157,7 +158,7 @@ public SwapBatchorderResponse swapBatchorderRequest(SwapBatchorderRequest reques
params.put("orders_data", listMap);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_BATCHORDER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_BATCHORDER, params,sign);
logger.debug("body:{}", body);
SwapBatchorderResponse response = JSON.parseObject(body, SwapBatchorderResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -185,7 +186,7 @@ public SwapCancelResponse swapCancelRequest(SwapCancelRequest request) {
params.put("client_order_id", request.getClientOrderId());
}
params.put("contract_code", request.getContractCode().toUpperCase());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_CANCEL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_CANCEL, params,sign);
logger.debug("body:{}", body);
SwapCancelResponse response = JSON.parseObject(body, SwapCancelResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -214,7 +215,7 @@ public SwapCancelallResponse swapCancelallRequest(SwapCancelallRequest request)
if (request.getOffset() != null) {
params.put("offset", request.getOffset());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_CANCELALL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_CANCELALL, params,sign);
logger.debug("body:{}", body);
SwapCancelallResponse response = JSON.parseObject(body, SwapCancelallResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -239,7 +240,7 @@ public SwapOrderInfoResponse swapOrderInfoRequest(SwapOrderInfoRequest request)
if (request.getOrderId() != null) {
params.put("order_id", request.getOrderId());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_ORDER_INFO, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_ORDER_INFO, params,sign);
logger.debug("body:{}", body);
SwapOrderInfoResponse response = JSON.parseObject(body, SwapOrderInfoResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -274,7 +275,7 @@ public SwapOrderDetailResponse swapOrderDetailRequest(SwapOrderDetailRequest req
if (request.getPageSize() != null) {
params.put("page_size", request.getPageSize());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_ORDER_DETAIL, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_ORDER_DETAIL, params,sign);
logger.debug("body:{}", body);
SwapOrderDetailResponse response = JSON.parseObject(body, SwapOrderDetailResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -308,7 +309,7 @@ public SwapOpenordersResponse swapOpenordersRequest(SwapOpenordersRequest reques
params.put("trade_type", request.getTradeType());
}
params.put("contract_code", request.getContractCode().toUpperCase());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_OPENORDERS, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_OPENORDERS, params,sign);
logger.debug("body:{}", body);
SwapOpenordersResponse response = JSON.parseObject(body, SwapOpenordersResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -334,7 +335,7 @@ public SwapLightningClosePositionResponse swapLightningClosePositionRequest(Swap
if (request.getClientOrderId() != null) {
params.put("client_order_id", request.getClientOrderId());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_LIGHTNING_CLOSE_POSITION, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_LIGHTNING_CLOSE_POSITION, params,sign);
logger.debug("body:{}", body);
SwapLightningClosePositionResponse response = JSON.parseObject(body, SwapLightningClosePositionResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -354,7 +355,7 @@ public SwapSwitchLeverRateResponse getSwapSwitchLeverRate(String contractCode, I
try {
params.put("contract_code", contractCode.toUpperCase());
params.put("lever_rate", leverRate);
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SWITCH_LEVER_RATE, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SWITCH_LEVER_RATE, params,sign);
logger.debug("body:{}", body);
SwapSwitchLeverRateResponse response = JSON.parseObject(body, SwapSwitchLeverRateResponse.class);
if ("ok".equalsIgnoreCase(response.getStatus())) {
@@ -379,7 +380,7 @@ public LinearCancelAfterResponse linearCancelAfterResponse(LinearCancelAfterRequ
if (request.getTimeOut() != null) {
params.put("time_out", request.getTimeOut());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.LINEAR_CANCEL_AFTER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.LINEAR_CANCEL_AFTER, params,sign);
logger.debug("body:{}", body);
LinearCancelAfterResponse response = JSON.parseObject(body, LinearCancelAfterResponse.class);
if (response.getCode() != null && response.getCode() == 200){
@@ -420,7 +421,7 @@ public SwapHisordersV3Response swapHisordersV3Response(SwapHisordersV3Request re
if (StringUtils.isNotEmpty(request.getStatus())) {
params.put("status", request.getStatus());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_HISORDERS_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_HISORDERS_V3, params,sign);
logger.debug("body:{}", body);
SwapHisordersV3Response response = JSON.parseObject(body, SwapHisordersV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
@@ -467,7 +468,7 @@ public SwapHisordersExactV3Response swapHisordersExactV3Response(SwapHisordersEx
if (StringUtils.isNotEmpty(request.getPriceType())) {
params.put("price_type", request.getPriceType());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_HISORDERS_EXACT_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_HISORDERS_EXACT_V3, params,sign);
logger.debug("body:{}", body);
SwapHisordersExactV3Response response = JSON.parseObject(body, SwapHisordersExactV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
@@ -505,7 +506,7 @@ public SwapMatchResultsV3Response swapMatchResultsV3Response(SwapMatchResultsV3R
if (StringUtils.isNotEmpty(request.getPair())) {
params.put("pair", request.getPair());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_MATCHRESULTS_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_MATCHRESULTS_V3, params,sign);
logger.debug("body:{}", body);
SwapMatchResultsV3Response response = JSON.parseObject(body, SwapMatchResultsV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
@@ -540,7 +541,7 @@ public SwapMatchResultsExactV3Response swapMatchResultsExactV3Response(SwapMatch
if (request.getFromId() != null) {
params.put("from_id", request.getFromId());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_MATCHRESULTS_EXACT_V3, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_MATCHRESULTS_EXACT_V3, params,sign);
logger.debug("body:{}", body);
SwapMatchResultsExactV3Response response = JSON.parseObject(body, SwapMatchResultsExactV3Response.class);
if (response.getCode() != null && response.getCode() == 200){
diff --git a/src/main/java/com/huobi/api/service/usdt/transfer/TransferAPIServiceImpl.java b/src/main/java/com/huobi/api/service/usdt/transfer/TransferAPIServiceImpl.java
index f9920fa..d3249c9 100644
--- a/src/main/java/com/huobi/api/service/usdt/transfer/TransferAPIServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/usdt/transfer/TransferAPIServiceImpl.java
@@ -16,6 +16,7 @@ public class TransferAPIServiceImpl implements TransferAPIService {
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+ String sign = "";
String url_prex = "https://api.huobi.pro";
Logger logger = LoggerFactory.getLogger(getClass());
@@ -38,7 +39,7 @@ public UsdtSwapTransferResponse transfer(UsdtSwapTransferRequest request) {
params.put("margin-account", request.getMargin_account());
params.put("currency", request.getCurrency());
params.put("amount", request.getAmount());
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.USDT_SWAP_TRANSFER, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.USDT_SWAP_TRANSFER, params,sign);
UsdtSwapTransferResponse response = JSON.parseObject(body, UsdtSwapTransferResponse.class);
return response;
diff --git a/src/main/java/com/huobi/api/service/usdt/unified_account/UnifiedAccountAPIServiceImpl.java b/src/main/java/com/huobi/api/service/usdt/unified_account/UnifiedAccountAPIServiceImpl.java
index c3d514c..f385ef5 100644
--- a/src/main/java/com/huobi/api/service/usdt/unified_account/UnifiedAccountAPIServiceImpl.java
+++ b/src/main/java/com/huobi/api/service/usdt/unified_account/UnifiedAccountAPIServiceImpl.java
@@ -17,6 +17,7 @@
public class UnifiedAccountAPIServiceImpl implements UnifiedAccountAPIService{
String api_key = ""; // huobi申请的apiKey
String secret_key = ""; // huobi申请的secretKey
+ String sign = "";
String url_prex = "https://api.hbdm.com";
Logger logger = LoggerFactory.getLogger(getClass());
@@ -68,7 +69,7 @@ public LinearSwapFeeSwitchResponse getLinearSwapFeeSwitch(Integer feeOption) {
String body;
Map params = new HashMap<>();
try {
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.LINEAR_SWAP_FEE_SWITCH, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.LINEAR_SWAP_FEE_SWITCH, params,sign);
logger.debug("body:{}", body);
LinearSwapFeeSwitchResponse response = JSON.parseObject(body, LinearSwapFeeSwitchResponse.class);
if (response.getCode() != null && response.getCode() == 200) {
@@ -103,7 +104,7 @@ public FixPositionMarginChangeResponse getFixPositionMarginChange(FixPositionMar
if (request.getClientOrderId() != null) {
params.put("clientOrderId", request.getClientOrderId());
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.FIX_POSITION_MARGIN_CHANGE, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.FIX_POSITION_MARGIN_CHANGE, params,sign);
logger.debug("body:{}", body);
FixPositionMarginChangeResponse response = JSON.parseObject(body, FixPositionMarginChangeResponse.class);
if (response.getCode() != null && response.getCode() == 200) {
@@ -175,7 +176,7 @@ public SwapSwitchAccountTypeResponse getSwapSwitchAccountType(Integer accountTyp
if (accountType != null) {
params.put("account_type", accountType);
}
- body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SWITCH_ACCOUNT_TYPE, params);
+ body = HbdmHttpClient.getInstance().doPost(api_key, secret_key, url_prex + HuobiLinearSwapAPIConstants.SWAP_SWITCH_ACCOUNT_TYPE, params,sign);
logger.debug("body:{}", body);
SwapSwitchAccountTypeResponse response = JSON.parseObject(body, SwapSwitchAccountTypeResponse.class);
if (response.getCode() != null && response.getCode() == 200) {
diff --git a/src/main/java/com/huobi/api/util/ApiSignatureEd25519.java b/src/main/java/com/huobi/api/util/ApiSignatureEd25519.java
new file mode 100644
index 0000000..f70fc09
--- /dev/null
+++ b/src/main/java/com/huobi/api/util/ApiSignatureEd25519.java
@@ -0,0 +1,129 @@
+package com.huobi.api.util;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.security.Security;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.Base64;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
+import org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters;
+import org.bouncycastle.crypto.params.Ed25519PublicKeyParameters;
+import org.bouncycastle.crypto.signers.Ed25519Signer;
+import org.bouncycastle.crypto.util.PrivateKeyFactory;
+import org.bouncycastle.crypto.util.PublicKeyFactory;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.bouncycastle.openssl.PEMParser;
+import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
+
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.bouncycastle.openssl.PEMParser;
+import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
+public class ApiSignatureEd25519 {
+
+ final Logger log = LoggerFactory.getLogger(getClass());
+
+ static final DateTimeFormatter DT_FORMAT = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss");
+
+ static final ZoneId ZONE_GMT = ZoneId.of("Z");
+
+
+ public void createSignature(String base64PublicKey, String base64PrivateKey, String method, String uri,
+ Map params) {
+ // 加载 BouncyCastle 提供者
+ Security.addProvider(new BouncyCastleProvider());
+ Ed25519PrivateKeyParameters privateKey = null;
+
+ // 从 PEM 格式中提取私钥
+ try (PEMParser pemParser = new PEMParser(new StringReader(base64PrivateKey))) {
+ Object object = pemParser.readObject();
+ if (object instanceof PrivateKeyInfo) {
+ PrivateKeyInfo privateKeyInfo = (PrivateKeyInfo) object;
+ JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
+ java.security.PrivateKey javaPrivateKey = converter.getPrivateKey(privateKeyInfo);
+ privateKey = (Ed25519PrivateKeyParameters) PrivateKeyFactory.createKey(javaPrivateKey.getEncoded());
+ } else {
+ throw new IllegalArgumentException("Invalid PEM format: not a private key");
+ }
+ } catch (Exception e) {
+ throw new RuntimeException("Error loading private key: " + e.getMessage(), e);
+ }
+
+ StringBuilder sb = new StringBuilder(1024);
+ sb.append(method.toUpperCase()).append('\n');
+
+ // 提取主机名和 URI
+ int index = uri.indexOf("//");
+ String subString = uri.substring(index + 2);
+ int index2 = subString.indexOf("/");
+ String host = subString.substring(0, index2);
+ String constant = subString.substring(index2);
+
+ sb.append(host.toLowerCase()).append('\n') // Host
+ .append(constant).append('\n'); // /path
+
+ // 添加请求参数
+ params.remove("Signature");
+ params.put("AccessKeyId", base64PublicKey); // 使用公共密钥
+ params.put("SignatureVersion", "2");
+ params.put("SignatureMethod", "Ed25519");
+ params.put("Timestamp", gmtNow());
+
+ // 构建签名字符串
+ SortedMap map = new TreeMap<>(params);
+ for (Map.Entry entry : map.entrySet()) {
+ String key = entry.getKey();
+ String value = entry.getValue().toString();
+ sb.append(key).append('=').append(urlEncode(value)).append('&');
+ }
+ // 去掉最后的 '&'
+ sb.deleteCharAt(sb.length() - 1);
+System.out.println(sb.toString());
+ // 使用 Ed25519 进行签名
+ Ed25519Signer signer = new Ed25519Signer();
+ signer.init(true, privateKey);
+ signer.update(sb.toString().getBytes(StandardCharsets.UTF_8), 0, sb.length());
+ byte[] signatureBytes = signer.generateSignature();
+ String actualSign = Base64.getEncoder().encodeToString(signatureBytes);
+
+ params.put("Signature", actualSign); // 将签名放入参数中
+ }
+
+ /**
+ * 使用标准URL Encode编码。注意和JDK默认的不同,空格被编码为%20而不是+。
+ *
+ * @param s String字符串
+ * @return URL编码后的字符串
+ */
+ public static String urlEncode(String s) {
+ try {
+ return URLEncoder.encode(s, "UTF-8").replaceAll("\\+", "%20");
+ } catch (UnsupportedEncodingException e) {
+ throw new IllegalArgumentException("UTF-8 encoding not supported!");
+ }
+ }
+
+ /**
+ * Return epoch seconds
+ */
+ long epochNow() {
+ return Instant.now().getEpochSecond();
+ }
+
+ String gmtNow() {
+ return Instant.ofEpochSecond(epochNow()).atZone(ZONE_GMT).format(DT_FORMAT);
+ }
+}
diff --git a/src/main/java/com/huobi/api/util/HbdmHttpClient.java b/src/main/java/com/huobi/api/util/HbdmHttpClient.java
index e82e271..fee9f6c 100644
--- a/src/main/java/com/huobi/api/util/HbdmHttpClient.java
+++ b/src/main/java/com/huobi/api/util/HbdmHttpClient.java
@@ -57,18 +57,34 @@ public String doGet(String url, Map params) {
}
- public String doPost(String appKey, String appSecretKey, String uri, Map params) {
- ApiSignature sign = new ApiSignature();
- sign.createSignature(appKey, appSecretKey, "POST", uri, params);
- try {
- RequestBody body = RequestBody.create(JSON_TYPE, JSON.toJSONString(params));
- Request.Builder builder = new Request.Builder().url(uri + "?" + toQueryString(params)).post(body);
- Request request = builder.build();
- Response response = httpClient.newCall(request).execute();
- return response.body().string();
- } catch (IOException e) {
- throw new RuntimeException("IOException 目标url:" + uri, e);
+ public String doPost(String appKey, String appSecretKey, String uri, Map params,String sign2) {
+ if(sign2.equals("256")){
+ ApiSignature sign = new ApiSignature();
+ sign.createSignature(appKey, appSecretKey, "POST", uri, params);
+ try {
+ RequestBody body = RequestBody.create(JSON_TYPE, JSON.toJSONString(params));
+ Request.Builder builder = new Request.Builder().url(uri + "?" + toQueryString(params)).post(body);
+ Request request = builder.build();
+ Response response = httpClient.newCall(request).execute();
+ return response.body().string();
+ } catch (IOException e) {
+ throw new RuntimeException("IOException 目标url:" + uri, e);
+ }
+ }else{
+ ApiSignatureEd25519 sign = new ApiSignatureEd25519();
+ sign.createSignature(appKey, appSecretKey, "POST", uri, params);
+ try {
+ RequestBody body = RequestBody.create(JSON_TYPE, JSON.toJSONString(params));
+ Request.Builder builder = new Request.Builder().url(uri + "?" + toQueryString(params)).post(body);
+ Request request = builder.build();
+ Response response = httpClient.newCall(request).execute();
+ return response.body().string();
+ } catch (IOException e) {
+ throw new RuntimeException("IOException 目标url:" + uri, e);
+ }
}
+
+
}
diff --git a/src/main/java/com/huobi/wss/handle/WssNotificationHandle.java b/src/main/java/com/huobi/wss/handle/WssNotificationHandle.java
index ff08e86..99c9628 100644
--- a/src/main/java/com/huobi/wss/handle/WssNotificationHandle.java
+++ b/src/main/java/com/huobi/wss/handle/WssNotificationHandle.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.huobi.wss.SubscriptionListener;
import com.huobi.wss.util.ApiSignature;
+import com.huobi.wss.util.ApiSignatureEd25519;
import com.huobi.wss.util.ZipUtil;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
@@ -33,17 +34,19 @@ public class WssNotificationHandle {
private WebSocketClient webSocketClient;
private String accessKey;
private String secretKey;
+ private String sign;
private String host;
private String url;
private String pushUrl;//订单推送访问地址
private Long lastPingTime = System.currentTimeMillis();
- public WssNotificationHandle(String host,String url, String accessKey, String secretKey) {
+ public WssNotificationHandle(String host,String url, String accessKey, String secretKey,String sign) {
this.host = host;
this.url=url;
this.accessKey = accessKey;
this.secretKey = secretKey;
+ this.sign = sign;
}
public void sub(List channels, SubscriptionListener callback) throws URISyntaxException {
@@ -138,21 +141,42 @@ public void addAuth() {
return;
}
Map map = new HashMap<>();
- ApiSignature as = new ApiSignature();
- try {
+ if(this.sign.equals("256")){
+ ApiSignature as = new ApiSignature();
+ try {
+
+ //组合签名map
+ //Combined signature map
+ as.createSignature(accessKey, secretKey, "GET", host, url, map);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ map.put("op", "auth");
+ map.put("type", "api");
+ String req = JSON.toJSONString(map);
+ logger.info("before send ");
+ webSocketClient.send(req);
+ logger.info("after send ");
+
+ }else{
+ ApiSignatureEd25519 as = new ApiSignatureEd25519();
+ try {
+
+ //组合签名map
+ //Combined signature map
+ as.createSignature(accessKey, secretKey, "GET", host, url, map);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ map.put("op", "auth");
+ map.put("type", "api");
+ String req = JSON.toJSONString(map);
+ logger.info("before send ");
+ webSocketClient.send(req);
+ logger.info("after send ");
- //组合签名map
- //Combined signature map
- as.createSignature(accessKey, secretKey, "GET", host, url, map);
- } catch (Exception e) {
- e.printStackTrace();
}
- map.put("op", "auth");
- map.put("type", "api");
- String req = JSON.toJSONString(map);
- logger.info("before send ");
- webSocketClient.send(req);
- logger.info("after send ");
+
}
diff --git a/src/main/java/com/huobi/wss/util/ApiSignatureEd25519.java b/src/main/java/com/huobi/wss/util/ApiSignatureEd25519.java
new file mode 100644
index 0000000..6430f61
--- /dev/null
+++ b/src/main/java/com/huobi/wss/util/ApiSignatureEd25519.java
@@ -0,0 +1,131 @@
+package com.huobi.wss.util;
+
+import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
+import org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters;
+import org.bouncycastle.crypto.signers.Ed25519Signer;
+import org.bouncycastle.openssl.PEMParser;
+import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.Base64;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
+import org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters;
+import org.bouncycastle.crypto.params.Ed25519PublicKeyParameters;
+import org.bouncycastle.crypto.signers.Ed25519Signer;
+import org.bouncycastle.crypto.util.PrivateKeyFactory;
+import org.bouncycastle.crypto.util.PublicKeyFactory;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.bouncycastle.openssl.PEMParser;
+import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
+
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.bouncycastle.openssl.PEMParser;
+import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
+public class ApiSignatureEd25519 {
+ public static String op = "op";
+ public static String opValue = "auth";
+ public static String accessKeyId = "AccessKeyId";
+ public static String signatureMethod = "SignatureMethod";
+ public static String signatureMethodValue = "HmacSHA256";
+ public static String signatureVersion = "SignatureVersion";
+ public static String signatureVersionValue = "2";
+ public static String timestamp = "Timestamp";
+ public static String signature = "Signature";
+ /**
+ * API 签名, 签名标准: API Signature, the standard
+ */
+
+ static final DateTimeFormatter DT_FORMAT = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss");
+ static final ZoneId ZONE_GMT = ZoneId.of("Z");
+
+ public void createSignature(String base64PublicKey, String base64PrivateKey, String method, String host, String uri,
+ Map params) {
+ StringBuilder sb = new StringBuilder(1024);
+
+ // 1.请求方法 (GET or POST) 在后边加上`\n`.
+ sb.append(method.toUpperCase()).append('\n')
+ // 2. 小写的host 在后边加上 `\n`.
+ .append(host.toLowerCase()).append('\n')
+ // 3. 请求路径, 在后边加上 `\n`.
+ .append(uri).append('\n');
+
+ // 4.将签名按ASCII 排名
+ params.remove("Signature");
+ params.put("AccessKeyId", base64PublicKey);
+ params.put("SignatureVersion", "2");
+ params.put("SignatureMethod", "ED25519");
+ params.put("Timestamp", gmtNow());
+
+ // 按照上面的顺序,将每个参数与字符“&”连接。
+ SortedMap map = new TreeMap<>(params);
+ for (Map.Entry entry : map.entrySet()) {
+ String key = entry.getKey();
+ String value = entry.getValue();
+ sb.append(key).append('=').append(urlEncode(value)).append('&');
+ }
+ // 删除最后的 `&`
+ sb.deleteCharAt(sb.length() - 1);
+
+ // 使用 ED25519 进行签名
+ Ed25519PrivateKeyParameters privateKey = null;
+
+ // 从 PEM 格式中提取私钥
+ try (PEMParser pemParser = new PEMParser(new StringReader(base64PrivateKey))) {
+ Object object = pemParser.readObject();
+ if (object instanceof PrivateKeyInfo) {
+ JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
+ java.security.PrivateKey javaPrivateKey = converter.getPrivateKey((PrivateKeyInfo) object);
+ privateKey = (Ed25519PrivateKeyParameters) PrivateKeyFactory.createKey(javaPrivateKey.getEncoded());
+ } else {
+ throw new IllegalArgumentException("Invalid PEM format: not a private key");
+ }
+ } catch (Exception e) {
+ throw new RuntimeException("Error loading private key: " + e.getMessage(), e);
+ }
+
+ // 使用 ED25519 进行签名
+ Ed25519Signer signer = new Ed25519Signer();
+ signer.init(true, privateKey);
+ signer.update(sb.toString().getBytes(StandardCharsets.UTF_8), 0, sb.length());
+ byte[] signatureBytes = signer.generateSignature();
+ String actualSign = Base64.getEncoder().encodeToString(signatureBytes);
+
+ // 将签名放入params
+ params.put(signature, actualSign);
+ }
+
+
+ public static String urlEncode(String s) {
+ try {
+ return URLEncoder.encode(s, "UTF-8").replaceAll("\\+", "%20");
+ } catch (UnsupportedEncodingException e) {
+ throw new IllegalArgumentException("UTF-8 encoding not supported!");
+ }
+ }
+
+ /**
+ * 返回秒数
+ * Return epoch second
+ */
+ long epochNow() {
+ return Instant.now().getEpochSecond();
+ }
+
+ String gmtNow() {
+ return Instant.ofEpochSecond(epochNow()).atZone(ZONE_GMT).format(DT_FORMAT);
+ }
+
+}
diff --git a/src/test/java/com/huobi/future/api/AccountAPITest.java b/src/test/java/com/huobi/future/api/AccountAPIEd25119Test.java
similarity index 99%
rename from src/test/java/com/huobi/future/api/AccountAPITest.java
rename to src/test/java/com/huobi/future/api/AccountAPIEd25119Test.java
index 3c59c82..67e7f70 100644
--- a/src/test/java/com/huobi/future/api/AccountAPITest.java
+++ b/src/test/java/com/huobi/future/api/AccountAPIEd25119Test.java
@@ -11,7 +11,7 @@
import java.math.BigDecimal;
@FixMethodOrder(MethodSorters.JVM)
-public class AccountAPITest implements BaseTest {
+public class AccountAPIEd25119Test implements BaseTest {
AccountAPIServiceImpl huobiAPIService = new AccountAPIServiceImpl("", "");
diff --git a/src/test/java/com/huobi/future/api/AccountAPIHmac256Test.java b/src/test/java/com/huobi/future/api/AccountAPIHmac256Test.java
new file mode 100644
index 0000000..250cf21
--- /dev/null
+++ b/src/test/java/com/huobi/future/api/AccountAPIHmac256Test.java
@@ -0,0 +1,198 @@
+package com.huobi.future.api;
+
+import com.alibaba.fastjson.JSON;
+import com.huobi.api.request.coin_futures.account.*;
+import com.huobi.api.response.coin_futures.account.*;
+import com.huobi.api.service.coin_futures.account.AccountAPIServiceImpl;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+import java.math.BigDecimal;
+
+@FixMethodOrder(MethodSorters.JVM)
+public class AccountAPIHmac256Test implements BaseTest {
+
+
+ AccountAPIServiceImpl huobiAPIService = new AccountAPIServiceImpl("", "");
+
+ @Test
+ public void getContractBalanceValuation(){
+ ContractBalanceValuationResponse response=huobiAPIService.getContractBalanceValuation("");
+ logger.debug("1.获取账户总资产估值:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractAccountInfo() {
+ ContractAccountInfoResponse response = huobiAPIService.getContractAccountInfo("btc");
+ logger.debug("2.获取用户账户信息:{}", JSON.toJSONString(response));
+ response = huobiAPIService.getContractAccountInfo("");
+ logger.debug("2.获取用户账户信息:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractPositionInfo() {
+ ContractPositionInfoResponse response = huobiAPIService.getContractPositionInfo("btc");
+ logger.debug("3.获取用户持仓信息:{}", JSON.toJSONString(response));
+
+ response = huobiAPIService.getContractPositionInfo("");
+ logger.debug("3.获取用户持仓信息:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractSubAuth(){
+ ContractSubAuthResponse response=huobiAPIService.getContractSubAuth("1234,12344",1);
+ logger.debug("4.批量设置子账户交易权限:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractSubAuthList(){
+ ContractSubAuthListRequest request = ContractSubAuthListRequest.builder()
+ .build();
+ ContractSubAuthListResponse response = huobiAPIService.getContractSubAuthList(request);
+ logger.debug("5.查询子账户交易权限:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractSubAccountList() {
+ ContractSubAccountListResponse response = huobiAPIService.getContractSubAccountList("btc","",null);
+ logger.debug("6.查询母账户下所有子账户资产信息:{}", JSON.toJSONString(response));
+
+ response = huobiAPIService.getContractSubAccountList("","",null);
+ logger.debug("6.查询母账户下所有子账户资产信息:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractSubAccountInfoLIst(){
+ ContractSubAccountInfoListRequest request= ContractSubAccountInfoListRequest.builder()
+ .symbol("btc")
+ .pageIndex(1)
+ .pageSize(20)
+ .build();
+ ContractSubAccountInfoListResponse response=huobiAPIService.getContractSubAccountInfoList(request);
+ logger.debug("7.批量获取子账户资产信息:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractSubAccountInfo() {
+ ContractSubAccountInfoResponse response = huobiAPIService.getContractSubAccountInfo("", 1l);
+ logger.debug("8.查询单个子账户资产信息:{}", JSON.toJSONString(response));
+ logger.debug(response.getStatus());
+ }
+
+ @Test
+ public void getContractSubPositionInfo() {
+ ContractSubPositionInfoResponse response = huobiAPIService.getContractSubPositionInfo("", 1l);
+ logger.debug("9.查询单个子账户持仓信息:{}", JSON.toJSONString(response));
+ logger.debug(response.getStatus());
+ }
+
+ @Test
+ public void getContractFinancialRecordV3(){
+ ContractFinancialRecordV3Request request = ContractFinancialRecordV3Request.builder()
+ .type("3,4,5,6,7,8")
+ .symbol("BTC")
+ .build();
+ ContractFinancialRecordV3Response response = huobiAPIService.getContractFinancialRecordV3(request);
+ logger.debug("10.查询用户财务记录(新):{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractFinancialRecordExactV3(){
+ ContractFinancialRecordExactV3Request request = ContractFinancialRecordExactV3Request.builder()
+ .type("3,4,5,6,7,8")
+ .symbol("BTC")
+ .build();
+ ContractFinancialRecordExactV3Response response = huobiAPIService.getContractFinancialRecordExactV3(request);
+ logger.debug("11.组合查询用户财务记录(新):{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractUserSettlementRecordsResponse() {
+ ContractUserSettlementRecordsRequest request = ContractUserSettlementRecordsRequest.builder()
+ .symbol("ada")
+ //.startTime("")
+ //.endTime("")
+ //.pageIndex()
+ //.pageSize()
+ .build();
+ ContractUserSettlementRecordsResponse response = huobiAPIService.getContractUserSettlementRecords(request);
+ logger.debug("12.查询用户结算记录:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractOrderLimitResponse() {
+ ContractOrderLimitResponse response = huobiAPIService.getContractOrderLimitResponse("btc", "limit");
+ logger.debug("13.查询用户当前的下单量限制:{}", JSON.toJSONString(response));
+ response = huobiAPIService.getContractOrderLimitResponse("", "limit");
+ logger.debug("13.查询用户当前的下单量限制:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractFeeResponse() {
+ ContractFeeResponse response = huobiAPIService.getContractFeeResponse("btc");
+ logger.debug("14.查询用户当前的手续费费率:{}", JSON.toJSONString(response));
+ response = huobiAPIService.getContractFeeResponse("");
+ logger.debug("14.查询用户当前的手续费费率:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractTransferLimitResponse() {
+ ContractTransferLimitResponse response = huobiAPIService.getContractTransferLimitResponse("btc");
+ logger.debug("15.查询用户当前的划转限制:{}", JSON.toJSONString(response));
+ response = huobiAPIService.getContractTransferLimitResponse("");
+ logger.debug("15.查询用户当前的划转限制:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractPositionLimitResponse() {
+ ContractPositionLimitResponse response = huobiAPIService.getContractPositionLimitResponse("btc");
+ logger.debug("16.用户持仓量限制的查询:{}", JSON.toJSONString(response));
+
+ response = huobiAPIService.getContractPositionLimitResponse("");
+ logger.debug("16.用户持仓量限制的查询:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractAccountPositionInfoResponse() {
+ ContractAccountPositionInfoResponse response = huobiAPIService.getContractAccountPositionInfo("ada");
+ logger.debug("17.用户持仓量限制的查询:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractMasterSubTransferResponse() {
+ ContractMasterSubTransferRequest request = ContractMasterSubTransferRequest.builder()
+ .subUid(1l)
+ .symbol("ada")
+ .amount(BigDecimal.valueOf(35))
+ .type("sub_to_master")
+ .build();
+ ContractMasterSubTransferResponse response = huobiAPIService.getContractMasterSubTransfer(request);
+ logger.debug("18.母子帐户划转:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractMasterSubTransferRecord() {
+ ContractMasterSubTransferRecordRequest request = ContractMasterSubTransferRecordRequest.builder()
+ .symbol("ada")
+ .transferType("")
+ .createDate(90)
+ .pageIndex(1)
+ .pageSize(20)
+ .build();
+ ContractMasterSubTransferRecordResponse response = huobiAPIService.getContractMasterSubTransferRecord(request);
+ logger.debug("19.获取母账户下的所有母子账户划转记录:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractApiTradingStatus() {
+ ContractApiTradingStatusResponse response = huobiAPIService.getContractApiTradingStatus();
+ logger.debug("20.获取母账户下的所有母子账户划转记录:{}", JSON.toJSONString(response));
+ }
+
+ @Test
+ public void getContractAvailableLevelRate() {
+ ContractAvailableLevelRateResponse response = huobiAPIService.getContractAvailableLevelRate("btc");
+ logger.debug("21.查询用户可用杠杆倍数:{}", JSON.toJSONString(response));
+ }
+}
diff --git a/src/test/java/com/huobi/future/wss/WssCenterNotificationSubTest.java b/src/test/java/com/huobi/future/wss/WssCenterNotificationSubEd25519Test.java
similarity index 72%
rename from src/test/java/com/huobi/future/wss/WssCenterNotificationSubTest.java
rename to src/test/java/com/huobi/future/wss/WssCenterNotificationSubEd25519Test.java
index 36340f8..8113caf 100644
--- a/src/test/java/com/huobi/future/wss/WssCenterNotificationSubTest.java
+++ b/src/test/java/com/huobi/future/wss/WssCenterNotificationSubEd25519Test.java
@@ -11,11 +11,16 @@
import java.net.URISyntaxException;
import java.util.List;
-public class WssCenterNotificationSubTest {
+public class WssCenterNotificationSubEd25519Test {
private final Logger logger = LoggerFactory.getLogger(getClass());
private String host = "api.hbdm.com";
private String url = "/center-notification";
- WssNotificationHandle wssNotificationHandle = new WssNotificationHandle(host, url, "", "");
+ private String sign="25519";
+ // 这里的sign代表着是使用hmac256签名方法还是Ed25519签名方法。这里的publickey和privatekey公钥和私钥
+// The sign indicates whether to use the hmac256 signature method or the Ed25519 signature method. Here are the publickey and privatekey public and private keys
+ private String publicKey="";
+ private String privateKey="";
+ WssNotificationHandle wssNotificationHandle = new WssNotificationHandle(host, url, publicKey, privateKey,sign);
@Test
public void test1() throws URISyntaxException, InterruptedException {
diff --git a/src/test/java/com/huobi/future/wss/WssCenterNotificationSubHmac256Test.java b/src/test/java/com/huobi/future/wss/WssCenterNotificationSubHmac256Test.java
new file mode 100644
index 0000000..512b5ca
--- /dev/null
+++ b/src/test/java/com/huobi/future/wss/WssCenterNotificationSubHmac256Test.java
@@ -0,0 +1,37 @@
+package com.huobi.future.wss;
+
+import com.alibaba.fastjson.JSON;
+import com.google.common.collect.Lists;
+import com.huobi.wss.event.PublicHeartbeatSubResponse;
+import com.huobi.wss.handle.WssNotificationHandle;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.net.URISyntaxException;
+import java.util.List;
+
+public class WssCenterNotificationSubHmac256Test {
+ private final Logger logger = LoggerFactory.getLogger(getClass());
+ private String host = "api.hbdm.com";
+ private String url = "/center-notification";
+ private String sign="256";
+ // 这里的sign代表着是使用hmac256签名方法还是Ed25519签名方法。这里的accesskey和secretkey代表了公钥和私钥。
+// The sign indicates whether to use the hmac256 signature method or the Ed25519 signature method. Here accesskey and secretkey represent the public and private keys.
+ private String accessKey="";
+ private String secretKey="";
+ WssNotificationHandle wssNotificationHandle = new WssNotificationHandle(host, url, accessKey, secretKey,sign);
+
+ @Test
+ public void test1() throws URISyntaxException, InterruptedException {
+ List channels = Lists.newArrayList();
+ channels.add("public.futures.heartbeat");
+ wssNotificationHandle.sub(channels, response -> {
+ logger.info("用户收到的数据===============:{}", JSON.toJSON(response));
+ Long currentTimeMillis = System.currentTimeMillis();
+ PublicHeartbeatSubResponse event = JSON.parseObject(response, PublicHeartbeatSubResponse.class);
+ logger.info("ts为:{},当前的时间戳为:{},时间间隔为:{}毫秒", event.getTs(), currentTimeMillis, currentTimeMillis - event.getTs());
+ });
+ Thread.sleep(Integer.MAX_VALUE);
+ }
+}
diff --git a/src/test/java/com/huobi/future/wss/WssNotificationSubTest.java b/src/test/java/com/huobi/future/wss/WssNotificationSubTest.java
index 9fdf693..6aa41be 100644
--- a/src/test/java/com/huobi/future/wss/WssNotificationSubTest.java
+++ b/src/test/java/com/huobi/future/wss/WssNotificationSubTest.java
@@ -16,8 +16,11 @@ public class WssNotificationSubTest {
private final Logger logger = LoggerFactory.getLogger(getClass());
private String host="api.hbdm.com";
private String url="/notification";//注意地址上一定要带上"/"。
+ private String sign="256";
+ private String key="";
+ private String secret="";
//private String URL = "wss://api.hbdm.com/notification";//订单推送访问地址.更换请求的域名时,需将WssNotificationHandle类中的addAuth()方法里面的域名也一起替换掉。
- WssNotificationHandle wssNotificationHandle = new WssNotificationHandle( host , url , "", "");
+ WssNotificationHandle wssNotificationHandle = new WssNotificationHandle( host , url , key, secret,sign);
@Test
diff --git a/src/test/java/com/huobi/swap/wss/WssCenterNotificationSubTest.java b/src/test/java/com/huobi/swap/wss/WssCenterNotificationSubTest.java
index 4b6b0dc..18a865a 100644
--- a/src/test/java/com/huobi/swap/wss/WssCenterNotificationSubTest.java
+++ b/src/test/java/com/huobi/swap/wss/WssCenterNotificationSubTest.java
@@ -15,7 +15,8 @@ public class WssCenterNotificationSubTest {
private final Logger logger = LoggerFactory.getLogger(getClass());
private String host = "api.hbdm.com";
private String url = "/center-notification";
- WssNotificationHandle wssNotificationHandle = new WssNotificationHandle(host, url, "", "");
+ private String sign="256";
+ WssNotificationHandle wssNotificationHandle = new WssNotificationHandle(host, url, "", "",sign);
@Test
public void test1() throws URISyntaxException, InterruptedException {
diff --git a/src/test/java/com/huobi/swap/wss/WssNotificationSubTest.java b/src/test/java/com/huobi/swap/wss/WssNotificationSubTest.java
index bbda878..149d978 100644
--- a/src/test/java/com/huobi/swap/wss/WssNotificationSubTest.java
+++ b/src/test/java/com/huobi/swap/wss/WssNotificationSubTest.java
@@ -17,7 +17,8 @@ public class WssNotificationSubTest {
private final Logger logger = LoggerFactory.getLogger(getClass());
private String host = "api.hbdm.com";
private String url = "/swap-notification";//注意地址前面要带上"/"
- WssNotificationHandle wssNotificationHandle = new WssNotificationHandle(host, url, "", "");
+ private String sign="256";
+ WssNotificationHandle wssNotificationHandle = new WssNotificationHandle(host, url, "", "",sign);
@Test
public void test1() throws URISyntaxException, InterruptedException {
diff --git a/src/test/java/com/huobi/usdt/wss/WssCenterNotificationSubTest.java b/src/test/java/com/huobi/usdt/wss/WssCenterNotificationSubTest.java
index 9aa0765..0c5f07c 100644
--- a/src/test/java/com/huobi/usdt/wss/WssCenterNotificationSubTest.java
+++ b/src/test/java/com/huobi/usdt/wss/WssCenterNotificationSubTest.java
@@ -15,7 +15,8 @@ public class WssCenterNotificationSubTest {
private final Logger logger = LoggerFactory.getLogger(getClass());
private String host = "api.hbdm.com";
private String url = "/center-notification";
- WssNotificationHandle wssNotificationHandle = new WssNotificationHandle(host, url, "", "");
+ private String sign="256";
+ WssNotificationHandle wssNotificationHandle = new WssNotificationHandle(host, url, "", "",sign);
@Test
public void test1() throws URISyntaxException, InterruptedException {
diff --git a/src/test/java/com/huobi/usdt/wss/WssNotificationSubTest.java b/src/test/java/com/huobi/usdt/wss/WssNotificationSubTest.java
index 5859621..0bcd61b 100644
--- a/src/test/java/com/huobi/usdt/wss/WssNotificationSubTest.java
+++ b/src/test/java/com/huobi/usdt/wss/WssNotificationSubTest.java
@@ -17,7 +17,8 @@ public class WssNotificationSubTest {
private final Logger logger = LoggerFactory.getLogger(getClass());
private String host = "api.hbdm.com";
private String url = "/linear-swap-notification";
- WssNotificationHandle wssNotificationHandle = new WssNotificationHandle(host, url, "", "");
+ private String sign="256";
+ WssNotificationHandle wssNotificationHandle = new WssNotificationHandle(host, url, "", "",sign);
@Test
public void test1() throws URISyntaxException, InterruptedException {