usdt钱包如何跟交易所对接?

摘要:
加密货币交易所之间的竞争从未停止。头部交易所正在考虑创新模式和玩法,以争夺资本和用户。加密货币交易所能否随时随地满足用户的交易转账和现金提取需求?存放在交易所的资产是否安全?安全性、跨链集成、巨大的数据量以及其他业务需求,如地址生成、地址管理、资金管理、交易记录管理、货币补充和提取、回调等。USDT是数字货币市场的重要载体,它满足了生成USDT钱包的要求,并为更好的业务访问提供了USDT接口。

步入庚子鼠年,加密数字货币交易所之间的竞争从未停歇。头部交易所在思考创新模式、创新玩法争夺资本和用户,中小型交易所日夜探索如何在赛道中坚持下来。加密数字经济作为一种新兴行业,也是一场全天候、不停歇的全球比赛,时时刻刻都会带来意想不到的挑战,但往往与机遇、收获并存。

 usdt钱包如何跟交易所对接?第1张

对于一些中小型加密货币交易所来说,要想真正吸引并且留住更多的用户,核心是了解并满足用户需求,做好平台用户服务,毕竟“得用户者得天下”的共识在币圈依旧适用。另外还有安全、流动性等方面等考量,加密数字货币交易所能否满足用户随时随地进行交易转账、充提币的需求?用户存储在交易所的资产是否安全?会不会出现盗币事件?这是作为一个加密货币交易所最基本的特质,也是交易所用户最关心的问题。

币圈的激烈竞争、数字资产管理安全隐患,让诸多投资者十分焦虑。解决焦虑的办法就是正视它,对于交易所这种业务型系统,选择钱包的时候需要考虑的问题,应该是安全的同时也需要快速的业务对接。在业务上常见的难点有:安全、跨链整合、庞大的数据量、还有其他的业务需求比如生成地址、地址管理、资金管理、交易记录管理、充提币及回调等等。

USDT 是数字货币市场的重要载体,自 18 年危机以来,尽管各交易所都引入了诸入 BTC/PAX, BTC/USDC 等其他稳定币交易对,但成交量都不尽如人意。在现货市场,USDT 对上的流动性占据了绝对主导的地位。对比其他稳定币来说,USDT 可以灵活选择换链,使得它在 BTC/ETH 拥堵的时候,仍旧能够快速转账。如此便利的属性,也印证了它一步一个脚印地扩张了市场份额。

随着各交易所推出的 USDT 合约,有更多的流动性会流向 USDT 的交易,充沛的流动性更进一步巩固 USDT 的龙头地位,短期内,USDT 将会是一个低风险高稳定的资产。以USDT为例,我们来看看usdt钱包如何跟交易所对接,即交易所如何搭建一个交易所usdt钱包系统,使之在安全、稳定的前提下,满足usdt钱包生成、提供usdt接口以便于更好地业务接入,多地址生成、usdt自动充提、交易查询、资金归集、提币代付等。

usdt钱包如何跟交易所对接?实现方法可以拆解为 生成usdt地址、 提usdt币、 代付usdt、交易回调 、 校验地址合法性 、 获取商户支持币种信息等六个步骤。

 usdt钱包如何跟交易所对接?第2张

详细代码如下:

1、生成地址

1.1 场景说明

请求指定币种地址,如要成功获取地址,需先存在钱包,且钱包支持该币种, 详情参看

1.2 接口详情

1.2.1 接口地址

接口详情

 

URL

【/mch/address/create】

请求方式

POST

1.2.2 参数

1.2.2.1 参数说明

参数

类型

是否必填

说明

备注

timestamp

String

时间戳

见 验签说明

nonce

String

随机数

见 验签说明

sign

String

签名

见 验签说明

body

String

消息内容

json字符串,格式如下

[

    {

     "merchantId":"300015",

     "coinType":520,

     "callUrl":"http://localhost:8080/callBack"

    }

]

1.2.2.2 body参数字段

body参数名

类型

是否必填

说明

merchantId

String

商户号

coinType

Integer

主币种编号,见 附录一

callUrl

String

回调地址,通过该接口创建的地址,以后关于该地址的充币信息会通过您指定的回调地址通知您。具体示例见 交易回调接口

walletId

String

钱包编号,默认根据主钱包生成地址

alias

String

地址别名

1.2.2.3 示例

