美文网首页加密货币
币安(binance)API接口

币安(binance)API接口

作者: voltric | 来源:发表于2018-01-20 10:49 被阅读3820次

    原文链接

    基本信息

    • URL: https://api.binance.com
    • JSON协议
    • 数据默认按ASC(升序)排序,时间早的在上面
    • 所有和时间有关的单位都是毫秒
    • HTTP 4XX : 请求方引起的错误
    • HTTP 429 : 限流
    • HTTP 418 : 同一个IP被限流后继续发送请求,则返回418错误
    • HTTP 5XX : 币安系统返回的错误哦
    • HTTP 504 : 超时
    • 返回错误时的消息JSON格式:
    {
      "code": -1121,
      "msg": "Invalid symbol."
    }
    
    • 对于GET方式的请求,请求参数都要求是Query String类型
    • 对于POST/PUT/DELETE类型的请求,请求参数可以是Query String类型或者在request body中设置请求类型为application/x-www-form-urlencoded.
    • Query String类型的参数优先级最高

    LIMIT限制

    • 请求API:/api/v1/exchangeInfo. 可以在rateLimits结果中查询请求的频率限制是多少

    安全类型

    • 每个端的安全类型决定着如何来交互
    • API-keys和secret-keys非常敏感,要妥善保管
    Security Type Description
    NONE Endpoint can be accessed freely.
    TRADE Endpoint requires sending a valid API-Key and signature.
    USER_DATA Endpoint requires sending a valid API-Key and signature.
    USER_STREAM Endpoint requires sending a valid API-Key.
    MARKET_DATA Endpoint requires sending a valid API-Key.
    • TRADE和USER_DATA需要加密验证

    密钥验证

    • 对请求使用HMAC SHA256加密方式,使用个人账户里的secretKey和要请求的所有参数一起做HMAC加密处理
    • 所有的请求参数就是query string或者request body里的json参数
    • 加密还需要一个时间戳的参数: timestamp
    • 还需要传一个recvWindow参数,币安服务端会和timestamp一起用来控制本次请求是否执行,默认5000. 要求请求时间timestamp和币安的服务器时间, 差值不能大于recvWindow
    // 服务端判断条件例子
     if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow) {
        // process request
      } else {
        // reject request
      }
    
    • 为了交易的安全性和网络波动的影响, 建议recvWindow设置在5000以内

    下面是Linux命令模拟加密请求的一个例子

    Key Value
    apiKey vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A
    secretKey NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j
    Parameter Value
    symbol LTCBTC
    side BUY
    type LIMIT
    timeInForce GTC
    quantity 1
    price 0.1
    recvWindow 5000
    timestamp 1499827319559

    Example 1: As a query string

    • queryString: symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559

    • HMAC SHA256 signature:

      [linux]$ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
      (stdin)= c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71
      
    • curl command:

      (HMAC SHA256)
      [linux]$ curl -H "X-MBX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api.binance.com/api/v3/order?symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71'
      

    Example 2: As a request body

    • requestBody: symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559

    • HMAC SHA256 signature:

      [linux]$ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
      (stdin)= c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71
      
    • curl command:

      (HMAC SHA256)
      [linux]$ curl -H "X-MBX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api.binance.com/api/v3/order' -d 'symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=6000000&timestamp=1499827319559&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71'
      

    Example 3: Mixed query string and request body

    • queryString: symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC

    • requestBody: quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559

    • HMAC SHA256 signature:

      [linux]$ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTCquantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
      (stdin)= 0fd168b8ddb4876a0358a8d14d0c9f3da0e9b20c5d52b2a00fcf7d1c602f9a77
      
    • curl command:

      (HMAC SHA256)
      [linux]$ curl -H "X-MBX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api.binance.com/api/v3/order?symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC' -d 'quantity=1&price=0.1&recvWindow=6000000&timestamp=1499827319559&signature=0fd168b8ddb4876a0358a8d14d0c9f3da0e9b20c5d52b2a00fcf7d1c602f9a77'
      

    相关文章

      网友评论

      • 追月之神:不知道怎么能通过他的接口获取最新价格是美元?
        voltric:@追月之神 到交易网站上面看有没有BTC/美元, 或者ETH/美元这种计价单位. 如果有就可以, 如果没有就不行了.
        币安现在被墙, 已转战火币

      本文标题:币安(binance)API接口

      本文链接:https://www.haomeiwen.com/subject/myizoxtx.html