> For the complete documentation index, see [llms.txt](https://coinsdo.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://coinsdo.gitbook.io/docs/cn/coinsdo-api-integration/coinsdo-api-jie-ru-wen-dang/coinsend-pian.md).

# CoinSend篇

## CoinSend客户端详情 <a href="#undefined" id="undefined"></a>

请在Google Play商店，或CoinsDo官网下载应用程序，并运行在可靠的设备中。

使用CoinSend业务时，CoinSend客户端需保持在线。

### **接口描述**

* 查询下发钱包的详情

### **请求地址**

* `{URL}/v1/deviceDetail`

### **请求方式**

* POST
* Body 参数

<table><thead><tr><th width="131">参数名</th><th width="69">必填</th><th width="115">类型</th><th>说明</th></tr></thead><tbody><tr><td>data</td><td>是</td><td>string</td><td>内容（JSON字符串，如下）</td></tr></tbody></table>

```json
{
    "apiKey": "cd384rt80f5575dc",
    "deviceUuid": "2DEA1BEB-CFE9-4E1D-9D88-F983D84D2E4D"
}
```

* data 参数

<table><thead><tr><th width="148">参数名</th><th width="71">必填</th><th width="112">类型</th><th>说明</th></tr></thead><tbody><tr><td>apiKey</td><td>是</td><td>string</td><td>API KEY</td></tr><tr><td>deviceUuid</td><td>是</td><td>string</td><td>下发钱包标识</td></tr></tbody></table>

### **请求示例**

```json
{
    "data": "{\"apiKey\":\"cd384rt80f5575dc\",\"deviceUuid\":\"2DEA1BEB-CFE9-4E1D-9D88-F983D84D2E4D\"}",
    "sign": "d32bfb9905f0b6713be45fea2bce001449146a43b3319479076a6d8c2bf22055"
}
```

### **返回示例**

```json
{
    "code": 200, // 状态码
    "msg": "成功", // 提示信息
    "data": {
        "onlineStatus": 1,
        "useStatus": 1,
        "addressList": [{
            "flag": "TRX",
            "address": "TEN51U1W5hW5bJ833J6CLojvJdFGEQtz39",
            "balance": "222.1",
            "currency": "TRX"
        }, {
            "flag": "0xe7b0d9104aec8ea4ec6a02dfc5ae5180f9f78f95",
            "address": "TKU69qcQPoR5jDEE7ertPpdaxoLGCTX4xR",
            "balance": "6161.999",
            "currency": "TRC20"
        }],
        "devicePublicKey":"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD311wvweaxTv9bJBz3dxxd8e1nhInyoS/my8zarbeyqwAcTjWkMsWQt5cquU5G463nd5nSAOUGDgdytOZu78ZT4OQPFyeKRM/TWC7ghibhi/FDxJvE7txj7QRjdY0vTDTM/6CYxi2F8PIgjzX9TKBP7DK6pZq/sN1VciBuRWz2kQIDAQAB"
        "deviceExpiryTime": "1628380800",
        "deviceRegisterTime": "1625802606"
    }
}
```

***

## 添加子账户的审批设备 <a href="#undefined" id="undefined"></a>

子账户仅可在已绑定CoinSign插件的Chrome/ Firefox浏览器或CoinSign客户端完成审批操作。\
CoinSend会对下发指令进行签名验证，确保指令不可篡改且来自授权角色的可信设备。

### **接口描述**

* 添加子账户的审批设备

### **请求地址**

* `{URL}/v1/reviewAdd`

### **请求方式**

* POST
* Body 参数

<table><thead><tr><th width="145">参数名</th><th width="75">必填</th><th width="99">类型</th><th>说明</th></tr></thead><tbody><tr><td>data</td><td>是</td><td>string</td><td>内容（JSON字符串，如下）</td></tr></tbody></table>

```json
{
    "apiKey": "cd384rt80f5575dc",
    "reviewPubkey":"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDi7RszjTelyGLJmpyXUPKo7xSUGQSv/5fUXO0npAGKP0oukx7tHQ6nJsnXdztX3yR3zhgjBnCdqN8DBPr+LzF4kSzG4t2/a6NdFlnPAUrtFZcqRbGDwliIqlKb5XCTu0Pgs6fNjx8tPE6XIW7OX/8NmQIbBw9Qjn28gjSuaTAD9QIDAQAB",
    "plainText":"test",
    "signature":"Fy6kcJsOY38jO+m/OsvmVj9kJdkC8CCl4WwPbMjWP/AAGS3dAAUHgIGQQlkIo3uBiEIIr85axpYmmsvXfeGg3MmYLim1XOeI65oOnDN084EaXjlCvTlFMqnt61YUYcN/9WPRjtbOsfSaK1ivOfKux9Fh8lGzRoNYKahCA1t69Kk=",
    "authorizationCode": "CFZQ-RJWN-VDDH"
}
```

* data参数

<table><thead><tr><th width="190">参数名</th><th width="70">必填</th><th width="92">类型</th><th>说明</th></tr></thead><tbody><tr><td>apiKey</td><td>是</td><td>string</td><td>API KEY</td></tr><tr><td>reviewPubkey</td><td>是</td><td>string</td><td>审核设备公钥</td></tr><tr><td>plainText</td><td>是</td><td>string</td><td>待验证字符串</td></tr><tr><td>signature</td><td>是</td><td>string</td><td>签名(对plainText字段进行SHA256withRSA签名)</td></tr><tr><td>authorizationCode</td><td>是</td><td>string</td><td>设备授权码</td></tr></tbody></table>

### **请求示例**

```json
{
    "data": "{\"apiKey\":\"cd384rt80f5575dc\",\"reviewPubkey\":\"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDi7RszjTelyGLJmpyXUPKo7xSUGQSv/5fUXO0npAGKP0oukx7tHQ6nJsnXdztX3yR3zhgjBnCdqN8DBPr+LzF4kSzG4t2/a6NdFlnPAUrtFZcqRbGDwliIqlKb5XCTu0Pgs6fNjx8tPE6XIW7OX/8NmQIbBw9Qjn28gjSuaTAD9QIDAQAB\",\"plainText\":\"test\",\"signature\":\"Fy6kcJsOY38jO+m/OsvmVj9kJdkC8CCl4WwPbMjWP/AAGS3dAAUHgIGQQlkIo3uBiEIIr85axpYmmsvXfeGg3MmYLim1XOeI65oOnDN084EaXjlCvTlFMqnt61YUYcN/9WPRjtbOsfSaK1ivOfKux9Fh8lGzRoNYKahCA1t69Kk=\",\"authorizationCode\":\"CFZQ-RJWN-VDDH\"}",
    "sign": "ee7809433ed0200b55f79e85f3489d455a28ac3f14c8757b7799f890f42d74e8"
}
```

### **返回示例**

```json
{
    "code": 200, // 状态码
    "msg": "成功", // 提示信息
    "data": {
        "uuid": "2DEA1BEB-CFE9-4E1D-9D88-F983D84D2E4W"
    }
}
```

* data 参数

<table><thead><tr><th width="168">参数名</th><th width="74">必填</th><th width="99">类型</th><th>说明</th></tr></thead><tbody><tr><td>uuid</td><td>是</td><td>string</td><td>审核设备标识</td></tr></tbody></table>

### **返回状态码**

<table><thead><tr><th width="164">状态码</th><th>说明</th></tr></thead><tbody><tr><td>4015</td><td>查询授权码失败</td></tr><tr><td>4016</td><td>授权码失效或不存在</td></tr><tr><td>4018</td><td>添加审核设备失败</td></tr><tr><td>4019</td><td>SHA256withRSA验签失败</td></tr></tbody></table>

***

## 下发（提币） <a href="#transfer" id="transfer"></a>

企业可以通过CoinsDo API 来执行全自动下发或人工手动审批下发。

### 审批角色说明

数据提交：有这个权限的子账号可以添加下发记录。

数据审批：有这个权限的子账号可以审批提交者的下发记录。有数据审批权限的子账号（一审）会审核所提交的数据然后进行签名。一审审核的数据是业务ID、发送地址、下发数量、币种/协议、和标识/代币ID/合约地址。

执行审批：有这个权限的子账号可以执行审批后的下发记录。执行审批权限的子账号（二审）会审核一审所签名的数据然后进行签名。二审审核的数据是业务ID和选择下发钱包。二审签名后会执行下发记录。

### 手动下发

企业会先设置提交数据、数据审批、和执行审批权限给子账号。这三个角色都是由不同的人物来处理。首先，拥有数据提交权限的子账号会提交下发记录，填写币种/协议、标识/代币ID/合约地址、接受地址、和下发数量。其次，拥有数据审批权限的子账号会对提交的数据进行审批。签名后会提交给拥有执行审批的子账号签名然后执行下发。

<figure><img src="/files/0fsBou4iHfnKD07vTnZr" alt=""><figcaption></figcaption></figure>

1. 具有提交数据权限的子账号可以使用企业业务服务器进行提款
2. 企业业务服务器透过CoinsDo API提交下发请求给CoinsDo服务器
3. 企业设置的审核人员A可以进行数据审批并签名
4. 企业设置的审核人员B可以进行执行审批并签名然后提交签名A和B给CoinsDo服务器
5. CoinsDo服务器收到企业设置的审核人员的签名后透过CoinsDo API提交带有签名的数据给企业下发钱包客户端
6. 企业下发钱包客户端对收到的签名A和签名B进行校签后执行下发

### 自动下发

企业必须把提交数据、数据审批、和执行审批权限分配给一个服务端账户才能执行自动下发方案。点击[此处](https://coinsdo.gitbook.io/docs/cn/coinsend/qi-ta-cao-zuo/tian-jia-fu-wu-duan-zhang-hu)，查看如何添加服务端账户。

企业也可以把自动下发的部分过程分配给服务端和普通账号。举个例子，服务端账号可以自动创建一个下发记录然后让其他两个普通账号来手动的数据审批和手动的执行审批那个下发记录。

<figure><img src="/files/4uqEDh9omaZUhp3hJPc6" alt=""><figcaption></figcaption></figure>

1. 具有提交数据权限的子账号可以使用企业业务服务器进行提款
2. 企业业务服务器透过CoinsDo API提交下发请求和把数据签名后提交给CoinsDo服务器
3. CoinsDo服务器收到带有签名的数据后透过CoinsDo API提交给企业下发钱包客户端
4. 企业下发钱包客户端对收到带的签名的数据进行校签后执行下发

### **接口描述**

* 发起下发申请

#### **请求地址**

* `{URL}/v1/withdraw`

#### **请求方式**

* POST

#### **请求参数**

* Body 参数

<table><thead><tr><th width="173">参数名</th><th width="68">必填</th><th width="87">类型</th><th>说明</th></tr></thead><tbody><tr><td>data</td><td>是</td><td>string</td><td>内容（JSON字符串，如下）</td></tr></tbody></table>

```json
{
    "apiKey": "cd384rt80f5575dc",
    "submitAccount": "coinsdoTest",
    "address": "TKU69qcQPoR5jDEE7ertPpdaxoLGCTX4xR",
    "amount": "616.616",
    "coinsDoId": "3",
    "businessId": "TRX_999",
    "businessScene": "1",
    "timestamp": "1622775712229",
    "txMemo": "COINSDO TEST TRX",
    "reviewUuid": "A65F7B1C-8FF8-4E0D-ADF2-AE0BCB0F378B",
    "reviewSign": "DXoICpzZN7/yoHCLbb32czn0Goq9XLTdW9Dcn281qNNgcejzXPToGOJReA/wYMI0e3ikjAVxzXSDXImAFqslbjBbiR8PVnXImV6VBMYL5J3Lssfu4nZMPEPNgIFtAWlLk9drWoElGe/Ch6NaozD9VJx5xPNIPq7ErVwfeB+g2LM=",
    "reviewRemark": "trx test",
    "targetDeviceUuid": "2DEA1BEB-CFE9-4E1D-9D88-F983D84D2E4D",
    "approveUuid": "BD9D4D2C-6689-4FE1-88BB-C9DA5A251A30",
    "approveSign": "vPuFWmtV/KbemdN/5IqRhyfY63kp55HSZEErFa0rtJco861WkUsesaJ1U5kV0oX3bn5U8iVEKGeAzA37s/jMBy8hq62r1fstvhZ6vcgX5FuqtvvL8fTOeRuK9v85e7FR/89U2Jm/KbVt0US2Xe1oQz2D7lDvFW15ZtSQdp8JoVA=",
    "approveRemark": "trx test",
    "approveExpireTime": "1622775712"
}
```

* data 参数

<table><thead><tr><th width="171">参数名</th><th width="64">必填</th><th width="81">类型</th><th>说明</th></tr></thead><tbody><tr><td>apiKey</td><td>是</td><td>String</td><td>API KEY</td></tr><tr><td>submitAccount</td><td>是</td><td>String</td><td>提交账号(服务端审核账号)</td></tr><tr><td>address</td><td>是</td><td>String</td><td>下发地址</td></tr><tr><td>amount</td><td>是</td><td>String</td><td>下发数量</td></tr><tr><td>coinsDoId</td><td>是</td><td>String</td><td>币种ID(参数见币种列表)</td></tr><tr><td>businessId</td><td>是</td><td>String</td><td>业务ID(不可重复)</td></tr><tr><td>timestamp</td><td>是</td><td>String</td><td>时间戳(秒或毫秒)</td></tr><tr><td>businessScene</td><td>否</td><td>String</td><td>业务场景</td></tr><tr><td>txMemo</td><td>否</td><td>String</td><td>链上备注( XRP 和 EOS tag 填这里）</td></tr><tr><td>reviewUuid</td><td>否</td><td>String</td><td><p>数据审批(一审)设备标识</p><p>下发带一审自动审批时必填</p></td></tr><tr><td>reviewSign</td><td>否</td><td>String</td><td>数据审批(一审)数据签名<br>下发带一审自动审批时必填，进行RSA-SHA256签名：businessId=业务ID&#x26;address=地址&#x26;amount=数量&#x26;coinsDoId=coinsDoId，<br>❗注：数量字段需去除小数位后多余的零，<br>例：amount=1.010 应转换成 amount=1.01、amount=1.000 应转换成 amount=1)</td></tr><tr><td>reviewRemark</td><td>否</td><td>String</td><td>数据审批(一审)备注</td></tr><tr><td>targetDeviceUuid</td><td>否</td><td>String</td><td>审批执行(二审)指定下发钱包<br>下发带二审自动审批时必填</td></tr><tr><td>approveUuid</td><td>否</td><td>String</td><td>审批执行(二审)设备标识<br>下发带二审自动审批时必填</td></tr><tr><td>approveSign</td><td>否</td><td>String</td><td>审批执行(二审)数据签名<br>下发带二审自动审批时必填，需按所显示的参数顺序进行RSA-SHA256签名：businessId=业务ID&#x26;deviceUuid=CoinSend客户端标识&#x26;approveExpireTime=二审失效时间戳</td></tr><tr><td>approveRemark</td><td>否</td><td>String</td><td>审批执行(二审)备注</td></tr><tr><td>approveExpireTime</td><td>是</td><td>String</td><td>二审失效时间戳(精确到秒)<br>下发带二审自动审批时必填</td></tr><tr><td>targetAddrIndex</td><td>否</td><td>String</td><td>指定发送地址派生序号<br>指定发送地址后审批执行(二审)数据签名规则更改，需按所显示的参数顺序进行RSA-SHA256签名：businessId=业务ID&#x26;deviceUuid=CoinSend客户端标识&#x26;targetAddrIndex=指定发送地址派生序号&#x26;approveExpireTime=二审失效时间戳</td></tr><tr><td>keepApproveSign</td><td>否</td><td>Boolean</td><td>keepApproveSign传True时，若数据审批(一审)被拦截，仍可保留符合条件的审批执行(二审)签名即无需人工二审；如无需保留二审签名，请勿传keepApproveSign 参数，或将其传False</td></tr></tbody></table>

#### **请求示例**

```json
{
    "data": "{\"apiKey\":\"cd384rt80f5575dc\",\"submitAccount\":\"coinsdoTest\",\"address\":\"TKU69qcQPoR5jDEE7ertPpdaxoLGCTX4xR\",\"amount\":\"616.616\",\"coinsDoId\":\"3\",\"businessId\":\"TRX_999\",\"approveExpireTime\":\"1622775712\",\"businessScene\":\"1\",\"timestamp\":\"1622775712229\",\"txMemo\":\"COINSDOTESTTRX\",\"reviewUuid\":\"A65F7B1C-8FF8-4E0D-ADF2-AE0BCB0F378B\",\"reviewSign\":\"3pIsqtrXPG/I4o/YGLOvtIvBUUrBrRyFehlt0wkezWU4u0dj5xXEoZ9E4EXSes9WawqfpxrRfOIHgXV1BnPNM2tt0DLloCnJkzR7smC26+z6kuZb87s3hitZWgM3UaWWghB8/qNMQImvCZ6MREqChoNmEVyaqCnTbjorKsrU/V0=\",\"reviewRemark\":\"trxreview\",\"targetDeviceUuid\":\"2DEA1BEB-CFE9-4E1D-9D88-F983D84D2E4D\",\"approveUuid\":\"BD9D4D2C-6689-4FE1-88BB-C9DA5A251A30\",\"approveSign\":\"vPuFWmtV/KbemdN/5IqRhyfY63kp55HSZEErFa0rtJco861WkUsesaJ1U5kV0oX3bn5U8iVEKGeAzA37s/jMBy8hq62r1fstvhZ6vcgX5FuqtvvL8fTOeRuK9v85e7FR/89U2Jm/KbVt0US2Xe1oQz2D7lDvFW15ZtSQdp8JoVA=\",\"approveRemark\":\"trxapprove\",\"keepApproveSign\":True}",
    "sign": "d32bfb9905f0b6713be45fea2bce001449146a43b3319479076a6d8c2bf22055"
}
```

#### **返回示例**

```json
{
    "code": 200, // 状态码
    "msg": "成功", // 提示信息
    "data": null // 返回内容
}
```

#### **返回状态码**

<table><thead><tr><th width="138">状态码</th><th>说明</th></tr></thead><tbody><tr><td>4006</td><td>下发币种暂不支持</td></tr><tr><td>4008</td><td>业务ID已存在</td></tr><tr><td>4009</td><td>新增下发记录失败</td></tr><tr><td>4011</td><td>查询审核设备失败</td></tr><tr><td>4012</td><td>数据审批(一审)设备不存在</td></tr><tr><td>4013</td><td>审核设备未绑定审核账号</td></tr><tr><td>4014</td><td>数据审批(一审)签名验签失败</td></tr><tr><td>4015</td><td>查询授权码失败</td></tr><tr><td>4016</td><td>授权码失效或不存在</td></tr><tr><td>4017</td><td>查询审核设备失败</td></tr><tr><td>4018</td><td>添加审核设备失败</td></tr><tr><td>4019</td><td>SHA256withRSA验签失败</td></tr><tr><td>4020</td><td>查询商户子账户失败</td></tr><tr><td>4021</td><td>没有数据提交权限</td></tr><tr><td>4022</td><td>没有数据审批(一审)权限</td></tr><tr><td>4023</td><td>超过币种最大小数位</td></tr><tr><td>4024</td><td>数据审批(一审)参数不全</td></tr><tr><td>4025</td><td>下发地址格式有误</td></tr><tr><td>4026</td><td>审批执行(二审)参数不全</td></tr><tr><td>4027</td><td>审批执行(二审)设备不存在</td></tr><tr><td>4028</td><td>审批执行(二审)签名验签失败</td></tr><tr><td>4029</td><td>没有审批执行(二审)权限</td></tr><tr><td>4030</td><td>下发数量超过数据审批(一审)额度</td></tr><tr><td>4031</td><td>下发数量超过审批执行(二审)额度</td></tr><tr><td>4032</td><td>查询钱包失败</td></tr><tr><td>4033</td><td>钱包不存在</td></tr><tr><td>4038</td><td>校验下发地址失败</td></tr><tr><td>4039</td><td>提交账号已停用</td></tr><tr><td>4040</td><td>数据审批(一审)设备所绑定的账号已停用</td></tr><tr><td>4041</td><td>审批执行(二审)设备所绑定的账号已停用</td></tr><tr><td>4048</td><td>下发数量小于最低要求</td></tr><tr><td>4049</td><td>提交账号不是服务端账号</td></tr><tr><td>4056</td><td>数据审批账号当前绑定的审核设备未在钱包授权，请联系管理员重新授权钱包</td></tr><tr><td>4057</td><td>执行审批账号当前绑定的审核设备未在钱包授权，请联系管理员重新授权钱包</td></tr><tr><td>4065</td><td>检查业务ID失败</td></tr><tr><td>4066</td><td>检查支持的币种失败</td></tr><tr><td>4067</td><td>CoinsDoId应是整数</td></tr><tr><td>4069</td><td>商户子账户不存在</td></tr><tr><td>4070</td><td>请指定币种</td></tr><tr><td>4160</td><td>审批执行(二审)审核失效时间不能为空</td></tr><tr><td>4161</td><td>审批执行(二审)审核失效时间无效</td></tr><tr><td>4162</td><td>当前客户端版本不支持传入审核失效时间</td></tr></tbody></table>

### **回调通知**

<table><thead><tr><th width="143">参数名</th><th width="70">必填</th><th width="110">类型</th><th>说明</th></tr></thead><tbody><tr><td>data</td><td>是</td><td>string</td><td>内容（JSON字符串，如下）</td></tr></tbody></table>

```json
{
    "txTime": "1661336430",
    "businessId": "0x6305fb61_JDXqh_0_2",
    "mainnet": "TRX",
    "withdrawStatus": "1",
    "txMemo": "0",
    "feeSymbol": "TRX",
    "blockNumber": "29232059",
    "txFee": "8.34196",
    "coinName": "JST",
    "txHash": "b29e917066ed433b5d2753ae07a9b4bd71245509f8f9de51ec5a2e43425f91a8"
}
```

* data 参数

<table><thead><tr><th width="171">参数名</th><th width="66">必填</th><th width="103">类型</th><th>说明</th></tr></thead><tbody><tr><td>businessId</td><td>是</td><td>string</td><td>业务ID</td></tr><tr><td>withdrawStatus</td><td>是</td><td>string</td><td>下发回调状态码和说明：<br>1 - 成功<br>2 - 驳回<br>5 - 已取消<br>6 - 取消 (限制合约)<br>7 - 取消 (签名过期)<br>8 - 订单未完结<br>可扩展字段，后续会增加其他的下发回调状态</td></tr><tr><td>txHash</td><td>否</td><td>string</td><td>交易哈希</td></tr><tr><td>blockNumber</td><td>否</td><td>string</td><td>区块高度</td></tr><tr><td>txTime</td><td>否</td><td>string</td><td>交易确认时间戳(秒)</td></tr><tr><td>txFee</td><td>否</td><td>string</td><td>矿工费</td></tr><tr><td>feeSymbol</td><td>否</td><td>string</td><td>矿工费单位/标识</td></tr><tr><td>businessScene</td><td>否</td><td>string</td><td>业务场景(API提交该字段的原数据返回)</td></tr><tr><td>txMemo</td><td>否</td><td>string</td><td>链上备注</td></tr><tr><td>mainnet</td><td>是</td><td>string</td><td>主链名称</td></tr><tr><td>coinName</td><td>是</td><td>string</td><td>币种名称</td></tr></tbody></table>

#### **请求示例**

```json
{
    "data": "{\"txTime\":\"1661336430\",\"businessId\":\"0x6305fb61_JDXqh_0_2\",\"mainnet\":\"TRX\",\"withdrawStatus\":\"1\",\"txMemo\":\"0\",\"feeSymbol\":\"TRX\",\"blockNumber\":\"29232059\",\"txFee\":\"8.34196\",\"coinName\":\"JST\",\"txHash\":\"b29e917066ed433b5d2753ae07a9b4bd71245509f8f9de51ec5a2e43425f91a8\"}",
    "sign": "1b248bbf33dffb5004f4f179bb4b20e1a455e5c7d3be366c0b07e75ddc229d10"
}
```

#### **返回示例**

```json
{
    "code": 200, // 状态码
    "msg": "成功", // 提示信息
    "data": {
        "businessId": "TRX_999"
    } 
}
```

* data 参数

<table><thead><tr><th width="197">参数名</th><th width="80">必填</th><th width="100">类型</th><th>说明</th></tr></thead><tbody><tr><td>onlineStatus</td><td>是</td><td>string</td><td>在线状态(0.离线 1.在线)</td></tr><tr><td>useStatus</td><td>是</td><td>string</td><td>使用状态（0.停用 1.启用）</td></tr><tr><td>devicePublicKey</td><td>是</td><td>string</td><td>钱包公钥</td></tr><tr><td>deviceRegisterTime</td><td>是</td><td>string</td><td>钱包注册时间戳(秒)</td></tr><tr><td>deviceExpiryTime</td><td>是</td><td>string</td><td>钱包过期时间戳(秒)</td></tr><tr><td>addressList</td><td>否</td><td>array</td><td>发币地址列表</td></tr></tbody></table>

* addressList 参数

<table><thead><tr><th width="198">参数名</th><th width="82">必填</th><th width="99">类型</th><th>说明</th></tr></thead><tbody><tr><td>currency</td><td>是</td><td>string</td><td>币种/协议</td></tr><tr><td>flag</td><td>是</td><td>string</td><td>标识/代币ID/合约地址</td></tr><tr><td>address</td><td>是</td><td>string</td><td>钱包发币地址</td></tr><tr><td>balance</td><td>否</td><td>string</td><td>地址余额</td></tr></tbody></table>

#### **返回状态码**

<table><thead><tr><th width="199">状态码</th><th>说明</th></tr></thead><tbody><tr><td>4032</td><td>查询钱包失败</td></tr><tr><td>4033</td><td>钱包不存在</td></tr><tr><td>4034</td><td>查询地址失败</td></tr><tr><td>4035</td><td>查询币种失败</td></tr><tr><td>4036</td><td>查询余额失败</td></tr><tr><td>4037</td><td>查询钱包在线状态失败</td></tr></tbody></table>

***

## 下发记录详情（即将下线） <a href="#transfer" id="transfer"></a>

### **接口描述**

* 用于查询下发记录详情。由于下发状态可能存在异步更新，最终下发状态请以下发回调通知为准。

### **请求地址**

* `{URL}/v1/listWithdrawRecordDetail`

### **请求方式**

* POST
* Body 参数

<table><thead><tr><th width="105.84765625">参数名</th><th width="114.82421875">必填</th><th width="134.23828125">类型</th><th>说明</th></tr></thead><tbody><tr><td>data</td><td>是</td><td>string</td><td>内容（JSON字符串，如下）</td></tr></tbody></table>

```json
{
    "apiKey": "aa465953d55641b3",
    "businessIdList": "20241125T023627_615, 20241125T013051_799",
    "timestamp": "2847982343622"
}
```

* data参数

<table><thead><tr><th width="181.3046875">参数名</th><th width="63.38671875">必填</th><th width="87.125">类型</th><th>说明</th></tr></thead><tbody><tr><td>apiKey</td><td>是</td><td>string</td><td>API KEY</td></tr><tr><td>businessIdList</td><td>是</td><td>string</td><td>下发记录业务ID，多笔以逗号分隔</td></tr><tr><td>timestamp</td><td>是</td><td>string</td><td>时间戳 (秒或毫秒)</td></tr></tbody></table>

### **请求示例**

```json
{
    "data": "{\"apiKey\":\"aa465953d55641b3\",\"businessIdList\":\"20241125T023627_615, 20241125T013051_799\",\"timestamp\":\"2847982343622\"}",
    "sign": "22212634c772653e4074347d36040d9c51613c9a827591b12ea5888e6c301fbe"
}
```

### **返回示例**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data": [
        {
            "businessId": "20241125T013051_799",
            "chain": "TRX",
            "currency": "TRX",
            "flag": "TRX",
            "coinsDoId": null,
            "fromAddress": "TUsh9f5waEaHmeKPM1dTKg1DAvPYEktB9L",
            "toAddress": "T9yTVCyAvXpHE4MKji5e6nhZf7RqpxyiSZ",
            "amount": "100",
            "withdrawDeviceUuid": "12DEFEF7-6D5B-4C94-8967-4DEC062B790E",
            "dataApprover": "merchant_child_test2",
            "dataApproveTime": "1732498297",
            "executiveApprover": "merchant_child_test2",
            "executiveApproveTime": "1732498368",
            "withdrawStatus": 6,
            "txHash": "ec10197c20a1be2a3c07f98c3ac62ab11b3243a22849f7a77f7d4215499c6314",
            "txTime": "1732498386",
            "callbackStatus": -1,
            "callbackTime": null,
            "createTime": "1732498257",
            "unsentMsgList": null
        },
        {
            "businessId": "20241125T023627_615",
            "chain": "TRX",
            "currency": "TRX",
            "flag": "TRX",
            "coinsDoId": null,
            "fromAddress": "TUsh9f5waEaHmeKPM1dTKg1DAvPYEktB9L",
            "toAddress": "TQPrt12nsL9Ks7on5LUcG99UUXtFhJDgsK",
            "amount": "50",
            "withdrawDeviceUuid": "12DEFEF7-6D5B-4C94-8967-4DEC062B790E",
            "dataApprover": "merchant_child_test2",
            "dataApproveTime": "1732517994",
            "executiveApprover": "merchant_child_test2",
            "executiveApproveTime": "1732518023",
            "withdrawStatus": 6,
            "txHash": "e54b3c7b5ba6a2e46d7c99e2034578f0f5314644c88126a748e6333c6385bc74",
            "txTime": "1732518048",
            "callbackStatus": -1,
            "callbackTime": null,
            "createTime": "1732502211",
            "unsentMsgList": null
        }
    ]
}
```

返回示例参数

<table><thead><tr><th width="196.36328125">参数名</th><th>说明</th></tr></thead><tbody><tr><td>businessId</td><td>业务ID</td></tr><tr><td>chain</td><td>主网络</td></tr><tr><td>currency</td><td>币种/协议名称</td></tr><tr><td>flag</td><td>协议地址</td></tr><tr><td>coinsDoId</td><td>币种对应的 CoinsDo ID（可在 CoinSend “币种管理”页面查看）</td></tr><tr><td>fromAddress</td><td>发送地址</td></tr><tr><td>toAddress</td><td>接收地址</td></tr><tr><td>amount</td><td>下发数量</td></tr><tr><td>withdrawDeviceUuid</td><td>CoinSend设备UUID</td></tr><tr><td>dataApprover</td><td>数据审批人</td></tr><tr><td>dataApproveTime</td><td>数据审批时间戳 (秒)</td></tr><tr><td>executiveApprover</td><td>执行审批人</td></tr><tr><td>executiveApproveTime</td><td>执行审批时间戳 (秒)</td></tr><tr><td>withdrawStatus</td><td>下发状态码和说明：<br>0 - 待审核<br>1 - 审核中<br>2 - 驳回<br>3 - 待提币<br>4 - 提币中<br>5 - 确认中<br>6 - 成功<br>7 - 失败<br>8 - 重新下发<br>9 - 已取消<br>10 - 广播异常<br>11 - 取消（限制合约）<br>12 - 取消（签名失效）<br>可扩展字段，后续会增加其他的下发状态</td></tr><tr><td>txHash</td><td>交易哈希</td></tr><tr><td>txTime</td><td>交易上链时间戳(秒)</td></tr><tr><td>callbackStatus</td><td>回调状态码和说明：<br>-2 - 忽略回调<br>-1 - 无需回调<br>0 - 回调中<br>1 - 回调成功<br>2 - 回调失败</td></tr><tr><td>callbackTime</td><td>回调时间戳(秒)</td></tr><tr><td>createTime</td><td>交易创建时间戳(秒)</td></tr><tr><td>unsentMsgList</td><td>未下发原因</td></tr></tbody></table>

***

## 下发记录详情 <a href="#transfer" id="transfer"></a>

### **接口描述**

* 用于查询下发记录详情。由于下发状态可能存在异步更新，最终下发状态请以下发回调通知为准。

### **请求地址**

* `{URL}/v1/listBusinessWithdrawRecordDetail`

### **请求方式**

* POST
* Body 参数

<table><thead><tr><th width="105.84765625">参数名</th><th width="114.82421875">必填</th><th width="134.23828125">类型</th><th>说明</th></tr></thead><tbody><tr><td>data</td><td>是</td><td>string</td><td>内容（JSON字符串，如下）</td></tr></tbody></table>

```json
{
    "apiKey": "aa465953d55641b3",
    "businessIdList": ['20241125T023627_615','20241125T013051_799'],
    "timestamp": "2847982343622"
}
```

* data参数

<table><thead><tr><th width="181.3046875">参数名</th><th width="63.38671875">必填</th><th width="87.125">类型</th><th>说明</th></tr></thead><tbody><tr><td>apiKey</td><td>是</td><td>string</td><td>API KEY</td></tr><tr><td>businessIdList</td><td>是</td><td>array</td><td>下发记录业务ID，多笔以逗号分隔</td></tr><tr><td>timestamp</td><td>是</td><td>string</td><td>时间戳 (秒或毫秒)</td></tr></tbody></table>

### **请求示例**

```json
{
    "data": "{\"apiKey\":\"aa465953d55641b3\",\"businessIdList\":[\"20241125T023627_615, 20241125T013051_799\"],\"timestamp\":\"2847982343622\"}",
    "sign": "22212634c772653e4074347d36040d9c51613c9a827591b12ea5888e6c301fbe"
}
```

### **返回示例**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data": [
        {
            "businessId": "20241125T013051_799",
            "chain": "TRX",
            "currency": "TRX",
            "flag": "TRX",
            "coinsDoId": null,
            "fromAddress": "TUsh9f5waEaHmeKPM1dTKg1DAvPYEktB9L",
            "toAddress": "T9yTVCyAvXpHE4MKji5e6nhZf7RqpxyiSZ",
            "amount": "100",
            "withdrawDeviceUuid": "12DEFEF7-6D5B-4C94-8967-4DEC062B790E",
            "dataApprover": "merchant_child_test2",
            "dataApproveTime": "1732498297",
            "executiveApprover": "merchant_child_test2",
            "executiveApproveTime": "1732498368",
            "withdrawStatus": 1,
            "withdrawDetailStatus": 6,
            "txHash": "ec10197c20a1be2a3c07f98c3ac62ab11b3243a22849f7a77f7d4215499c6314",
            "txTime": "1732498386",
            "callbackStatus": -1,
            "callbackTime": null,
            "createTime": "1732498257",
            "unsentMsgList": null
        },
        {
            "businessId": "20241125T023627_615",
            "chain": "TRX",
            "currency": "TRX",
            "flag": "TRX",
            "coinsDoId": null,
            "fromAddress": "TUsh9f5waEaHmeKPM1dTKg1DAvPYEktB9L",
            "toAddress": "TQPrt12nsL9Ks7on5LUcG99UUXtFhJDgsK",
            "amount": "50",
            "withdrawDeviceUuid": "12DEFEF7-6D5B-4C94-8967-4DEC062B790E",
            "dataApprover": "merchant_child_test2",
            "dataApproveTime": "1732517994",
            "executiveApprover": "merchant_child_test2",
            "executiveApproveTime": "1732518023",
            "withdrawStatus": 1,
            "withdrawDetailStatus": 6,
            "txHash": "e54b3c7b5ba6a2e46d7c99e2034578f0f5314644c88126a748e6333c6385bc74",
            "txTime": "1732518048",
            "callbackStatus": -1,
            "callbackTime": null,
            "createTime": "1732502211",
            "unsentMsgList": null
        }
    ]
}
```

返回示例参数

<table><thead><tr><th width="196.36328125">参数名</th><th>说明</th></tr></thead><tbody><tr><td>businessId</td><td>业务ID</td></tr><tr><td>chain</td><td>主网络</td></tr><tr><td>currency</td><td>币种/协议名称</td></tr><tr><td>flag</td><td>协议地址</td></tr><tr><td>coinsDoId</td><td>币种对应的 CoinsDo ID（可在 CoinSend “币种管理”页面查看）</td></tr><tr><td>fromAddress</td><td>发送地址</td></tr><tr><td>toAddress</td><td>接收地址</td></tr><tr><td>amount</td><td>下发数量</td></tr><tr><td>withdrawDeviceUuid</td><td>CoinSend设备UUID</td></tr><tr><td>dataApprover</td><td>数据审批人</td></tr><tr><td>dataApproveTime</td><td>数据审批时间戳 (秒)</td></tr><tr><td>executiveApprover</td><td>执行审批人</td></tr><tr><td>executiveApproveTime</td><td>执行审批时间戳 (秒)</td></tr><tr><td>withdrawStatus</td><td>下发回调状态码和说明：<br>0 - 订单未完结<br>1 - 成功<br>2 - 驳回<br>5 - 已取消<br>6 - 取消 (限制合约)<br>7 - 取消 (签名过期)<br>可扩展字段，后续会增加其他的下发回调状态</td></tr><tr><td>withdrawDetailStatus</td><td>下发状态码和说明：<br>0 - 待审核<br>1 - 审核中<br>2 - 驳回<br>3 - 待提币<br>4 - 提币中<br>5 - 确认中<br>6 - 成功<br>7 - 失败<br>8 - 重新下发<br>9 - 已取消<br>10 - 广播异常<br>11 - 取消（限制合约）<br>12 - 取消（签名失效）<br>可扩展字段，后续会增加其他的下发状态</td></tr><tr><td>txHash</td><td>交易哈希</td></tr><tr><td>txTime</td><td>交易上链时间戳(秒)</td></tr><tr><td>callbackStatus</td><td>回调状态码和说明：<br>-2 - 忽略回调<br>-1 - 无需回调<br>0 - 回调中<br>1 - 回调成功<br>2 - 回调失败</td></tr><tr><td>callbackTime</td><td>回调时间戳(秒)</td></tr><tr><td>createTime</td><td>交易创建时间戳(秒)</td></tr><tr><td>unsentMsgList</td><td>未下发原因</td></tr></tbody></table>

***

## 获取下发统计 <a href="#transfer" id="transfer"></a>

### **接口描述**

* 查询下发统计

### **请求地址**

* `{URL}/v1/withdrawStatistic`

### **请求方式**

* POST
* Body 参数

<table><thead><tr><th width="105.84765625">参数名</th><th width="114.82421875">必填</th><th width="134.23828125">类型</th><th>说明</th></tr></thead><tbody><tr><td>data</td><td>是</td><td>string</td><td>内容（JSON字符串，如下）</td></tr></tbody></table>

```json
{
    "apiKey": "7bb52d79e46e47ab",
    "withdrawDeviceUuid": "3FA9B3EE-6275-49F4-8886-13B5A58F32CF",
    "startTime": "1738886400",
    "endTime": "1738943999",
    "timestamp": "1740379248"
}
```

* data 参数

<table><thead><tr><th width="181.3046875">参数名</th><th width="63.38671875">必填</th><th width="87.24609375">类型</th><th>说明</th></tr></thead><tbody><tr><td>apiKey</td><td>是</td><td>string</td><td>API KEY</td></tr><tr><td>withdrawDeviceUuid</td><td>是</td><td>string</td><td>设备UUID</td></tr><tr><td>startTime</td><td>是</td><td>string</td><td>开始时间 (時區UTC+0) (最多查一天且不可跨天)</td></tr><tr><td>endTime</td><td>是</td><td>string</td><td>结束时间 (時區UTC+0) (最多查一天且不可跨天)</td></tr><tr><td>timestamp</td><td>是</td><td>string</td><td>时间戳 (秒或毫秒)</td></tr></tbody></table>

### **请求示例**

```json
{
    "data":"{\"apiKey\":\"7bb52d79e46e47ab\",\"withdrawDeviceUuid\":\"3FA9B3EE-6275-49F4-8886-13B5A58F32CF\",\"startTime\":\"1738886400\",\"endTime\":\"1738943999\",\"timestamp\":\"1740379248\"}",
    "sign":"03dabf4073bad9d5fcde3b881bba076cae211ac28b11995289740f96f51162a5"
}
```

### **返回示例**

```json
{
    "code": 200,
    "msg": "Success",
    "success": true,
    "data": {
        "deviceName": "alpha",
        "deviceRemark": "Pixel 7-5be6",
        "withdrawDeviceUuid": "3FA9B3EE-6275-49F4-8886-13B5A58F32CF",
        "details": [
            {
              "chain": "ADA",
              "currency": "ADA",
              "currencyName": "ADA",
              "flag": "ADA",
              "customName": "ADA",
              "withdrawTotalAmount": 0,
              "balance": 0,
              "lastUpdateTime": null,
              "currencyType": 0
            },
            {
              "chain": "ALGO",
              "currency": "ALGO",
              "currencyName": "ALGO",
              "flag": "ALGO",
              "customName": "ALGO",
              "withdrawTotalAmount": 0,
              "balance": 0,
              "lastUpdateTime": null,
              "currencyType": 0
            }
        ]
    }
}
```

* data 参数

| 参数名                | 必填 | 类型     | 说明     |
| ------------------ | -- | ------ | ------ |
| deviceName         | 是  | string | 设备名称   |
| deviceRemark       | 是  | string | 设备备注   |
| withdrawDeviceUuid | 是  | string | 设备UUID |
| details            | 是  | array  | 统计资料   |

* details 参数

<table><thead><tr><th width="189.046875">参数名</th><th>必填</th><th>类型</th><th>说明</th></tr></thead><tbody><tr><td>chain</td><td>是</td><td>string</td><td>主链名称</td></tr><tr><td>currency</td><td>是</td><td>string</td><td>币种/协议</td></tr><tr><td>currencyName</td><td>是</td><td>string</td><td>币名称</td></tr><tr><td>flag</td><td>是</td><td>string</td><td>合约地址/币种</td></tr><tr><td>customName</td><td>否</td><td>string</td><td>自定义名称</td></tr><tr><td>withdrawTotalAmount</td><td>是</td><td>Decimal</td><td>下发集数量</td></tr><tr><td>balance</td><td>是</td><td>Decimal</td><td>余额</td></tr><tr><td>lastUpdateTime</td><td>否</td><td>string</td><td>最后更新时间</td></tr><tr><td>currencyType</td><td>是</td><td>Integer</td><td>币种类型 (0.主币 1.代币)</td></tr></tbody></table>

### **返回状态码**

<table><thead><tr><th width="105.85546875">状态码</th><th>说明</th></tr></thead><tbody><tr><td>4002</td><td>参数格式错误</td></tr><tr><td>4003</td><td>JSON数据转换异常</td></tr><tr><td>4004</td><td>APIKEY不存在</td></tr><tr><td>4005</td><td>ip受限，当前ip:</td></tr><tr><td>4007</td><td>验签失败</td></tr><tr><td>4010</td><td>请求过期</td></tr><tr><td>4032</td><td>查询钱包失败</td></tr><tr><td>4068</td><td>检查APIKEY失败</td></tr><tr><td>4099</td><td>请求次数太频繁</td></tr><tr><td>4116</td><td>选择时间超过时间限定范围</td></tr><tr><td>4117</td><td>查询下发统计数据异常</td></tr><tr><td>4118</td><td>查询币种配置失败</td></tr><tr><td>4119</td><td>查询支持的币种列表失败</td></tr><tr><td>4123</td><td>开始时间超过结束时间</td></tr><tr><td>4124</td><td>查询时间需为同一天</td></tr></tbody></table>

***

## CoinSend 批量新增代币 <a href="#coinsend-pi-liang-xin-zeng-dai-bi" id="coinsend-pi-liang-xin-zeng-dai-bi"></a>

### **接口描述**

* 批量新增 CoinSend 代币

### **请求地址**

* `{URL}/v1/addCoinSendToken`

### **请求方式**

* POST

### 请求参数

* Body 参数

<table><thead><tr><th width="105.84765625">参数名</th><th width="114.82421875">必填</th><th width="134.23828125">类型</th><th>说明</th></tr></thead><tbody><tr><td>data</td><td>是</td><td>string</td><td>内容（JSON字符串，如下）</td></tr></tbody></table>

```json
{
    "apiKey": "7bb52d79e46e47ab",
    "currencyList": [
    {
      "currency": "TRC20",
      "flag": "TTxkFx74d5k16nWnrfN7uy94pv3udyqbC8",
      "customName": "USDT",
      },
    {
      "currency": "ERC20",
      "flag": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
      "customName": "USDT"
    }
  ]
    "timestamp": "1740379248"
}
```

* data 参数

<table data-search="true"><thead><tr><th width="181.3046875">参数名</th><th width="63.38671875">必填</th><th width="141.546875">类型</th><th>说明</th></tr></thead><tbody><tr><td>apiKey</td><td>是</td><td>string</td><td>API KEY</td></tr><tr><td>currencyList</td><td>是</td><td>Array&#x3C;Object></td><td>代币列表（最大支持 10 条）</td></tr><tr><td>timestamp</td><td>是</td><td>string</td><td>时间戳 (秒)</td></tr></tbody></table>

* currencyList 元素结构

<table data-search="true"><thead><tr><th width="181.3046875">参数名</th><th width="63.38671875">必填</th><th width="141.546875">类型</th><th>说明</th></tr></thead><tbody><tr><td>currency</td><td>是</td><td>string</td><td>代币所属网络协议标识<br>示例：TRC20</td></tr><tr><td>flag</td><td>是</td><td>string</td><td>代币协议<br>示例：TTxkFx74d5k16nWnrfN7uy94pv3udyqbC8</td></tr><tr><td>customName</td><td>是</td><td>string</td><td>代币自定义名称<br>示例：USDT</td></tr><tr><td>needStar</td><td>否</td><td>boolean</td><td>true：设为偏好币种<br>false：不设为偏好币种<br>注：若不传 <code>needStar</code>，默认设为偏好币种。</td></tr></tbody></table>

### **请求示例**

```json
{
    "data":"{\"apiKey\":\"7bb52d79e46e47ab\",\"currencyList\":[{\"currency\":\"TRC20\",\"flag\":\"TTxkFx74d5k16nWnrfN7uy94pv3udyqbC8\",\"customName\":\"USDT\",\"needStar\":true},{\"currency\":\"ERC20\",\"flag\":\"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\"customName\":\"USDT\",\"needStar\":true}],\"timestamp\":\"1740379248\"",
    "sign":"03dabf4073bad9d5fcde3b881bba076cae211ac28b11995289740f96f51162a5"
}
```

### **返回示例**

```json
{
    "success": true,
    "code": 200,
    "msg": "Success",
    "data": {
        "total": 2,
        "successCount": 1,
        "failCount": 1,
        "failList": [
            {
                "currency": "ERC20",
                "flag": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
                "code": 4181,
                "msg": "当前币种未查询到完整的symbol或decimals信息"
            }
        ],
        "successList": [
            {
                "currency": "ERC20",
                "flag": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
                "coinsDoId": "USDT"
            }
        ]
    }
}
```

* data 参数

<table data-search="true"><thead><tr><th width="179.84765625">参数名</th><th width="149.51953125">类型</th><th>说明</th></tr></thead><tbody><tr><td>total</td><td>integer</td><td>本次请求的总代币条数</td></tr><tr><td>successCount</td><td>integer</td><td>成功处理数量，包含幂等成功（已存在视为成功）的数据</td></tr><tr><td>failCount</td><td>integer</td><td>失败处理数量</td></tr><tr><td>successList</td><td>array</td><td>成功明细列表</td></tr><tr><td>failList</td><td>array</td><td>失败明细列表</td></tr></tbody></table>

* successList 元素说明

<table data-search="true"><thead><tr><th width="180.01171875">参数名</th><th width="149.7265625">类型</th><th>说明</th></tr></thead><tbody><tr><td>currency</td><td>string</td><td>代币所属网络协议标识</td></tr><tr><td>flag</td><td>string</td><td>代币协议</td></tr><tr><td>coinsDoId</td><td>string</td><td>新增成功或幂等成功后返回的币种 CoinsDo ID</td></tr></tbody></table>

* failList 元素说明

<table data-search="true"><thead><tr><th width="179.62890625">参数名</th><th width="149.64453125">类型</th><th>说明</th></tr></thead><tbody><tr><td>currency</td><td>string</td><td>代币所属网络协议标识</td></tr><tr><td>flag</td><td>string</td><td>代币协议</td></tr><tr><td>code</td><td>string</td><td>错误码</td></tr><tr><td>msg</td><td>string</td><td>错误描述</td></tr></tbody></table>

### **返回状态码**

<table><thead><tr><th width="105.85546875">状态码</th><th>说明</th></tr></thead><tbody><tr><td>4002</td><td>代币配置列表不能为空<br>代币配置列表最大支持10条<br>币种/协议不能为空<br>标识不能为空<br>自定义代币名称不能为空<br>时间戳不能为空</td></tr><tr><td>4003</td><td>JSON数据转换异常</td></tr><tr><td>4004</td><td>APIKEY不存在</td></tr><tr><td>4005</td><td>ip受限，当前ip:</td></tr><tr><td>4007</td><td>HmacSHA256 验签失败</td></tr><tr><td>4010</td><td>请求过期</td></tr><tr><td>4099</td><td>请求次数太频繁</td></tr><tr><td>4181</td><td>当前币种未查询到完整的symbol或decimals信息</td></tr></tbody></table>
