# 簽名認證
# 創建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¤cy=USDT×tamp=1615272721001'
按演算法生成待簽名的字元串
originString = 'POST/api/v1/user/getBalanceapiKey=Zsm4DcrHBTewmVaElrdwA67PmivPv6VDK6JAkiECZ9QfcUnmn67qjCOgvRuZVOzU¤cy=USDT×tamp=1615272721001'
然後,將待簽名字元串添加私鑰參數生成最終待簽名字元串。
例如:
Signature = HmacSHA256(secretkey, originString)
Signature = Base64Encode(Signature)
Signature = UrlEncode(Signature)
即:
Signature = HmacSHA256("UuGuyEGt6ZEkpUObCYCmIfh0elYsZVh80jlYwpJuRZEw70t6vomMH7Sjmf94ztSI", "POST/api/v1/user/getBalanceapiKey=Zsm4DcrHBTewmVaElrdwA67PmivPv6VDK6JAkiECZ9QfcUnmn67qjCOgvRuZVOzU¤cy=USDT×tamp=1616488398013")
echo -n "POST/api/v1/user/getBalanceapiKey=Zsm4DcrHBTewmVaElrdwA67PmivPv6VDK6JAkiECZ9QfcUnmn67qjCOgvRuZVOzU¤cy=USDT×tamp=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¤cy=USDT×tamp=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表示成功響應,並可能包含內容。如果響應含有內容,則將顯示在相應的返回內容裡面。