nodejs实现聚币网api调用

来源:sansantao.com/archives/24.html

之前了解了下btc,了解了解,就了解到了山寨币的圈子,然后就不知不觉的注册了聚币,这个东西,基本上是靠运气啊,我赶着这么好的行情,竟然在亏钱。。。

在聊天室里,看有人聊小波段,还说了哪个币比较稳定,我就想着问问,他小波段怎么操作,结果没搭理我。最后我想了下,不告诉我,我自己研究呗,最后还真研究出了点套路,不过管不管用还得实践啊,而且因为工作问题,没时间和精力操作短线,所以就想着写个程序搞定吧,正好之前看到聚币有api,就开始干了。

聚币的api文档写的真是烂啊,基本上只能看看每个字段代表什么意思,其他都得琢磨,网上找了下,也没有node实现的,只有python实现的,只好边参考边写了,不过最后还是搞出来了。嘻嘻。

下面开始正文:


开始前,我要需要几个模块,这几个模块node自带,不需要npm下载

var https = require('https');
var crypto = require('crypto'); // 加密模块
var querystring = require("querystring");

模块有了以后,我们就可以开始写代码啦,先把必要的东西设置好了。

var url = 'www.jubi.com';
var apis = {
    getApiPrice : '/api/v1/ticker/', // 获取价格
    getApiAccount : '/api/v1/balance/', // 获取用户信息
    getApiPending : '/api/v1/trade_list/', // 获取挂单列表
    getApiOrder : '/api/v1/trade_view/', // 获取挂单详情
    setApiAdd : '/api/v1/trade_add/', // 下单
    setApiCancel : '/api/v1/trade_cancel/', // 取消订单
}
var key = 'abcde-abcde-abcde-abcde-abcde-abcde-abcde'; // 公钥
var privateKey = '自己的私钥'; // 私钥
var coin = 'btc'; // 币种

这样我们就可以直接请求当前价格了。

// 获取当前价格
var getPrice = () => {
    var ops = {
            method: 'GET',
            host: url,
            port: '443',
            path: apis.getApiPrice + '?coin='+coin
        }
    var req = https.request(ops,(res) => {
        var datas = '';
        res.on('data', (data) => {
            datas += data;
        })
        res.on('end', (data) => {
            var date = new Date();
            datas = JSON.parse(datas);
            console.log(datas)
        })
    }).on('error',(err) => {
        console.log('获取价格异常,异常原因'+err);
    })
    req.end();
}
getPrice()

这样就可以获取当前币的价格了,这个是没问题的,下面这个,搞了好久,也是最主要的,这个操作通了,其他就不是问题了。

首先是加密问题,加密有个坑,就是你加密参数的顺序,必须和传给聚币服务端的顺序一样,要不然就报104错误。随机数因为看哪个python教程说是12位,我也就没试13位行不行,就做了下处理。

先用md5把公钥加密,再把传进来的参数做成以“&”链接的字符串,然后在用公钥,通过sha256加密字符串

// 生成随机数
var nonce = () => parseInt(new Date().getTime()/10);
// 加密
var signature = (data,privateKey) => {
    var _result = [];
    for (var key in data){
        var value = data[key];
        _result.push(key + '=' + value);
    }
    var sign = crypto.createHash('md5').update(privateKey).digest('hex');
    var hash = crypto.createHmac('sha256', sign).update(_result.join('&')).digest('hex');
    return hash;
}

好啦,加密函数弄完了,开始写个获取账户信息吧,这个弄好了,其他操作就都一样了。
其实坑我都踩了。。。照着写就好

// 获取账户信息
var getAccount = () => {
    var opstions = {nonce:nonceValue, key:key};
    var signatureValue = signature(opstions,privateKey);
    opstions.signature = signatureValue;
    var ops = {
            method: 'POST',
            host: url,
            port: '443',
            path: apis.getApiAccount,
            headers:{
                'Content-Type': 'application/x-www-form-urlencoded'
            }
        }
    var req = https.request(ops,(res) => {
        var datas = '';
        res.on('data', (data) => {
            datas += data;
        })
        res.on('end', (data) => {
            datas = JSON.parse(datas);
            console.log(datas)
        })
    })
    req.on('error',(err) => {
        console.log('获取账户信息异常,异常原因'+err);
    })
    req.write(opstions);
    req.end();
}

getAccount();

好啦,就这么多,其他的接口都跟上面差不多

?水滴钱包-免费的以太坊批量转账钱包
H5中的meta元信息汇总?
上一篇:水滴钱包-免费的以太坊批量转账钱包
下一篇:H5中的meta元信息汇总
评论

如果我的文章对你有帮助,或许可以打赏一下呀!

支付宝
微信
QQ