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 {