為企業數位資產營運而設的安全基礎設施。

優盾錢包API開發接口文檔

1、生成地址

1.1 場景說明

請求指定幣種地址,如要成功獲取地址,需先存在錢包,且錢包支持該幣種, 詳情參看

1.2 接口詳情

1.2.1 接口地址
接口詳情
URL【/mch/address/create】
請求方式POST
1.2.2 參數
1.2.2.1 參數說明
參數類型是否必填說明備註
timestampString時間戳驗簽說明
nonceString隨機數驗簽說明
signString簽名驗簽說明
bodyString消息內容json數組字符串,格式如下
[
    {
     "merchantId":"300015",
     "mainCoinType":520,
     "callUrl":"http://localhost:8080/callBack"
    }
]
1.2.2.2 body參數字段
body參數名稱類型是否必填說明
merchantIdString商戶號
mainCoinTypeInteger主幣種編號,使用獲取商戶幣種信息接口
callUrlString回調地址,通過該接口創建的地址,以後關於該地址的充幣信息會通過您指定的回調地址通知您。具體示例見 交易回調接口
walletIdString錢包編號,默認根據主錢包生成地址
aliasString地址別名
1.2.2.3 示例
{
    "timestamp": 1535005047,
    "nonce": 10000,
    "sign": "a230def43c1a12b14393880a28d4e005",
    "body": "[{\"merchantId\":\"300015\",\"mainCoinType\":520,\"callUrl\":\"http://localhost:8080/callBack\"}]"}
1.2.3 返回狀態碼表
code解釋
-1生成地址失敗
200生成地址成功
4001商户不存在
4005非法參數
4045幣種信息錯誤
4162簽名異常
4163簽名錯誤
4166商戶沒有配置套餐
4168商戶地址達到上限
4169商戶已禁用
4175錢包編號錯誤
4017商戶沒有創建錢包
4176錢包未添加支持該幣種
4188暫不支持
4226商戶普通賬戶被禁用
4261商戶管理員賬戶被禁用
4262賬戶不存在

1.3 調取示例

1.3.1 成功
{
    "data":{
        "coinType":520,
        "address":"0xbe4e3699cb870bc95365fe04a187dd279a651a58"
    },
    "message":"SUCCESS",
    "code":200
}
1.3.2 失敗
{
    "code": "4101",
    "message": "SIGN_MSG_ERROR"}

2、發送提幣申請

2.1 場景說明

提幣申請

2.2 接口詳情

2.2.1 接口地址
接口詳情
URL【/mch/withdraw】
請求方式POST
2.2.2 參數
2.2.2.1 參數說明
參數類型是否必填說明備註
timestampString時間戳驗簽說明
nonceString隨機數驗簽說明
signString簽名驗簽說明
bodyString消息內容json數組字符串,格式如下
[
    {
        "address":"raadSxrUhG5EQVCY75CSGaVLWCeXd6yH6s",
        "amount":"0.11",
        "merchantId":"100109",
        "mainCoinType":"144",
        "coinType":"144",
        "callUrl":"http://localhost:8080/mch/callBack",
        "businessId":"15",
        "memo":"10112"
    }
]
2.2.2.2 body參數字段
body參數名稱是否必填類型說明
addressString提幣地址
amountString提幣數量
merchantIdString商戶號
mainCoinTypeString主幣種編號,使用獲取商戶幣種信息接口
coinTypeString子幣種編號,使用獲取商戶幣種信息接口
callUrlString回調地址,通過該callUrl告知您該筆提幣交易的狀態,具體示例見 交易回調接口
businessIdString業務編號,必須保證該字段在系統內唯一,如果重復,則該筆提幣錢包將不會進行接收
memoString備註,XRP和EOS,這兩種幣的提幣申請該字段可選,其他類型幣種不填
2.2.2.3 示例
{
  "timestamp": 1535005047,
  "nonce": 100000,
  "sign": "6df1512ee650431632ce1541a6b064e1",
  "body": "[{\"address\":\"raadSxrUhG5EQVCY75CSGaVLWCeXd6yH6s\",\"amount\":\"0.11\",\"merchantId\":\"100109\",\"mainCoinType\":\"144\",\"coinType\":\"144\",\"callUrl\":\"http://localhost:8080/callBack\",\"businessId\":\"15\",\"memo\":\"10112\"}]"}
2.2.3 返回狀態碼表
code解釋
200提幣成功
523參數為空
581無效的提幣金額
4005非法參數
4014幣種為空
4034未找到該幣種信息
4162簽名異常
4163簽名錯誤
4169商戶已被禁用
4183到賬地址異常
4193EOS金額小數點後超過4位長度
4214暫無可用的幣種
4226商戶普通賬戶被禁用
4261商戶管理員賬戶被禁用
4284商户不存在
4288業務編號(BusinessId)重復,請勿重復申請
4598傳入body中的list對象中的所有merchantId必須保持一致
4001商户不存在
2.3.1 成功
{
    "message":"SUCCESS",
    "code":200
}
2.3.2 失敗
{
    "code": "4101",
    "message": "SIGN_MSG_ERROR"
}

