API 認證方式 Authentication
在開始前
請先確認已有 Access Key 與 Secret Key ,若尚未取得,請聯繫服務窗口。
Cabital Connect API 採用簽名認證的方式驗證請求。製作請求簽名認證流程如下:
- 於請求 Header 新增認證所需參數
ACCESS-KEY、ACCESS-TIMESTAMP、ACCESS-NONCE - 將第一步所新增之參數與請求資訊組成簽名字串
- 以
Secret Key對簽名字串進行加密處理 - 將第三步結果以參數名
ACCESS-SIGN新增進請求 Header 參數內 - 發送請求時皆附帶 Header 參數:
ACCESS-KEY、ACCESS-TIMESTAMP、ACCESS-NONCE、ACCESS-SIGN
請注意
- 請勿分享
Secret Key,否則會造成資訊洩漏以及不必要的交易損失 - 若
Secret Key出現異常,請立即聯繫 Cabital 服務窗口並更新
步驟一:新增請求 Header 認證參數¶
| 參數 | 說明 |
|---|---|
ACCESS-KEY |
合作方的 Access Key |
ACCESS-TIMESTAMP |
請求的時間戳記,必須與 API 請求的實際時間差在 30 秒內,否則會被視為過期並拒絕請求 |
ACCESS-NONCE |
每次請求的唯一值(數字或字串), 在 60 分鐘內以相同 ACCESS-NONCE 發送多次請求時,只會處理第一筆請求 |
步驟二:組成簽名字串¶
StringToSign =
AccessTimestamp + \n +
RequestMethod + \n +
AccessNonce + \n +
RequestPath + \n +
RequestBody
| 參數 | 說明 |
|---|---|
AccessTimestamp |
同 Header 參數 ACCESS-TIMESTAMP |
RequestMethod |
請求方法,必須為大寫字母,如: GET、POST、PUT |
AccessNonce |
同 Header 參數 ACCESS-NONCE |
RequestPath |
請求路徑,不含 Host,含請求 Query 參數 如: /api/v1/accounts/6d92e7b4-715c-4ce3-a028-19f1c8c9fa6c/transfers?direction=CREDIT&has_conversion=true |
RequestBody |
請求內容
|
步驟三:加密簽名字串¶
將步驟二組成的簽名字串以 Secret Key 進行 HMAC-SHA256 加密處理,並轉成 Base64 格式編碼
可以透過此線上工具協助驗證加密結果
步驟四:將加密結果加進請求 Header 參數內¶
以參數名 ACCESS-SIGN 新增進請求 Header 參數內,新增完的請求 Header 所需認證參數如下:
ACCESS-KEYACCESS-TIMESTAMPACCESS-NONCEACCESS-SIGN
範例說明¶
合作方資訊
Access Key為b40b978e-ee0c-11ec-8573-0a3898443cb8Secret Key為123(此為範例假設值,非實際值)
範例一:GET 請求¶
以請求 以合作方帳號 ID 查詢轉帳交易列表 為例
| 參數 | 說明 |
|---|---|
| 方法與路徑 | GET https://connect.cabital.com/api/v1/userextref/latibac_user_1656053354/transfers?direction=CREDIT&symbol=USDT&created_from=1633445160 |
| 請求時間戳 | 1660017228 |
| 請求唯一值 | 1660017228636 |
- 組成簽名字串
- 加密簽名字串,結果為
- 完整請求如下
curl 'https://connect.cabital.com/api/v1/userextref/latibac_user_1656053354/transfers?direction=CREDIT&symbol=USDT&created_from=1633445160' \ --header 'ACCESS-KEY: b40b978e-ee0c-11ec-8573-0a3898443cb8' \ --header 'ACCESS-SIGN: cfa1WY0a5KcVM+NXUDqE1QVBJgO8euOUx59UVhwU6Zs=' \ --header 'ACCESS-TIMESTAMP: 1660017228' \ --header 'ACCESS-NONCE: 1660017228636'
範例二:PUT 請求¶
以請求 用户同名認證 Match 為例
| 參數 | 說明 |
|---|---|
| 方法與路徑 | PUT https://connect.cabital.com/api/v1/accounts/bf07fe96-2b05-4281-94ad-4fe39394e707/match |
| 請求時間戳 | 1660025004 |
| 請求唯一值 | 1660025004705 |
- 組成簽名字串
- 加密簽名字串,結果為
- 完整請求如下
curl -X PUT 'https://connect.cabital.com/api/v1/accounts/bf07fe96-2b05-4281-94ad-4fe39394e707/match' -d '{ "name": "John Doe", "id": "880730123", "id_document": "PASSPORT", "dob": "1985-11-05", "issued_by": "TWN" }' --header 'ACCESS-KEY: b40b978e-ee0c-11ec-8573-0a3898443cb8' \ --header 'ACCESS-SIGN: dtiC01bc8S/s2IoH1Rq6WrgNIwrKuE4wgxkyP8Cf9+c=' \ --header 'ACCESS-TIMESTAMP: 1660025004' \ --header 'ACCESS-NONCE: 1660025004705'