{

    "timestamp": 1535005047,

    "nonce": 10000,

    "sign": "a230def43c1a12b14393880a28d4e005",

    "body": "[{"merchantId":"300015","coinType":520,"callUrl":"http://localhost:8080/callBack"}]" 

}

1.2.3 返回状态码表

code

解释

200

成功

4005

非法参数

4001

商户不存在

4169

商户已禁用

4162

签名错误

4175

钱包编号错误

4017

商户没有创建钱包

4176

钱包未添加支持该币种

4166

商户没有配置套餐

4168

商户地址达到上限

4045

币种信息错误

-1

获取地址失败

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 参数说明

参数

类型

是否必填

说明

备注

timestamp

String

时间戳

见 验签说明

nonce

String

随机数

见 验签说明

sign

String

签名

见 验签说明

body

String

消息内容

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参数名称

是否必填

类型

说明

address

String

提币地址

amount

String

提币数量

merchantId

String

商户号

mainCoinType

String

主币种编号 (见 附录一 )

coinType

String

子币种编号 (见 附录一 )

callUrl

String

回调地址,通过该callUrl告知您该笔提币交易的状态,具体示例见 交易回调接口

businessId

String

业务id,必须保证该字段在系统内唯一,如果重复,则该笔审核钱包不会接收。

memo

String

备注,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

成功

4005

非法参数

4598

传入body中的list对象中的所有merchantId必须保持一致

4001

商户不存在

4169

商户已被禁用

4183

到账地址异常

4193

EOS金额小数点后超过4位长度

4034

未找到该币种信息

2.3.1 成功

{

    "message":"SUCCESS",

    "code":200

}

2.3.2 失败

{

    "code": "4101",

    "message": "SIGN_MSG_ERROR"

}

3、代付

3.1 场景说明

代付,发送自动付款申请,未设置代付信息或代付失败则进入审核状态。

3.2 接口详情

3.2.1 接口地址

接口详情

 

URL

【/mch/withdraw/proxypay】

请求方式

POST

3.2.2 参数

3.2.2.1 参数说明

参数

类型

是否必填

说明

备注

timestamp

String

时间戳

见 验签说明

nonce

String

随机数

见 验签说明

sign

String

签名

见 验签说明

body

String

消息内容

JSON字符串,格式如下

[

  {

      "address":"raadSxrUhG5EQVCY75CSGaVLWCeXd6yH6s",

      "amount":"0.1",

      "merchantId":"100146",

      "mainCoinType":"144",

      "coinType":"144",

      "callUrl":"http://localhost:8080/callBack",

      "businessId":"571001",

      "memo":"10112"

  }

]

3.2.2.2 body参数说明

body参数名称

类型

是否必填

说明

merchantId

String

商户号

address

String

提币地址

mainCoinType

String

主币种编号,见 附录一

coinType

String

子币种编号,见 附录一

amount

String

交易数量

callUrl

String

回调地址,提币(审核、交易)结果将通过该地址进行回调,具体示例见 交易回调接口

businessId

String

业务id,必须保证该字段在系统内唯一,如果重复,则该笔提币钱包将不会进行接收

memo

String

备注,XRP和EOS,这两种币的提币申请该字段可选,起他类型币种不填

3.2.2.2 示例

{

    "timestamp": 1535005047,

    "nonce": 100000,

    "sign": "e1bee3a417b9c606ba6cedda26db761a",

    "body": "[{"address":"raadSxrUhG5EQVCY75CSGaVLWCeXd6yH6s","amount":"0.1","merchantId":"100146","mainCoinType":"144","coinType":"144","callUrl":"http://localhost:8080/callBack","businessId":"571001","memo":"10112"}]"

}

3.2.3 返回状态码表

code

解释

200

成功

4005

非法参数

4001

商户不存在

4166

商户没有配置套餐

4169

商户已被禁用

4612

签名错误

4163

签名信息错误

569

无效的地址

571

已存在审核记录,将不再进行处理

581

非法提币金额

554

商户不支持该币种

3.3 调取示例

3.3.1 成功

{

    "message":"SUCCESS",

    "code":200

}

3.3.2 失败

{

    "code": "4101",

    "message": "SIGN_MSG_ERROR"

}

4、交易回调接口

4.1 场景说明

网关收到交易处理结果,调用商户提供的回调接口,通知商户具体变化信息。该接口网关发送给您指定的回调地址的内容,处理您的业务信息。分充值回调和提币回调,其中提币最多会进行两次回调(审核回调+交易结果回调)

