# Unicat介接文件
## 说明
### 环境网址
测试环境 : `https://stage-api.unicat.cc`
正式环境 : `https://api.unicat.cc`
### 版本
v3 : `/api/v3`
### 资料请用Json格式提交
`Content-Type:application/json`
### 签名金钥
请找商务获取
## 目录
* [系统支持币种](#系统支持币种)
* [交易金额限制](#交易金额限制)
* [签名规则](#签名规则)
* [建立付款订单](#建立付款订单) : `POST /api/v3/createPayOrder`
* [查询付款订单](#查询付款订单) : `POST /api/v3/queryPayOrder`
* [建立商户出款单](#建立商户出款单) : `POST /api/v3/createWithdraw`
* [查询商户出款单](#查询商户出款单) : `POST /api/v3/queryWithdraw`
* [查询建议汇率](#查询建议汇率) : `POST /api/v3/exchangeRate`
* [使用者钱包绑定](#使用者钱包绑定) : `POST /api/v3/bindUser`
* [[notify] 支付订单回调](#支付订单回调) : `Unicat系统回调贵方提供的网址`
* [[notify] 商户出款回调](#商户出款回调) : `Unicat系统回调贵方提供的网址`
* [[notify] 使用者钱包连结回调](#使用者钱包绑定回调) : `Unicat系统回调贵方提供的网址`
## 系统支持币种
| 币别 | 說明 |
|:-|:-|
| BTC | Bitcoin |
| ETH | Ethereum(以太坊) |
| USDT_ERC20 | Ethereum USDT(ERC-20) |
| USDT_TRC20 | Tron USDT(TRC-20) |
| USDT_BEP20 | Binance smart chain USDT(BEP-20)<font color=#FF0000>[维护中]</font> |
## 交易金额限制
| 币种 | 交易最小数量 | 交易最大数量 | 支援小数单位 |
|:-:|:-|:-|:-|
| BTC | 0.0007 | 1 | 0.00001 |
| ETH | 0.025 | 10 | 0.0001 |
| USDT_ERC20 | 7 | 无上限 | 0.01 |
| USDT_TRC20 | 7 | 无上限 | 0.01 |
| USDT_BEP20 | 7 | 无上限 | 0.01 |
**EX 1:单次BTC交易至少0.0001BTC,可以接受0.00012BTC,不接受0.000123BTC**
**EX 2:交易单位為「聪」(Satoshi、Sat),故交易数量务必再乘上10^8。**
## 签名规则
将参数(除了Sign),依照升冪排序后,各key=value用&连接,最后再加上key=签名金钥,md5后转为全大写即为sign。
**范例**
```
开发者令牌为:A299953927BB4959F7807B0F4A188E0C
传送参数:
{
"clientID": "unicatTest",
"orderID": "29367465624676320",
"clientOrderID": "TEST-1120-01",
"symbol": "USDT_ERC20",
"sign": ""
}
将参数排序 顺序为[已拿除sign]
[clientID clientOrderID orderID symbol]
并将资料依序用key=value并用&连接
最后再加上&key=开发者令牌
加密内容为
clientID=unicatTest&clientOrderID=TEST-1120-01&orderID=29367465624676320&symbol=USDT_ERC20&key=A299953927BB4959F7807B0F4A188E0C
md5後即為sign
649F4A6D07D417BD7572CA4877F48CE1
```
## 建立付款订单
**URL** : `/api/v3/createPayOrder`
**Method** : `POST`
**请求参数**
| 参数|是否必填|类型|参数介绍 |
|:-------------|:-------------|:-------------|:-------------|
| clientID | Y | string | 商户编号 |
| clientUserID | N | string | 商户会员编号 |
| clientOrderID | Y | string | 商户订单编号 |
| clientDescription | N | string | 商户订单备注 |
| amount | Y | string | 金额 |
| clientRMB | N | string | 订单等值人民币(商户客制) |
| symbol | Y | string | 币种(BTC,ETH,USDT_ERC20,USDT_TRC20,USDT_BEP20) |
| callBackUrl | Y | string | 回调网址 |
| timestamp | Y | string | 时间戳记 |
| sign | Y | string | 签名 |
**回应参数**
| 参数|参数介绍 |
|:-------------|:-------------|
| orderID | Unicat订单编号 |
| qrcode | QRCODE 网址 |
| amount | 订单提交金额 |
| payAmount | 会员需付款金额 |
| address | 付款地址 |
| code | 回应代码 |
| message | 回应讯息* code非200才会有内容 |
| timestamp | 时间戳记 |
| sign | 签名 |
[GoTop](#目录)
## 查询付款订单
**URL** : `/api/v3/queryPayOrder`
**Method** : `POST`
**请求参数**
| 参数 | 是否必填 | 类型 | 参数介绍 |
|:-------------|:-------------|:-------------|:-------------|
| clientID | Y | string | 商户编号 |
| clientOrderID | N | string | 商户订单编号(与orderID择一) |
| orderID | N | string | Unicat订单编号(与clientOrderID择一) |
| timestamp | Y | string | 时间戳记 |
| sign | Y | string | 签名 |
**回应参数**
| 参数 | 参数介绍 |
|:-------------|:-------------|
| orderID | Unicat订单编号 |
| clientOrderID | 商户订单编号 |
| clientUserID | 商户使用者编号 |
| clientDescription | 商户订单备注 |
| symbol | 币种(BTC,ETH,USDT_ERC20,USDT_TRC20,USDT_BEP20) |
| amount | 订单提交金额 |
| payAmount | 会员需付款金额 |
| clientRMB | 订单等值人民币(商户客制) |
| systemRMB | 订单等值人民币(系统) |
| orderStatus | 订单状态(PENDING,SUCCESS,FAIL) |
| callBackUrl | 回调网址 |
| code | 回应代码 |
| message | 回应讯息 *code非200 才会有内容 |
| timestamp | 时间戳记 |
| sign | 签名 |
[GoTop](#目录)
## 建立商户出款单
**URL** : `/api/v3/createWithdraw`
**Method** : `POST`
**请求参数**
| 参数 | 是否必填 | 类型 | 参数介绍 |
|:-------------|:-------------|:-------------|:-------------|
| clientID | Y | string | 商户编号 |
| clientUserID | N | string | 商户会员编号 |
| clientWithdrawID | Y | string | 商户提款编号 |
| clientUserAddress | Y | string | 商户会员钱包地址 |
| symbol | Y | string | 币种(BTC,ETH,USDT_ERC20,USDT_TRC20,USDT_BEP20) |
| amount | Y | string | 金额 |
| clientRMB | N | string | 订单等值人民币(商户客制) |
| callBackUrl | Y | string | 回调网址 |
| timestamp | Y | string | 时间戳记 |
| sign | Y | string | 签名 |
**回应参数**
| 参数 | 参数介绍 |
|:-------------|:-------------|
| withdrawID | Unicat提款订单编号 |
| clientWithdrawID | 商户提款编号 |
| code | 回应代码 |
| message | 回应讯息 *code非200 才会有内容 |
| timestamp | 时间戳记 |
| sign | 签名 |
[GoTop](#目录)
## 查询商户出款单
**URL** : `/api/v3/queryWithdraw`
**Method** : `POST`
**请求参数**
| 参数 | 是否必填 | 类型 | 参数介绍 |
|:-------------|:-------------|:-------------|:-------------|
| clientID | Y | string | 商户编号 |
| withdrawID | N | string | Unicat提款订单编号(与clientWithdrawID择一) |
| clientWithdrawID | N | string | 商户提领订单编号(与withdrawID择一) |
| timestamp | Y | string | 时间戳记 |
| sign | Y | string | 签名 |
**回应参数**
| 参数 | 参数介绍 |
|:-------------|:-------------|
| clientUserID | 商户使用者编号 |
| clientUserAddress | 会员钱包地址 |
| clientWithdrawID | 商户提款订单编号 |
| withdrawID | Unicat提款订单编号 |
| symbol | 币种(BTC,ETH,USDT_ERC20,USDT_TRC20,USDT_BEP20) |
| amount | 订单提交金额 |
| clientRMB | 订单等值人民币(商户客制) |
| systemRMB | 订单等值人民币(系统) |
| status | 订单状态(PENDING,SUCCESS,FAIL) |
| withdrawTime | 提领发起时间 |
| approvedTime | 审核时间 |
| code | 回应代码 |
| message | 回应讯息 *code非200 才会有内容 |
| timestamp | 时间戳记 |
| sign | 签名 |
[GoTop](#目录)
## 查询建议汇率
**URL** : `/api/v3/exchangeRate`
**Method** : `POST`
**请求参数**
| 参数 | 是否必填 | 类型 | 参数介绍 |
|:-------------|:-------------|:-------------|:-------------|
| symbol | Y | string | 币种(BTC,ETH,USDT_ERC20,USDT_TRC20,USDT_BEP20) |
| timestamp | Y | string | 时间戳 |
**回应参数**
| 参数 | 参数介绍 |
|:-------------|:-------------|
| rateRMB | 建议汇率 |
| code | 回应代码 |
| message | 回应讯息 *code非200 才会有内容 |
## 使用者钱包绑定
**URL** : `/api/v3/bindUser`
**Method** : `POST`
**请求参数**
| 参数 | 是否必填 | 类型 | 参数介绍 |
|:-------------|:-------------|:-------------|:-------------|
| clientID | Y | string | 商户编号 |
| clientUserID | Y | string | 商户会员编号 |
| callBackUrl | Y | string | 回调网址 |
| timestamp | Y | string | 时间戳 |
| sign | Y | string | 签名 |
**回应参数**
| 参数 | 参数介绍 |
|:-------------|:-------------|
| qrcodeData | QRCODE资料 |
| qrcodeImageUrl | QRCODE网址 |
| code | 回应代码 |
| message | 回应讯息 *code非200 才会有内容 |
| sign | 签名 |
## 支付订单回调
**URL** : `Unicat系统回调贵方提供的网址(付款完成才會回調)`
**Method** : `POST`
**回应参数**
| 参数 | 类型 | 参数介绍 |
|:-------------|:-------------|:-------------|
| clientID | string | 商户编号 |
| clientOrderID | string | 商户订单编号 |
| orderID | string | Unicat订单编号 |
| symbol | string | 币种(BTC,ETH,USDT_ERC20,USDT_TRC20,USDT_BEP20) |
| amount | string | 订单提交金额 |
| payAmount | string | 会员需付款金额 |
| clientRMB | string | 订单等值人民币(商户客制) |
| systemRMB | string | 订单等值人民币(系统) |
| payTimestamp | string | 付款时间 |
| sign | string | 签名 |
**回应(貴司)**
成功请回传: SUCCESS
失败请回传: ERROR:失败原因
[GoTop](#目录)
## 商户出款回调
**URL** : `Unicat系统回调贵方提供的网址`
**Method** : `POST`
**回应参数**
| 参数 | 类型 | 参数介绍 |
|:-------------|:-------------|:-------------|
| clientID | string | 商户编号 |
| clientUserID | string | 商户会员编号 |
| clientWithdrawID | string | 商户提款订单编号 |
| clientUserAddress | string | 会员钱包地址 |
| withdrawID | string | Unicat提款订单编号 |
| amount | string | 提款金额 |
| clientRMB | string | 订单等值人民币(商户客制) |
| systemRMB | string | 订单等值人民币(系统) |
| symbol | string | 币种(BTC,ETH,USDT_ERC20,USDT_TRC20,USDT_BEP20) |
| replyTimestamp | string | 请款时间 |
| sign | string | 签名 |
**回应(貴司)**
成功请回传: SUCCESS
失败请回传: ERROR:失败原因
[GoTop](#目录)
## 使用者钱包绑定回调
**URL** : `Unicat系统回调贵方提供的网址`
**Method** : `POST`
**回应参数**
| 参数 | 参数介绍 |
|:-------------|:-------------|
| clientID | 商户编号 |
| clientUserID| 商户会员编号 |
| userName| Unicat会员帐号 |
| BTC | BTC钱包地址 |
| ETH | ETH钱包地址 |
| USDT_ERC20 | USDT_ERC20钱包地址 |
| USDT_TRC20 | USDT_TRC20钱包地址 |
| USDT_BEP20 | USDT_BEP20钱包地址 |
| sign | 签名 |
**回应(貴司)**
成功请回传: SUCCESS
失败请回传: ERROR:失败原因
[GoTop](#目录)