binance-kit.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. const CryptoJS = require('crypto')
  2. module.exports = class BinanceKit {
  3. // 创建签名
  4. static createSignature(secretKey, data) {
  5. const hmac = CryptoJS.createHmac('sha256', secretKey)
  6. hmac.update(BinanceKit.toQueryString(data))
  7. return hmac.digest('hex')
  8. }
  9. // 将map转换为queryString
  10. static toQueryString(data) {
  11. let queryString = ''
  12. for (let key in data) {
  13. queryString = queryString + `${key}=${data[key]}&`
  14. }
  15. return queryString.substring(0, queryString.length - 1)
  16. }
  17. // 获取最终QueryURL
  18. static toFinalQueryURL(url, data, signature) {
  19. return `${url}?${BinanceKit.toQueryString(data)}&signature=${signature}`
  20. }
  21. static buildExchangeInfoSymbols(symbols) {
  22. let buffer = ''
  23. let isFirst = true
  24. for (const symbol of symbols) {
  25. if (isFirst) {
  26. isFirst = false
  27. buffer = `["${symbol}"`
  28. } else {
  29. buffer = `${buffer},"${symbol}"`
  30. }
  31. }
  32. return `${buffer}]`
  33. }
  34. static parsePriceTickFilterMap(pairInfoList) {
  35. if (pairInfoList === undefined) throw new Error('exchange info symbols is undefined!')
  36. const filterMap = {}
  37. pairInfoList.forEach(function (pairInfo) {
  38. const priceTickFilter = pairInfo.filters.filter(filterObj => filterObj.filterType === 'PRICE_FILTER')[0]
  39. filterMap[pairInfo.symbol] = Math.log10(1 / parseFloat(priceTickFilter.tickSize))
  40. })
  41. return filterMap
  42. }
  43. }