4.2 接口详情

4.2.1 接口地址

接口详情

 

URL

 

请求方式

POST

4.2.2 参数

4.2.2.1 参数说明

参数

类型

是否必填

说明

备注

timestamp

String

时间戳

见 验签说明

nonce

String

随机数

见 验签说明

sign

String

签名

见 验签说明

body

String

消息内容

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参数名称

类型

说明

address

String

地址

amount

String

交易数量,根据币种精度获取实际金额,实际金额=amount/pow(10,decimals),即实际金额等于amount除以10的decimals次方

fee

String

矿工费,根据币种精度获取实际金额,实际金额获取同上

decimals

String

币种精度

coinType

String

子币种编号,见 附录一

mainCoinType

String

主币种编号,见 附录一

businessId

String

业务编号,提币回调时为提币请求时传入的,充币回调无值

blockHigh

String

区块高度

status

Integer

状态,见 回调接口状态说明

tradeId

String

交易流水号

tradeType

Integer

交易类型,见 回调接口交易类型说明

txid

String

区块链交易哈希

memo

String

备注,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 参数说明

参数

类型

是否必填

说明

备注

timestamp

String

时间戳

 

nonce

String

随机数

 

sign

String

签名

 

body

String

消息内容

JSON字符串,格式如下

{

    "merchantId":200000,

    "mainCoinType":"206",

    "address":"DJY781Z8qbuJeuA7C3McYivbX8kmAUXPsW"

}

5.2.2.2 body参数说明

body参数名称

类型

是否必填

说明

merchantId

Long

商户号

mainCoinType

String

主币种编号,见 附录一

address

String

需校验的地址

5.2.2.2 示例

{

    "timestamp": 1535005047,

    "nonce": 100000,

    "sign": "e1bee3a417b9c606ba6cedda26db761a",

    "body": "[{"merchantId":200000,"mainCoinType":"206","address":"DJY781Z8qbuJeuA7C3McYivbX8kmAUXPsW"}]"

5.2.3 返回状态码表

code

解释

200

成功

4005

非法参数

4162

签名错误

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 参数说明

参数

类型

是否必填

说明

timestamp

String

时间戳

nonce

String

随机数

sign

String

签名

body

String

消息内容

6.2.2.2 body参数说明

body参数名称

类型

是否必填

说明

merchantId

Long

商户号

showBalance

Boolean

是否查询余额,false不获取,true获取

6.2.2.3 示例

{

    "timestamp": 1535005047,

    "nonce": 100000,

    "sign": "e1bee3a417b9c606ba6cedda26db761a",

    "body": "{"merchantId":"200032","showBalance":true}"

}

6.2.3 返回状态码表

状态码

解释

200

成功

4005

body参数错误

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":"http://bipay-admin.oss-cn-hangzhou.aliyuncs.com/bipay-admin-release/coin-logo/BTC.png" // 币种log地址

        },

        {

            "name": "ETH", // 币种别名

            "coinName":"Ethereum", // 币种全称

            "symbol":"ETH", // 币种单位

            "mainCoinType":"60", //主币种类型

            "coinType":"60", // 币种类型

            "decimals":"18", // 币种精度

            "tokenStatus":"0", // 0: 主币 1:代币

            "mainSymbol":"ETH", //主币种单位

            "balance":"0", // 币种余额

            "logo":"https://bipay-admin.oss-cn-hangzhou.aliyuncs.com/bipay-admin-release/coin-logo/ETH.png" // 币种log地址

        }

    ]

}

6.3.2 失败

{

    "code":4005,

    "message":"BGS_ILLEGAL_PARAMETER"

}

附录一

主币种编号

子币种编号

币种简称

币种英文名

币种中文名称

精度

0

0

BTC

Bitcoin

比特币

8

60

60

ETH

Ethereum

以太坊

18

0

31

USDT

Tether USD

泰达币

8

520

520

CNT

CNT

测试币

18

5

5

DASH

DASH

达世币

8

133

133

ZEC

ZEC

大零币

8

145

145

BCH

Bitcoincash

比特币现金

8

61

61

ETC

Ethereum Classic

以太坊经典

18

2

2

LTC

LTC

莱特币

8

2301

2301

QTUM

QTUM

量子链币

8

502

502

