标签:安康 trade order error 例程 sdk family 回调 aci
API,全称Application Programming Interface,中文翻译为应用程序编程接口,口语中常称接口。API是一些预先设定好的函数。为应用程序及技术开发人员提供基于某种软件或者硬件获取访问例程的能力,且不需要对源码进行访问,或者去理解一些内部工作机制的细枝末节。
为了让这个冰冷的技术名词易于理解,可以通俗的理解为,api相当于一个房门的钥匙。在这个大House里,每个房间都具备了不一样的用途与资源。如果想得到对应房间里的资源,第一步肯定是拿钥匙打开房门。调用API的过程,相当于钥匙开门的过程。
在API中,可分为open API以及私有APIi。Open API ,从字面理解,指的是对外公开的API接口,允许任何人调用它并得到到它背后的数据。它就好比于当前你要进入大型购物商场,首先必须得做出相应的身份认证比如扫描安康码,才可以进入商超获取到相应的产品及资源,而身份认证扫安康码意味着是你得到商场里产品资源的一个钥匙,道理同API。
现在很多企业或者应用程序都开放自己的open api,以便于技术开发人员调用方便,并且很多企业采用详细接口文档的形式进行输出,或者采用sdk文档方式打包。像优盾钱包研发团队就为企业及个人能够快速方便的接入数字货币而开发的一套应用系统,开放了优盾钱包API开发接口文档以及像Java、.Net、PHP多种语言的SDK对接交易所。
稳定币USDT在规避整个行情下跌风险、反向操作 数字货币提现方面占据着得天独厚的优势。不仅是各个交易所的宠儿,也深受投资者的青睐。随着企业(交易所、商城、游戏)业务型系统快速方便对接USDT的需求逐步扩大,API“钥匙”的作用愈发明显, 交易所等企业不得不面临接口对接怎么实现,对接步骤如何实现,支付接口如何对接的困惑。优盾钱包,作为全球首款交易所钱包管理系统,集审核、代付、归集功能于一身。自上线以来,安全运行700+天,交易所用户遍及中国、中国台湾、日、韩、美国、澳大利亚及加拿大等国家和地区,累计为用户管理资产总额达100000000+USDT,用户日均交易额达2000万USDT。
接下来,以它为例,
来解答usdt钱包接口对接怎么实现,对接步骤如何实现,支付接口如何对接的困惑。
详细接口文档如下:
1、目录
1.1、生成地址
1.2、提币
1.3、代付
1.4、交易回调
1.5、校验地址合法性
1.6、获取商户支持币种信息
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 接口地址
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 返回状态码表