English 登录

Get Started On Platform

Environment
API Regulation
Authentication
Data Format
Error Code
Digital Currency Support
Required Confirm Number
Callback Format

API v1

Payment
CreateOrder
CreateOrderEx
Account
CreateAccount
CreateWallet
GetTransactionsByUid
GetBalanceByUid
SendTo
AddressCheck
GetFeeByCoin
SendMany
GetUidByName
ManualUnlocking
UserLockups
GetLockByUid
GetLockrecordByUid
GetUserApproval
OperationApproval

Callback

Transaction Notify
Auditing Notify

Parameter Type

User Authority
Currency Support
Currency flow
Transaction status
Increase in service charges

Example

Demo1

No action selected

You can try selecting ‘obtain a token to access your own resources’ from the left column.

Learn more about using the documentation.

URL
Request
切换 header
nodejs敬请期待
php 敬请期待
java 敬请期待
Response
HTTP CODE
200
BODY

Get Started On Platform

我们为开发者准备了测试环境和正式环境两套接口地址,测试环境可以在不需要SecretKey和AccessToken的情况下使用,但调用返回均是无效的测试数据。

Environment

我们为开发者准备了测试环境和正式环境两套接口地址,测试环境可以在不需要SecretKey和AccessToken的情况下使用,但调用返回均是无效的测试数据。

正式环境 https://api.coinsu.com/
测试环境 正在开发...

API Regulation

API调用格式如下(中括号内为注解),每次调用接口,确保接口URL符合如下格式。同时我们只允许通过POST请求的方式调用API。其他请求将被拒绝。

https://api.coinsu.com/_api/[版本号]/[模块名]/[方法名]

Authentication

在调用接口前,您需要在HTTP请求头部设置好SecretKeyAccessToken确保API能正确识别您的身份,然后设置参数和模块名和方法名来调用接口,例如适用Python来调用接口的完整代码如下。同时您也应该确保将SecretKeyAccessToken保存在安全的位置避免泄露造成安全事故。

nodejs 敬请期待
php 敬请期待
java 敬请期待

Data Format

所有API均使用Json作为数据交换格式,创建ETH钱包地址的请求和响应例子如下。


请求 :

{

	"uid": "u6b286c90-0728-11e9-ab94-7d71263ebce",
	"coin_type": "ETH"

}

返回 :

{
	"retcode": "200",
	"retmsg": "OK",
	"data": {
	"address": "0xC98cd7ffff974bDeC2FB00DA6d5597B5D4917bb4"
	}
}
			

Error Code

接口调用如果成功,则返回HTTP 200 OK,如果失败则返回对应的HTTP状态码,以及在返回的参数retcode中返回错误码,以及retmsg错误代码参考。

HTTP Code Meaning HTTP Code Meaning
200 OK 202 Bad Request
400 Bad Request 401 Unauthorized
403 Forbidden 404 Not Found
429 Too Many Requests 500 Internal Server Error
503 Service Unavailable 504 Gateway Timeout
ApiCode Meaning ApiCode Meaning
10000 该币种不存在 10001 UID不存在
10003 该用户名已被注册,请更换用户名 10004 该邮箱已被绑定,请更换邮箱
10005 不存在的账户,请确认收款地址是否正常 10006 收款地址类型不正确!
10099 系统异常,请联系管理员

Digital Currency Support

CoinSU提供了丰富的币种支持,包括公链币种和基于公链的代币协议。币种支持大约每个月更新一次,如果您对于新币种支持有任何建议,或者您的某个数字资产创办者,可以通过邮件support@coinsu.com联系我们获得支持。以下为CoinSU支持的公链数字货币币种列表。

Coin Type Digital Currency Official Website
BTC Bitcoin http://www.bitcoin.org
BCHABC Bitcoin Cash http://www.bitcoinabc.org
BCHSV Bitcoin Satosi Version http://www.bitcoinsv.org
LTC Litecoin http://www.litecoin.org
ETH Ethereum http://www.Ethereum.org
USDT_OMNI Tether USD https://tether.to/

以下为CoinSU支持的基于以太坊ERC20协议的的扩展币种列表。

Coin Type Digital Currency Contract Address
USDT_ERC20 Tether USD 0xdac17f958d2ee523a2206206994597c13d831ec7
PAX Paxos Standard 0x8e870d67f660d95d5be530380d0ec0bd388289e1
GUSD Global USD 0x056fd409e1d7a124bd7017459dfea2f387b6d5cd
HKT HackerToken 0x2559f0dd36179c230443d2c3846435e52eb2b2df