GCC

GalaxyChain

8

60

合约地址

eth代币

eth代币

根据代币具体情况而定

144

144

XRP

Ripple

瑞波币

6

194

194

EOS

EOS

柚子币

4

194

194

EOS

EOS

柚子币

4

2304

2304

IOTE

IOTE

IOTE

8

2303

2303

VDS

Vollar

Vollar币

8

回调接口状态说明

状态

说明

0

待审核

1

审核成功

2

审核驳回

3

交易成功

4

交易失败

回调接口交易类型说明

状态

说明

1

充币回调

2

提币回调

验签说明

为了保证商户传送到优盾的参数信息不被恶意篡改,网关为商户接口提供Md5加密摘要认证。商户可用基础加密参数:时间戳、随机数、签名密钥(商户唯一的APIKEY)、请求明文参数按指定顺序排列进行Md5加密,产生一个验签串sign,商户请求网关接口时,带上参数时间戳、随机数、请求明文参数、sign作为参数。网关拿到相应的参数以同样的方式进行签名验签。同理,网关请求商户也以同样的方式进行身份验证。

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

key为接口授权码APIKEY,由网关分配给商户,加密字段顺序不能错误

币种地址校验规则

主币种类型

币种简称

币种英文名称

币种中文名称

地址前缀

地址长度限制区间

0

BTC

Bitcoin

比特币

1或者3

[26,36]

60

ETH

Ethereum

以太坊

0x

[42]

145

BCH

Bitcoincash

比特币现金

1

[26,36]

61

ETC

EthereumClassic

以太坊经典

0x

[42]

2

LTC

Litecoin

莱特币

L或者M

[26,36]

508

GX

GX

G

[26,36]

503

NBTC

NBTC

N

不限制

99

STO

STO

证券型通证发行

S

不限制

5

DASH

DASH

达世币

X

[26,36]

2301

QTUM

QTUM

量子链币

Q

[26,36]

133

ZEC

ZCash

大零币

t1

不限制

144

XRP

Ripple

瑞波币

r

[34]

综上所述,交易所就成功对接了usdt钱包。不仅满足了交易所转账、收款的基本需求,还可以实现交易所海量地址的归集需求。

免责声明:文章转载自《usdt钱包如何跟交易所对接?》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Web基础开发最核心要解决的问题Linux Linux内核参数调优下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

高性能JSON框架之FastJson的简单使用

转载 高性能JSON框架之FastJson的简单使用 1.前言1.1.FastJson的介绍:JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架,Github地址: FastJson 1.2.FastJson的特点:1.FastJson数度...

Gojs学习史(一):基本定义

1. gojs定义 初始化时,先简化gojs本身的方法: var Go = go.GraphObject.make; //简化方法 1.1 画布定义 在声明了Go方法之后,接下来就是定义画布: myDiagram = Go(go.Diagram,"myDiagramDiv",{ initialContentAlignment:go.Spot.Cen...

Nginx基础06:location语法

location语法:表示uri方式定位 基础语法有三种: location = pattern{}  精准匹配 location pattern{}  一般匹配 location ~ pattern{} 正则匹配 location正则表达式: "~ xxx":匹配访问的请求的URL中必须包含"xxx" "~* xXx":匹配忽略后面"xXx"是否大...

React项目的一些配置以及插件

创建项目 1、安装cra npm install -g create-react-app 2、创建项目   “react-lesson”  为文件名 create-react-app react-lesson 3、启动项目 npm start   使用第三方组件 1、antd: npm install antd --save 使用: import Butt...

Node.js:dgram模块实现UDP通信

1、什么是UDP? 这里简单介绍下,UDP,即用户数据报协议,一种面向无连接的传输层协议,提供不可靠的消息传送服务。UDP协议使用端口号为不同的应用保留其各自的数据传输通道,这一点非常重要。与TCP相比,占用资源更少,传输速度更快。 2、了解UDP单播、广播和组播 单播:向一个单播地址发送UDP数据报时,数据报只能被指定的IP主机接收,同一子网下的其它主机...

JQuery表格操作的常用技巧总结

JQuery对表格进行操作的常用技巧。 1、表格奇数行和偶数行分别添加样式  复制代码代码如下: $(function(){  $('tr:odd').addClass("odd");  $('tr:even').addClass("even");  });  不算表的头部  复制代码代码如下: $(function(){  $('tbody>...