package rest.zb.rest.api;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
import org.apache.commons.lang3.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.jfinal.kit.PathKit;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval;
import entity.commons.UserApi;
import entity.enumtype.SymbolEnum;
import entity.enumtype.TradeEnum;
import jodd.http.HttpRequest;
import jodd.io.FileUtil;
import jodd.template.MapTemplateParser;
import jodd.util.StringUtil;
import kits.my.EncryDigestUtil;
import lombok.Data;
import lombok.val;
import lombok.extern.slf4j.Slf4j;
import rest.zb.api.util.MapSort;
import rest.zb.rest.entity.Order;
import rest.zb.rest.entity.TradeResult;
import rest.zb.rest.entity.post.Account;
@Data
@Slf4j
public class RestApiPost {
private String symbol;
private UserApi userApi;
private String url;
public RestApiPost(String url, SymbolEnum symbol, UserApi userApi) {
super();
this.userApi = userApi;
this.symbol = symbol.name();
this.url = url;
}
public RestApiPost(String url, String symbol, UserApi userApi) {
super();
this.userApi = userApi;
this.symbol = symbol;
this.url = url;
}
/**
* 获取子账号列表接口
*/
public void getSubUserList() {
TimeInterval timer = DateUtil.timer();
Map<String, String> params = new TreeMap<String, String>();
// 保持队形1.method,2.accesskey
params.put("method", "getSubUserList");
params.put("accesskey", userApi.getApiKey());// 这个需要加入签名,放前面
log.debug("参数:" + params);
String json = this.getJsonPost(params);
log.debug("执行时间:" + timer.intervalMs() + "子账户列表::" + json);
}
/**
* 添加子账号接口
*/
public void addSubUser() {
TimeInterval timer = DateUtil.timer();
Map<String, String> params = new TreeMap<String, String>();
params.put("accesskey", userApi.getApiKey());// 这个需要加入签名,放前面
params.put("method", "addSubUser");
params.put("password", "pass123457");
params.put("subUserName", "test33");
params.put("memo", "hah");
log.debug("下单参数:" + params.toString());
String json = getJsonPost(params);
log.debug("执行时间:" + timer.intervalMs() + "添加子账号接口返回:" + json);
}
/** 主子账号内部转账 */
public void doTransferFunds() {
TimeInterval timer = DateUtil.timer();
Map<String, String> params = new TreeMap<String, String>();
params.put("accesskey", userApi.getApiKey());// 这个需要加入签名,放前面
params.put("amount", "1");
params.put("method", "doTransferFunds");
params.put("currency", "doge");
params.put("fromUserName", "lianlianyi@vip.qq.com");
params.put("toUserName", "lianlianyi@test12");
log.debug("下单参数:" + params.toString());
String json = getJsonPost(params);
log.debug("执行时间:" + timer.intervalMs() + "主子账号互转返回:" + json);
}
/**
* 创建子账号APIkey
*/
public void createSubUserKey() {
TimeInterval timer = DateUtil.timer();
Map<String, String> params = new TreeMap<String, String>();
params.put("method", "createSubUserKey");
params.put("accesskey", userApi.getApiKey());// 这个需要加入签名,放前面
params.put("toUserId", "1325607");
params.put("keyName", "myKey11");
// params.put("apiIpBind", "");//不要传""
params.put("assetPerm", "true");// 查询资产权限:查询账号及资产情况:0-不可以,1:可以'
params.put("entrustPerm", "true");// 委托交易权限:委托,取消,查询交易订单:0-不可以,1:可以
params.put("moneyPerm", "true");// 充值提币权限:获取充值,提币地址和记录,发起提币业务:0-不可以,1:可以
params.put("leverPerm", "true");// 杠杆理财权限:理财管理,借贷管理:0-不可以,1:可以
log.debug("下单参数:" + params.toString());
String json = getJsonPost(params);
log.debug("执行时间:" + timer.intervalMs() + "下单返回:" + json);
}
/** 现价买入 */
public TradeResult buy(double price, double amount) {
TimeInterval timer = DateUtil.timer();
Map<String, String> params = new TreeMap<String, String>();
params.put("method", "order");
params.put("accesskey", userApi.getApiKey());// 这个需要加入签名,放前面
params.put("price", Convert.toStr(price));
params.put("amount", Convert.toStr(amount));
params.put("tradeType", "1");// 交易类型1/0[buy/sell]
params.put("currency", symbol);// 交易类型(目前仅支持BTC/LTC/ETH)
params.put("acctType", "0");
log.debug("下单参数:" + params.toString());
String json = getJsonPost(params);
log.debug("执行时间:" + timer.intervalMs() + "下单返回:" + json);
return JSONObject.parseObject(json, TradeResult.class);
}
/** 现价卖出 */
public TradeResult sell(double price, double amount) {
TimeInterval timer = DateUtil.timer();
Map<String, String> params = new TreeMap<String, String>();
params.put("method", "order");
params.put("accesskey", userApi.getApiKey());// 这个需要加入签名,放前面
params.put("price", Convert.toStr(price));
params.put("amount", Convert.toStr(amount));
params.put("tradeType", "0");// 交易类型1/0[buy/sell]
params.put("currency", symbol);// 交易类型(目前仅支持BTC/LTC/ETH)
params.put("acctType", "0");
log.debug("下单参数:" + params.toString());
String json = getJsonPost(params);
log.debug("执行时间:" + timer.intervalMs() + "下单返回:" + json);
return JSONObject.parseObject(json, TradeResult.class);
}
/** 获取订单信息 **/
public Order getOrder(long orderId) {
TimeInterval timer = DateUtil.timer();
Map<String, String> params = new TreeMap<String, String>();
// 保持队形1.method,2.accesskey,3.id,4.currency
params.put("method", "getOrder");
params.put("accesskey", userApi.getApiKey());//
// 这个需要加入签名,放前面
params.put("id", orderId + "");
params.put("currency", symbol);// 默认
String json = this.getJsonPost(params);
log.debug("执行时间:" + timer.intervalMs() + "查询订单:" + json);
return JSONObject.parseObject(json, Order.class);
}
/**
* 获取所有订单,获取多个委托买单或卖单,每次请求返回10条记录(返回null则没有订单)
*
* @param tradeType交易类型1/0[buy/sell]
* @param pageIndex页数
*/
public void getOrders(TradeEnum tradeType, int pageIndex) {
TimeInterval timer = DateUtil.timer();
// 会抛出json{"code":3001,"message":"挂单没有找到"}
Map<String, String> params = new TreeMap<String, String>();
// 保持队形1.method,2.accesskey,3.id,4.currency
params.put("method", "getOrders");
params.put("accesskey", userApi.getApiKey());//
// 这个需要加入签名,放前面
params.put("tradeType", Convert.toStr(tradeType.getType()));
params.put("currency", symbol);
params.put("pageIndex", pageIndex + "");
// log.debug(params.toString());
String json = getJsonPost(params);
log.debug("执行时间:" + timer.intervalMs() + "获取多个委托:" + json);
}
/**
* 获取未成交或部份成交的买单和卖单,每次请求返回pageSize<=100条记录
*
* @param pageIndex
* @return
*/
public List<Order> getUnfinishedOrdersIgnoreTradeType(int pageIndex) {
// 会抛出json{"code":3001,"message":"挂单没有找到"}
Map<String, String> params = new TreeMap<String, String>();
// 保持队形1.method,2.accesskey,3.id,4.currency
params.put("method", "getUn
没有合适的资源?快使用搜索试试~ 我知道了~
zb-api-master.zip

共130个文件
java:85个
template:14个
project:8个

6 浏览量
2023-03-25
15:31:08
上传
评论
收藏 213KB ZIP 举报
温馨提示
合约,交易所
资源推荐
资源详情
资源评论












收起资源包目录





































































































共 130 条
- 1
- 2
资源评论


m0_72731342
- 粉丝: 1
- 资源: 1833
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制