Required Confirm Number

CoinSU为避免支持的币种出现双花算力攻击而导致交易回滚,根据不同公链的出块速度,算力大小,为保障安全约定了交易确认次数(即包含交易的块后续追加块数),才达到约定确认次数后,交易方可被认可并计入余额。约定交易确认次数如下。

Coin Type Digital Currency Required Confirm Number
BTC Bitcoin 6
BCHABC Bitcoin Cash 8
BCHSV Bitcoin Satosi Version 8
LTC Litecoin 12
ETH Ethereum 30
USDT_OMNI Tether USD 6

Callback Format

在您创建SecretKeyAccessToken的同时,同时也需要设置对应的回调接口,以下是回调返回格式,notify_code返回为1时为交易结果的回调,返回2时为审批结果的回调


{
	"notify_code":"1",
	"sign":"",
	"msgid":"tx10021",
	"data":{
		//返回参数见Callback,返回json字符串
	}
}
			

API v1

CreateOrder
(商户创建订单接口)
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
product_id String 商品名称 0015512332122
amount String 设置商品数量 10
callback_data String 设置回调传参 Y2FsbGJhY2s=

返回参数说明:

参数 类型 描述 示例值
order_id String 平台订单号 1545114324201770
CreateOrderEx
(商户创建订单接口)
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
product_name String 设置商品名称 Apple/苹果 iPhone XS 256G
product_price String 设置商品单价 1.5
product_count String 设置商品数量 10
payment_method String 0 数字货币 1 法币 0
coin_type 详情 String 币种类型 BTC
callback_data String 设置回调传参 Y2FsbGJhY2s=

返回参数说明:

参数 类型 描述 示例值
order_id String 平台订单号 1545114324201770
CreateAccount
(创建子账户)
当你需要创建子账户时,调用此接口可生成一个用户,返回的uid可做为改用户的唯一标识,但是该用户默认不存在地址,需要您去调用 CreateWallet 接口去创建地址
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
authority_code 详情 int 授权码 0
email String 用于账户登录,找回密码。 test@email.com
name String 账户昵称,登录名。如果为空,系统会随机创建 loginname

返回参数说明:

参数 类型 描述 示例值
uid String 平台UID ue8a9df46-f2d3-11e8-be75-8cec4b9c58b5

业务错误码:

retcode 错误描述
10004 该邮箱已被绑定,请更换邮箱
10099 系统异常,请联系管理员
CreateWallet
(创建钱包地址)
在您需要对用户进行资金操作时,需要先给用户创建对应的币种地址,您才能正常的继续操作下去
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
uid String 平台UID,为账户创建钱包地址 uc2e99bf6-e8ac-11e8-9403-8cec4b9c58b5
coin_type 详情 String 币种类型 ETH

返回参数说明:

参数 类型 描述 示例值
address String 钱包地址 0xcbe5EA4338B7bc8a773bc3aF4d6a6B1d35673cA4

业务错误码:

retcode 错误描述
10000 该币种不存在
10001 UID不存在
12028 地址创建失败
GetTransactionsByUid
(查询交易记录)
当需要查看某个子账户的交易记录时,您可以通过该接口查询
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
uid String 平台ID uc2e99bf6-e8ac-11e8-9403-8cec4b9c58b5
page String 页数(当前页数) 1
row String 行数(1页N条记录) 10

返回参数说明:

参数 类型 描述 示例值
total int 总记录(该用户总交易记录) 70
tid String 平台交易号 154406850901225300004814
time String 交易时间(时间戳) 1545824080
type int 交易类型,0链上交易 ,1内部账户交易 uc2e99bf6-e8ac-11e8-9403-8cec4b9c58b5
from String 交易发起地址 2MzJWTQNMVLbBLzE4t7muELKXaCAy5fzXXm
to String 交易接收地址(平台内部转账此项为空) 2N33gXeymoFdB45mgyvnZeyT8B1SVug9osg
coin_type 详情 String 币种类型 BTC
amount String 交易金额 0.00010500
cost_fee String 交易产生的手续费 0.00001
hash String 交易哈希,平台内转账此项为空 f17056859565fc627724915b2ccad8f369ed43d91987dc1242e0654ebeba46c4
status 详情 String 交易状态 SUCCESS
remark String 交易备注
GetBalanceByUid
(查询子账户余额)
当您需要查看某个子账户的余额时,可通过该账户了解。由于某些企业是自己记账,故交易接口SendTo不在进行余额的负数判断,所以在您需要使用我们平台进行记账时,您那边需要先判断该用户的余额情况,防止出现余额的负数出现
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
uid String 平台ID uc2e99bf6-e8ac-11e8-9403-8cec4b9c58b5

