# 簽名認證

# 創建API

在對任何請求進行簽名之前,您必須通過 BingX 網站【用戶中心】-【API管理(專業合約)】創建一個API key。 創建key後,您將獲得2個必須記住的信息:

  • API Key
  • Secret Key

API Key 和 Secret Key將由隨機生成和提供。

# 請求內容

所有REST請求都必須包含以下參數:

  • API Key作為一個字元串。
  • sign 使用一定演算法得出的簽名(請參閱簽名信息)。
  • timestamp 作為您的請求的時間戳。
  • 所有請求都應該含有application/json類型內容,並且是有效的JSON。

# 簽名說明

sign 是對http method,url path,請求參數等按字元串連接之後使用 HMAC SHA256 方法加密而得到的。

  • path 為URL的請求路徑,例如: /api/v1/user/getBalance
  • method 是請求方法(POST/GET/PUT/DELETE),字母全部大寫。
  • 參數是對 所有參數(含timestamp)按照字典排序之後,按照key1=value1 + key2=value2 ... + Secret Key 字元串(+表示字元串連接)。

originString = method + path + params sign = HmacSHA256(originString)

例如:對於如下的請求參數進行簽名

curl "https://api-swap-rest.bingbon.pro/api/v1/user/getBalance"
      
  • 通過POST方式獲取獲取用戶某資產餘額信息,以 apiKey=Zsm4DcrHBTewmVaElrdwA67PmivPv6VDK6JAkiECZ9QfcUnmn67qjCOgvRuZVOzU, secretKey=UuGuyEGt6ZEkpUObCYCmIfh0elYsZVh80jlYwpJuRZEw70t6vomMH7Sjmf94ztSI 為例
timestamp = 1615272721001
apiKey = Zsm4DcrHBTewmVaElrdwA67PmivPv6VDK6JAkiECZ9QfcUnmn67qjCOgvRuZVOzU
currency = USDT

請求參數按字典排序之後,為

apiKey = Zsm4DcrHBTewmVaElrdwA67PmivPv6VDK6JAkiECZ9QfcUnmn67qjCOgvRuZVOzU
currency = USDT
timestamp = 1615272721001

mothod為POST,path為/api/v1/user/getBalance,生成待簽名的參數字元串如下:

paramString = 'apiKey=Zsm4DcrHBTewmVaElrdwA67PmivPv6VDK6JAkiECZ9QfcUnmn67qjCOgvRuZVOzU&currency=USDT&timestamp=1615272721001'

按演算法生成待簽名的字元串

originString = 'POST/api/v1/user/getBalanceapiKey=Zsm4DcrHBTewmVaElrdwA67PmivPv6VDK6JAkiECZ9QfcUnmn67qjCOgvRuZVOzU&currency=USDT&timestamp=1615272721001'
  

然後,將待簽名字元串添加私鑰參數生成最終待簽名字元串。

例如:

Signature = HmacSHA256(secretkey, originString)
Signature = Base64Encode(Signature)
Signature = UrlEncode(Signature)

即:
Signature = HmacSHA256("UuGuyEGt6ZEkpUObCYCmIfh0elYsZVh80jlYwpJuRZEw70t6vomMH7Sjmf94ztSI", "POST/api/v1/user/getBalanceapiKey=Zsm4DcrHBTewmVaElrdwA67PmivPv6VDK6JAkiECZ9QfcUnmn67qjCOgvRuZVOzU&currency=USDT&timestamp=1616488398013")

echo -n "POST/api/v1/user/getBalanceapiKey=Zsm4DcrHBTewmVaElrdwA67PmivPv6VDK6JAkiECZ9QfcUnmn67qjCOgvRuZVOzU&currency=USDT&timestamp=1616488398013" | openssl dgst -sha256 -hmac "UuGuyEGt6ZEkpUObCYCmIfh0elYsZVh80jlYwpJuRZEw70t6vomMH7Sjmf94ztSI" -binary | base64 | xargs python2.7 -c 'import sys, urllib;print(urllib.quote(sys.argv[1]))'

Signature的結果為S7Ok3L5ROXSbYfXj9ryeBbKfRosh9tmH%2FAKiwj7eAoc%3D,則簽名之後的url query參數為

apiKey = Zsm4DcrHBTewmVaElrdwA67PmivPv6VDK6JAkiECZ9QfcUnmn67qjCOgvRuZVOzU
currency = USDT
timestamp = 1616488398013
sign = S7Ok3L5ROXSbYfXj9ryeBbKfRosh9tmH%2FAKiwj7eAoc%3D

即最終發送給伺服器的API請求應該為:
"https://api-swap-rest.bingbon.pro/api/v1/user/getBalance?apiKey=Zsm4DcrHBTewmVaElrdwA67PmivPv6VDK6JAkiECZ9QfcUnmn67qjCOgvRuZVOzU&currency=USDT&timestamp=1616488398013&sign=S7Ok3L5ROXSbYfXj9ryeBbKfRosh9tmH%2FAKiwj7eAoc%3D"

# 請求交互

REST訪問的根URL:https://api-swap-rest.bingbon.pro

所有請求基於Https協議,請求頭信息中Content-Type 需要統一設置為:'application/json』。

請求交互說明

1、請求參數:根據介面請求參數規定進行參數封裝。

2、提交請求參數:將封裝好的請求參數通過POST/GET/DELETE等方式提交至伺服器。

3、伺服器響應:伺服器首先對用戶請求數據進行參數安全校驗,通過校驗後根據業務邏輯將響應數據以JSON格式返回給用戶。

4、數據處理:對伺服器響應數據進行處理。

成功

HTTP狀態碼200表示成功響應,並可能包含內容。如果響應含有內容,則將顯示在相應的返回內容裡面。

Last Updated: 2/12/2021 下午2:36:56