4、交易回調

4.1 場景說明

網關收到交易處理結果,調用商戶提供的回調接口,通知商戶具體變化信息。該接口網關發送給您指定的回調地址的內容,處理您的業務信息。分充值回調和提幣回調, 其中提幣最多會進行兩次回調( 審核回調 + 交易結果回調)

4.2 接口詳情

4.2.1 接口地址
接口詳情
URL由生成地址接口或提幣接口提供的callUrl
請求方式POST / Form
4.2.2 參數
4.2.2.1 參數說明
參數類型是否必填說明備註
timestampString時間戳驗簽說明
nonceString隨機數驗簽說明
signString簽名驗簽說明
bodyString消息內容json字符串,格式如下
{
    "address":"DJY781Z8qbuJeuA7C3McYivbX8kmAUXPsW",
    "amount":"12345678",
    "blockHigh":"102419",
    "coinType":"206",
    "decimals":"8",
    "fee":"452000",
    "mainCoinType":"206",
    "status":3,
    "tradeId":"20181024175416907",
    "tradeType":1,
    "txId":"31689c332536b56a2246347e206fbed2d04d461a3d668c4c1de32a75a8d436f0",
    "businessId":"",// 提幣回調為提幣接口傳入的businessId,充幣無值
    "memo":""
}
4.2.2.2 body參數說明
body參數名稱類型說明
addressString地址
amountString交易數量,根據幣種精度獲取實際金額,實際金額=amount/pow(10,decimals),即實際金額等於amount除以10的decimals次方
feeString礦工費,根據幣種精度獲取實際金額,實際金額獲取同上
decimalsString幣種精度
coinTypeString子幣種編號,使用獲取商戶幣種信息接口
mainCoinTypeString主幣種編號,使用獲取商戶幣種信息接口
businessIdString業務編號,提幣回調時為提幣請求時傳入的,充幣回調無值
blockHighString區塊高度
statusInteger狀態,見 回調接口狀態說明
tradeIdString業務流水號
tradeTypeInteger交易類型,見 回調接口交易類型說明
txidString區塊鏈交易哈希
memoString備註,XRP和EOS,使用獲取商戶幣種信息接口,這2種類型幣的充提幣可能有值
4.2.2.2 示例

    "timestamp": 1535005047,
    "nonce": 100000,
    "sign": "e1bee3a417b9c606ba6cedda26db761a",
    "body": "{\"address\":\"DJY781Z8qbuJeuA7C3McYivbX8kmAUXPsW\",\"amount\":\"12345678\",\"blockHigh\":\"102419\",\"coinType\":\"206\",\"decimals\":\"8\",\"fee\":\"452000\",\"mainCoinType\":\"206\",\"status\":3,\"tradeId\":\"20181024175416907\",\"tradeType\":1,\"txId\":\"31689c332536b56a2246347e206fbed2d04d461a3d668c4c1de32a75a8d436f0\"}"

5、校驗地址合法性

5.1 場景說明

校驗地址的合法性,添加地址、提幣申請等場景時可先校驗地址合法性,參看 校驗規則

5.2 接口詳情

5.2.1 接口地址
接口詳情
URL【/mch/check/address】
請求方式Post
5.2.2 參數
5.2.2.1 參數說明
參數類型是否必填說明備註
timestampString時間戳
nonceString隨機數
signString簽名
bodyString消息內容json數組字符串,格式如下
[
{
    "merchantId":200000,
    "mainCoinType":"206",
    "address":"DJY781Z8qbuJeuA7C3McYivbX8kmAUXPsW"
}
]
5.2.2.2 body參數說明
body參數名稱類型是否必填說明
merchantIdLong商戶號
mainCoinTypeString主幣種編號,使用獲取商戶幣種信息接口
addressString需校驗的地址
5.2.2.3 示例
{
    "timestamp": 1535005047,
    "nonce": 100000,
    "sign": "e1bee3a417b9c606ba6cedda26db761a",
    "body": "[{\"merchantId\":200000,\"mainCoinType\":\"206\",\"address\":\"DJY781Z8qbuJeuA7C3McYivbX8kmAUXPsW\"}]"
}
5.2.3 返回狀態碼表
code解釋
200成功
4005非法參數
4162簽名異常
4163簽名錯誤
4165非法地址

5.3 調取示例

5.3.1 成功
{
    "code":200,
    "message":"SUCCESS"
}
5.3.2 失敗
{
    "code":4005,
    "message":"PARAM_ERROR"
}

6、獲取商戶支持的幣種信息

6.1 場景說明

獲取商戶支持的幣種,以及余額

6.2 接口詳情