返回参数说明:

参数 类型 描述 示例值
coin_type 详情 String 币种类型 ETH
balance String 余额 0.0544000000
SendTo
(企业账户转账-支持uid和地址)
当您需要进行区块链币的转出或者子账户的余额变动时,您可通过该接口进行操作(注:当您使用ETH系列地址进行转账时,目标地址我们会自动进行大小写转换,您可以使用 AddressCheck 接口来处理您的地址后再调用我们的接口),在进行上链操作后,会通过回调对您在后台设置对回调地址进行通知,当你需要同时对多个子账户进行平台内转账(不上链)时,推荐使用 SendMany 接口
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
uid String 平台ID uc2e99bf6-e8ac-11e8-9403-8cec4b9c58b5
to String 目标地址(钱包地址是上链交易,UID为内部转账) 0x74a16616556a68Ec9A592e71c5C4e6402DdE7b5e
amount String 金额 0.01
coin_type 详情 String 币种类型 BTC
remark String 备注 Transfers will only be shown within the platform.
velocity int 是否增加矿工费实现快速提现,0为不支付,1为支付 0

返回参数说明:

参数 类型 描述 示例值
tid String 交易号 154607308218979919322171414
status 详情 String 发起交易状态 PENDING

业务错误码:

retcode 错误描述
10005 不存在的账户,请确认收款地址是否正常
10006 收款地址类型不正确!
10007 转出地址不合法,与UID不匹配
10008 提款失败
10009 用户权限不足
10011 单次转出达到标准,请等待审批
10012 单日转出达到标准,请等待审批
10013 交易双方不再同一企业下,无法进行交易
10199 您无法往自己的地址转账
AddressCheck
(ETH系列的地址大小写转换)
当您使用ETH或者ERC20代币进行转账时,可以先使用该接口将地址转换成正确的大小写地址
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
address String 原始地址 0x74a16616556a68ec9a592e71c5c4e6402dde7b5e
coin_type 详情 String 币种类型 ETH

返回参数说明:

参数 类型 描述 示例值
address String 真实地址 0x74a16616556a68Ec9A592e71c5C4e6402DdE7b5e

业务错误码:

retcode 错误描述
12025 输入的地址不正确,检查是否时ETH系列地址
12026 地址转换失败
12027 暂不支持该币种转换
GetFeeByCoin
(查询矿工费)
通过该接口,您可以获取到您即将操作的币种进行转出操作时锁需要的手续费,其中ERC20代币转出是需要ETH做为手续费的
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
coin_type 详情 String 币种类型 ETH
address String 发起人地址(钱包地址) 0x74a16616556a68Ec9A592e71c5C4e6402DdE7b5e
velocity int 是否增加矿工费实现快速提现,0为不支付,1为支付 0

返回参数说明:

参数 类型 描述 示例值
cost_fee String 手续费 0.00007840
SendMany
(多地址转账)
企业多地址转账接口-同时给多个地址转帐
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
uid String 平台ID uc2e99bf6-e8ac-11e8-9403-8cec4b9c58b5
from String 发起人地址(钱包地址) 0x74a16616556a68Ec9A592e71c5C4e6402DdE7b5e
to_list Array 目标对象(包含to_address和amount) [{'to_address': 'uaf7b02d0-0440-11e9-8265-8cec4b9c58b5', 'amount': '1.6'}, {'to_address': '0x7d17bBDC8A33cDE78188169762DC0d08Cd61B8ad', 'amount': '0.2'}]
coin_type 详情 String 币种类型 BTC
remark String 备注 pay zhangsan
velocity int 是否增加矿工费实现快速提现,0为不支付,1为支付 0

返回参数说明:

参数 类型 描述 示例值
address String 目标地址 0x74a16616556a68Ec9A592e71c5C4e6402DdE7b5e
amount String 金额 0.01
error_code String 单笔交易错误码 10001

业务错误码:

retcode 错误描述
10006 收款地址类型不正确!
10007 转出地址不合法,与UID不匹配
10005 不存在的账户,请确认收款地址是否正常
10008 提款失败
10009 用户权限不足
10011 单次转出达到标准,请等待审批
10012 单日转出达到标准,请等待审批
10013 交易双方不再同一企业下,无法进行交易
10098 连接数据库失败!
10101 对象格式有误,请检查
10199 您无法往自己的地址转账
GetUidByName
(查询子账户UID)
为方便企业查找子账户UID,我们提供了一个通过子账户名查找子账户UID的接口,或者您也可以登录后台进入子账户管理中去查看,假如您查找的用户名同时对应多个UID,我们将会把UID以,拼接的方式返回
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
name String 子账户名称 zhangsan

返回参数说明:

参数 类型 描述 示例值
uid String 平台UID u5af55e76-08f6-11e9-816e-8cec4b9c58b5

业务错误码:

retcode 错误描述
10002 找不到该用户
ManualUnlocking
(锁仓手动解锁功能)
当您使用锁仓功能时,可以通过此接口对子账户进行手动部分解锁
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
uid String 子账户UID u5af55e76-08f6-11e9-816e-8cec4b9c58b5
coin_type 详情 String 币种类型 BTC
amount String 金额 0.01
remark String 备注 pay zhangsan
time String 是否指定手动解锁的时间,0则立即生效 2019-06-01

返回参数说明:

参数 类型 描述 示例值
code String
msg String 错误原因

业务错误码:

retcode 错误描述
10000 货币不存在
10200 余额不足
12011 金额不能少于0
UserLockups
(手动锁仓功能)
您可以通过此接口将子账户对余额进行加锁,加锁后对余额将不能用于子账户对转出
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
uid String 子账户UID u5af55e76-08f6-11e9-816e-8cec4b9c58b5
coin_type 详情 String 币种类型 BTC
amount String 金额 0.01

返回参数说明:

参数 类型 描述 示例值
code String
msg String 错误原因

业务错误码:

retcode 错误描述
10000 货币不存在
10200 余额不足
12011 金额不能少于0
GetLockByUid
(查询子账户锁仓余额)
您可以通过此接口了解子账户的当前锁仓余额
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
uid String 子账户UID u5af55e76-08f6-11e9-816e-8cec4b9c58b5

返回参数说明:

参数 类型 描述 示例值
coin_type 详情 String 币种类型 ETH
balance String 余额 0.0544000000
GetLockrecordByUid
(查询锁仓记录)
您可以通过此接口了解子账户的锁仓记录 (仅供参考)
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
uid String 平台ID uc2e99bf6-e8ac-11e8-9403-8cec4b9c58b5
page String 页数(当前页数) 1
row String 行数(1页N条记录) 10

返回参数说明:

参数 类型 描述 示例值
total int 总记录(该用户总锁仓记录) 70
uid String 平台ID uc2e99bf6-e8ac-11e8-9403-8cec4b9c58b5
time String 交易时间(时间戳) 1545824080
coin_type 详情 String 币种类型 BTC
amount String 交易金额 0.00010500
remark String 交易备注
GetUserApproval
(查询用户名下的审批名单)
如果企业在后台设置需要审批时,您可以通过该接口查看您设置的审批人名下需要审批的交易
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
uid String 审核人的平台ID uc2e99bf6-e8ac-11e8-9403-8cec4b9c58b5
page String 页数(当前页数) 1
row String 行数(1页N条记录) 10
starttime String 筛选的起始时间 2019-07-21 00:00:00
endtime String 筛选的终止时间 2019-07-22 00:00:00
screen_uid String 筛选的被审核人的uid,支持模糊搜索 uc2e99...

返回参数说明:

参数 类型 描述 示例值
total int 总记录(该用户总交易记录) 70
approval_id Int 审批记录id,用于调用审批操作接口时使用 11
tid String 平台交易号 154406850901225300004814
time String 申请的时间 2019-07-22 11:54:52
uid String 申请人的平台ID uc2e99bf6-e8ac-11e8-9403-8cec4b9c58b5
name String 申请人的用户名 张三
to String 交易接收地址(平台内部转账此项为空) 2N33gXeymoFdB45mgyvnZeyT8B1SVug9osg
coin_type 详情 String 币种类型 BTC
amount String 交易金额 0.00010500
remark String 交易备注
OperationApproval
(对需要审批对用户进行审批操作)
如果您需要进行审批,您可以通过 GetUserApproval 接口获得审批的ID,然后使用此接口对其进行操作。您需要检查您在后台设置的审批人是否只有一人,若非一人,则需要使用下一个审批人的UID重复进行操作,直至当前审批人时最后一人为止,全部通过后才允许上链转出
代码演示(点击查看右侧,Request内容可编辑)