6.2.1 接口地址
接口詳情
URL【/mch/support-coins】
請求方式POST
6.2.2 參數
6.2.2.1 參數說明
參數類型是否必填說明
timestampString時間戳
nonceString隨機數
signString簽名
bodyString消息內容
6.2.2.2 body參數說明
body參數名稱類型是否必填說明
merchantIdLong商戶號
showBalanceBoolean是否查詢余額,false不獲取,true獲取
6.2.2.3 示例
{
    "timestamp": 1535005047,
    "nonce": 100000,
    "sign": "e1bee3a417b9c606ba6cedda26db761a",
    "body": "{\"merchantId\":\"200032\",\"showBalance\":true}"
}
6.2.3 返回狀態碼表
狀態碼解釋
-1查詢失敗
200查詢成功
4005非法參數

6.3 調取示例

6.3.1 成功
{
    "code": 200,
    "message": "SUCCESS",
    "data":[
        {
            "name": "BTC", // 幣種別名
            "coinName":"Bitcoin", // 幣種全稱
            "symbol":"BTC", // 幣種單位
            "mainCoinType":"0", //主幣種類型
            "coinType":"0", // 幣種類型
            "decimals":"8", // 幣種精度
            "tokenStatus":"0", // 0: 主幣 1:代幣
            "mainSymbol":"BTC", //主幣種單位
            "balance":"0", // 幣種余額 
            "logo":"" // 幣種log地址
        },
        {
            "name": "ETH", // 幣種別名
            "coinName":"Ethereum", // 幣種全稱
            "symbol":"ETH", // 幣種單位
            "mainCoinType":"60", //主幣種類型
            "coinType":"60", // 幣種類型
            "decimals":"18", // 幣種精度
            "tokenStatus":"0", // 0: 主幣 1:代幣
            "mainSymbol":"ETH", //主幣種單位
            "balance":"0", // 幣種余額 
            "logo":"" // 幣種log地址
        }
    ]
}
6.3.2 失敗
{
    "code":4005,
    "message":"BGS_ILLEGAL_PARAMETER"
}

7、校驗地址是否存在

7.1 場景說明

校驗地址是否為該商戶生成的地址,請求參數及返回結果類型同校驗地址合法性接口類似

7.2 接口詳情

7.2.1 接口地址
接口詳情
URL【/mch/exist/address】
請求方式Post
7.2.2 參數
7.2.2.1 參數說明
參數類型是否必填說明備註
timestampString時間戳
nonceString隨機數
signString簽名
bodyString消息內容json數組字符串,格式如下
[
{
    "merchantId":200000,
    "mainCoinType":"206",
    "address":"DJY781Z8qbuJeuA7C3McYivbX8kmAUXPsW"
}
]
7.2.2.2 body參數說明
body參數名稱類型是否必填說明
merchantIdLong商戶號
mainCoinTypeString主幣種編號,使用獲取商戶幣種信息接口
addressString需校驗的地址
7.2.2.2 示例
{
    "timestamp": 1535005047,
    "nonce": 100000,
    "sign": "e1bee3a417b9c606ba6cedda26db761a",
    "body": "[{\"merchantId\":200000,\"mainCoinType\":\"206\",\"address\":\"DJY781Z8qbuJeuA7C3McYivbX8kmAUXPsW\"}]"
}
7.2.3 返回狀態碼表
code解釋
200成功
523非法參數
4162簽名異常
4163簽名錯誤
4165非法地址
4316參數異常

7.3 調取示例

7.3.1 成功
{
    "code":200,
    "message":"SUCCESS"
}
7.3.2 失敗
{
    "code":4165,
    "message":"ILLEGAL_ADDRESS"
}

回調接口狀態說明

狀態說明
0待審核
1審核成功
2審核駁回
3交易成功
4交易失敗

回調接口交易類型說明

狀態說明
1充幣回調
2提幣回調

驗簽說明

為了保證商戶傳送到優盾的參數信息不被惡意篡改, 網關為商戶接口提供Md5加密摘要認證。 商戶可用基礎加密參數: 時間戳、 隨機數、 簽名密鑰、 請求明文參數按指定順序排列進行Md5加密並轉化成小寫, 產生一個驗簽串sign, 商戶請求網關接口時, 帶上參數時間戳、 隨機數、 請求明文參數、 sign作為參數。 網關拿到相應的參數以同樣的方式進行簽名驗簽。 同理, 網關請求商戶也以同樣的方式進行身份驗證。

sign=md5(body + key + nonce + timestamp).toLowerCase()

key為簽名密鑰,由網關分配給商戶,加密字段順序不能錯誤

幣種地址校驗規則

主幣種類型幣種簡稱幣種英文名稱幣種中文名稱地址前綴地址長度限製區間
0BTCBitcoin比特幣1或者3[26,36]
60ETHEthereum以太坊0x[42]
145BCHBitcoincash比特幣現金1[26,36]
61ETCEthereumClassic以太坊經典0x[42]
2LTCLitecoin萊特幣L或者M[26,36]
5DASHDASH達世幣X[26,36]
2301QTUMQTUM量子鏈幣Q[26,36]
133ZECZCash大零幣t1不限製
144XRPRipple瑞波幣r[34]
2303VDSVollarVollarV