请求参数说明:

参数 类型 是否必填 描述 示例值
uid String 平台ID uc2e99bf6-e8ac-11e8-9403-8cec4b9c58b5
approval_id String 审批记录的ID 1
operation String 操作,1为通过,2为拒绝,若您传入的是其它参数,则默认为拒绝 1

返回参数说明:

参数 类型 描述 示例值
code String 1
msg String 错误原因

业务错误码:

retcode 错误描述
12020 没有找到该记录
12021 该审批条件已失效,已自动拒绝
12022 无审批权限
12023 转出失败,请稍后重试
10200 余额不足
10201 手续费不足

Callback

Transaction Notify

Description:

在您创建SecretKeyAccessToken的同时,同时也需要设置对应的回调接口,以方便我们在完成支付或钱包余额变更等情况下,向应用提供消息通知服务,并请您确保您设置的消息通知回调接口高可用,在服务器通过HTTP请求您的回调接口失败的情况下,服务器会间隔一定时间后重新发起请求,直到返回成功。(在交易0次确认,1次确认和交易成功的时候会回调该接口,如回调成功,请在返回数据中,返回json格式的{"ret":"1"}用于通知我们,回调地址在管理中心设置),notify_code为1时返回如下

Request parameter description:

参数 类型 描述 示例值
tid String 平台交易id 15432878047853809300009955
tx_hash String 交易hash 0xd70de4a2a56191d8901956191d89
uid String 发起交易方的uid uc783f11e-f1f0-11e8-a2cc-1e8121e8
from String 源地址 0xaE91688dC28C7ffe7BB67ffe7B7ff
to String 目标地址 0xF07adb2E9c4a62f49bACc4a62f4sa3
coin_type String 币种类型 ETH
recv_or_send Int 资金状态,0支出/1收入 0
is_inside String 是否为内部账户间转账, 0 非内部转账/ 1 内部转账 1
amount String 交易金额 1.111
confirmed String 交易确认次数(-1时为失败-审批被拒绝) 1
status String 交易状态:PENDING, SUCCESS, FAILURE PENDING

Auditing Notify

Description:

审批回调结果(notify_code为2时)返回参数如下:

Request parameter description:

参数 类型 描述 示例值
tid String 平台交易id 15432878047853809300009955
status String 0 拒绝 / 1 通过 1

Parameter Type

User Authority

变量名:authority_code : 该参数用于描述创建用户的角色id

Value Type Description
0 int 无权限(只能收款)
1 int 普通用户(可转出、提现)

Currency Support

变量名:coin_type : 该参数用于描述币种类型,支持如下币种

Value Type Description
BTC String BTC
ETH String ETH
BCHABC String BCHABC
BCHSV String BCHSV
LTC String LTC
USDT_OMNI String USDT_OMNI

Currency flow

变量名:funds_status : 该参数用于描述资金状态

Value Type Description
0 int 代表支出(转出)
1 int 代表收入

Transaction status

变量名:status : 该参数用于描述交易的状态

Value Type Description
SUCCESS String 交易成功
PENDING String 正在进行
FAILURE String 交易失败
WAITING String 交易等待审核

Increase in service charges

变量名:fast : 该参数用于描述是否增加矿工费实现快速提现

Value Type Description
0 int 不支付多余的矿工费
1 int 支付多余的矿工费

Example

Create Sub User And BTC Wallet

创建一个子账户,并且为该子账户创建BTC钱包地址


import requests
import json

apiurl = 'https://api.coinsu.com/_api/v1/'

headers = {
	'Secret-Key': 'dAzX1CcfBnPpQd6riw649hasPgk0OvCMvayxA6rfUwAfdBiBIRX/7g==',
	'Access-Token': 'ZszDJ9cAEUjdU0fGIrw9zeZf9LQOhTZz3oqalXv546sfjdzsaXqqOKf1X6YQaYMlyPOMCNdQjwyZVmhS0jQrAvrbg=='
}

data = {
	'authority_code': 0,
	'email': 'tom@gmail.com',
	'name': 'tom'
}
data = json.dumps( data )

rep = requests.post(apiurl + 'account/CreateAccount',data = data, headers = headers)

ret = json.loads(rep.content)
uid = ret['uid']

data = {
	'uid': uid,
	'coin_type': 'BTC'
}
data = json.dumps( data )

rep = requests.post(apiurl + 'account/CreateWallet',data = data, headers = headers)

print(json.loads(rep.content)['address'])