混合支付平台 – SL21 API 接口说明¶
1. 注册¶
简要描述:
- 注册新用户
请求URL: - http://localhost:3001/register
请求方式: - POST
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| password | 是 | string | 密码 |
请求示例
{
"password": "123"
}
返回示例
{
"success": true,
"statusCode": 200,
"message": "注册成功",
"data": {
"address": "0x96951816290931278e0b7a2f5a0dcea6a9c86e77",
"keyStore": "{\"version\":3,\"id\":\"4a6414df-ad68-4a8e-a1aa-c3036a09b77e\",\"address\":\"96951816290931278e0b7a2f5a0dcea6a9c86e77\",\"crypto\":{\"ciphertext\":\"06262cc1e3ceb7d0b3e9f0f64087be3eae33696b94075cad6b4183197a8c73e6\",\"cipherparams\":{\"iv\":\"ba261919f4ddcf1af6e1a0a9238cc240\"},\"cipher\":\"aes-128-ctr\",\"kdf\":\"scrypt\",\"kdfparams\":{\"dklen\":32,\"salt\":\"dc77114da655599012fb33e34a72dec5588167e9baf9405f1cd05e0282d4cd78\",\"n\":8192,\"r\":8,\"p\":1},\"mac\":\"3f19bae52ca0bd52f281d723178c470e0e297c521cfe4f87befebe67883b3a4e\"}}"
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| statusCode | number | 状态码 |
| success | boolean | true / false |
| message | string | 异常说明 |
| data | object | 查询信息 |
| data参数名 | 类型 | 说明 |
|---|---|---|
| address | string | 用户地址 |
| keyStore | string | 用户keyStore |
2. keyStore登录¶
简要描述:
- 使用keyStore登录
请求URL: - http://localhost:3001/keyStoreLogin
请求方式: - POST
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| keyStore | 是 | string | 用户keyStore |
| password | 是 | string | 密码 |
请求示例
{
"keyStore": "{\"address\":\"8ef73a369711f309c8183d3633b141b78cb68835\",\"crypto\":{\"cipher\":\"aes-128-ctr\",\"ciphertext\":\"5fb42f62c65b79e95165501ca722e3343e3d88accde096856527b1dee7e70f6b\",\"cipherparams\":{\"iv\":\"3a5b059b940031e1edad49892b182165\"},\"kdf\":\"scrypt\",\"kdfparams\":{\"dklen\":32,\"n\":262144,\"p\":1,\"r\":8,\"salt\":\"568fcfb8fa8e2c0a7f731c067c79c3ad0a8be4f1a6c74774531d81c88d27406d\"},\"mac\":\"fa81f4d7773b2266a907abce563dc05d515afa211cd2cf3b0b3a7cc1de9ff039\"},\"id\":\"f44560c1-8063-4d9e-b371-6845ee168f79\",\"version\":3}",
"password": "123456"
}
返回示例
{
"success": true,
"statusCode": 200,
"message": "登录成功",
"data": {
"address": "0x8ef73a369711f309c8183d3633b141b78cb68835",
"keyStore": "{\"address\":\"8ef73a369711f309c8183d3633b141b78cb68835\",\"crypto\":{\"cipher\":\"aes-128-ctr\",\"ciphertext\":\"5fb42f62c65b79e95165501ca722e3343e3d88accde096856527b1dee7e70f6b\",\"cipherparams\":{\"iv\":\"3a5b059b940031e1edad49892b182165\"},\"kdf\":\"scrypt\",\"kdfparams\":{\"dklen\":32,\"n\":262144,\"p\":1,\"r\":8,\"salt\":\"568fcfb8fa8e2c0a7f731c067c79c3ad0a8be4f1a6c74774531d81c88d27406d\"},\"mac\":\"fa81f4d7773b2266a907abce563dc05d515afa211cd2cf3b0b3a7cc1de9ff039\"},\"id\":\"f44560c1-8063-4d9e-b371-6845ee168f79\",\"version\":3}"
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| statusCode | number | 状态码 |
| success | boolean | true / false |
| message | string | 异常说明 |
| data | object | 查询信息 |
| data参数名 | 类型 | 说明 |
|---|---|---|
| address | string | 用户地址 |
| keyStore | string | 用户keyStore |
3. 用户登录¶
简要描述:
- 用户登录
请求URL: - http://localhost:3001/login
请求方式: - POST
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| address | 是 | string | 用户地址 |
| password | 是 | string | 密码 |
请求示例
{
"address": "0x8ef73a369711f309c8183d3633b141b78cb68835",
"password": "123456"
}
返回示例
{
"success": true,
"statusCode": 200,
"message": "登录成功",
"data": {
"address": "0x8ef73a369711f309c8183d3633b141b78cb68835",
"keyStore": "{\"address\":\"8ef73a369711f309c8183d3633b141b78cb68835\",\"crypto\":{\"cipher\":\"aes-128-ctr\",\"ciphertext\":\"5fb42f62c65b79e95165501ca722e3343e3d88accde096856527b1dee7e70f6b\",\"cipherparams\":{\"iv\":\"3a5b059b940031e1edad49892b182165\"},\"kdf\":\"scrypt\",\"kdfparams\":{\"dklen\":32,\"n\":262144,\"p\":1,\"r\":8,\"salt\":\"568fcfb8fa8e2c0a7f731c067c79c3ad0a8be4f1a6c74774531d81c88d27406d\"},\"mac\":\"fa81f4d7773b2266a907abce563dc05d515afa211cd2cf3b0b3a7cc1de9ff039\"},\"id\":\"f44560c1-8063-4d9e-b371-6845ee168f79\",\"version\":3}"
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| statusCode | number | 状态码 |
| success | boolean | true / false |
| message | string | 异常说明 |
| data | object | 数据信息 |
| data参数名 | 类型 | 说明 |
|---|---|---|
| address | string | 用户地址 |
| keyStore | string | 用户keyStore |
6. 流转¶
简要描述:
- 流转
请求URL: - http://localhost:3001/changeOwner
请求方式: - POST
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| type | 是 | number | 类型(详见配置说明) |
| key | 是 | number | 资产唯一编号 |
| fromUserAddr | 是 | string | 流转用户地址 |
| password | 是 | number | 流转用户密码 |
| toUserAddr | 是 | number | 接收用户地址 |
请求示例
{
"type": "1",
"key": 2,
"fromUserAddr": "0x8ef73a369711f309c8183d3633b141b78cb68835",
"toUserAddr": "0x292103a4b1d06d42bab4fee2cf3721485ac12b0b",
"password": "123456"
}
返回示例
{
"success": true,
"statusCode": 200,
"message": "success",
"data":{
"time": 1591338217080
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| statusCode | number | 状态码 |
| success | boolean | true / false |
| message | string | 异常说明 |
| data | object | 数据信息 |
| data参数名 | 类型 | 说明 |
|---|---|---|
| time | number | 交易时间戳 |
7. 批量流转¶
简要描述:
- 批量流转
请求URL: - http://localhost:3001/batchChangeOwner
请求方式: - POST
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| type | 是 | number | 类型(详见配置说明) |
| keys | 是 | Array | 资产唯一编号 例:[1,2,3,4,5] |
| fromUserAddr | 是 | string | 流转用户地址 |
| password | 是 | number | 流转用户密码 |
| toUserAddr | 是 | number | 接收用户地址 |
请求示例
{
"type": "10",
"keys": [1, 2, 3],
"fromUserAddr": "0x8ef73a369711f309c8183d3633b141b78cb68835",
"toUserAddr": "0x292103a4b1d06d42bab4fee2cf3721485ac12b0b",
"password": "123456"
}
返回示例
{
"success": true,
"statusCode": 200,
"message": "完成,失败的key查看data列表",
"data": {
"time": 1591338217080,
"failList": []
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| statusCode | number | 状态码 |
| success | boolean | true / false |
| message | string | 异常说明 |
| data | Object | 数据时间戳 |
| data参数名 | 类型 | 说明 |
|---|---|---|
| time | number | 交易时间戳 |
| failList | Array | 流转失败的资产列表 |
8. 流转(本地加签)¶
简要描述:
- 流转,可在本地把加签好的数据直接传入后台,无需传入密码,安全性高。
请求URL: - http://localhost:3001/changeOwnerSign
请求方式: - POST
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| type | 是 | number | 类型(详见配置说明) |
| key | 是 | number | 资产唯一编号 |
| fromUserAddr | 是 | string | 流转用户地址 |
| signInfo | 是 | string | 加签后的数据(通过本地特有加签方法加签) |
| toUserAddr | 是 | number | 接收用户地址 |
请求示例
{
"type": "1",
"key": 2,
"fromUserAddr": "0x8ef73a369711f309c8183d3633b141b78cb68835",
"toUserAddr": "0x292103a4b1d06d42bab4fee2cf3721485ac12b0b",
"signInfo": "0x09dd6fabc8071f88f9d6b64e03a1bb51f64ffe5ebb165203e6fde3e8b2c0d53f630b8120fe81d8bcffcdf1a67fc3daa87ea264f91ec9fe44b67a5521b0b2e5cc1b"
}
返回示例
{
"success": true,
"statusCode": 200,
"message": "success",
"data":{
"time": 1591338217080
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| statusCode | number | 状态码 |
| success | boolean | true / false |
| message | string | 异常说明 |
| data | object | 数据信息 |
| data参数名 | 类型 | 说明 |
|---|---|---|
| time | number | 交易时间戳 |
9. 批量流转(本地加签)¶
简要描述:
- 批量流转,可在本地把加签好的数据直接传入后台,无需传入密码,安全性高。
请求URL: - http://localhost:3001/batchChangeOwnerSign
请求方式: - POST
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| type | 是 | number | 类型(详见配置说明) |
| keys | 是 | Array | 资产唯一编号 例:[1,2,3,4,5] |
| fromUserAddr | 是 | string | 流转用户地址 |
| signInfo | 是 | string | 加签后的数据(通过本地特有加签方法加签) |
| toUserAddr | 是 | number | 接收用户地址 |
请求示例
{
"type": "10",
"keys": [1, 2, 3],
"fromUserAddr": "0x8ef73a369711f309c8183d3633b141b78cb68835",
"toUserAddr": "0x292103a4b1d06d42bab4fee2cf3721485ac12b0b",
"signInfo": "0x09dd6fabc8071f88f9d6b64e03a1bb51f64ffe5ebb165203e6fde3e8b2c0d53f630b8120fe81d8bcffcdf1a67fc3daa87ea264f91ec9fe44b67a5521b0b2e5cc1b"
}
返回示例
{
"success": true,
"statusCode": 200,
"message": "完成,失败的key查看data列表",
"data": {
"time": 1591338217080,
"failList": []
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| statusCode | number | 状态码 |
| success | boolean | true / false |
| message | string | 异常说明 |
| data | Object | 数据时间戳 |
| data参数名 | 类型 | 说明 |
|---|---|---|
| time | number | 交易时间戳 |
| failList | Array | 流转失败的资产列表 |
10. 校验¶
简要描述:
- 校验是否上链
请求URL: - http://localhost:3001/traceCheck
请求方式: - POST
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| type | 是 | number | 类型(详见配置说明) |
| key | 是 | number | 资产唯一编号 |
| proof | 是 | string | proof证明路径 |
请求示例
{
"type": "100",
"key": 1,
"proof": "[{\"left\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"},{\"right\":\"4dc7876b8edc94a5791ad1cc18498f65560e12b9df308b689e28d3f23f026769\"},{\"right\":\"ac37ca9ea554e6f4239d00359c342705f254df9611bb95eb25641166b11a8308\"},{\"right\":\"0df9f436c177e9aa90d47697c5bb2038553f48a4f846757ad0a6d762ef9a34a0\"},{\"right\":\"545922ac6f713881e04165ea0a8190d0a79965a1d8cef26851964241bc33267b\"},{\"right\":\"333459ecc0b673a964cf445d1e6f8099bba14940d414e16626e89902cb2a16bf\"},{\"right\":\"49f64c54fb86e54b4281b32fa539e0166f23b9c1d52928e12a46914f7e20a308\"},{\"right\":\"be9c408db55ab55c819ec9e271274e387ddcfaa292361eef18273788f5c36fee\"},{\"right\":\"4ab69295400dc01b4441ccee5cc65234f90ee91bb441a5b54c339b1fa2e169b2\"},{\"right\":\"592ddd50c7da7dcfe0394a6ef2a2c431a97929b870776693fe07bfa4534c27ef\"},{\"right\":\"3c796a92bb8083757f8369b23092e9a6215c562ed29ed217cce1f185625bc8d2\"}]"
}
返回示例
{
"success": true,
"statusCode": 200,
"message": "校验结果:成功"
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| statusCode | number | 状态码 |
| success | boolean | true / false |
| message | string | 异常说明 |
11. 根据用户获取资产¶
简要描述:
- 根据用户获取资产
请求URL: - http://localhost:3001/getUserToken
请求方式: - POST
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| userAddr | 是 | string | 用户地址 |
| type | 否 | number | 类型(详见配置说明) |
| page | 是 | number | 页数 |
| rows | 是 | number | 条数 |
请求示例
{
"userAddr": "0x292103a4b1d06d42bab4fee2cf3721485ac12b0b",
"type": "1",
"page": 1,
"rows": 10
}
返回示例
{
"success": true,
"statusCode": 200,
"message": "查询成功",
"data": {
"recordsTotal": 1,
"pageTotal": 1,
"page": 1,
"records": [{
"_id": "5ec787508e8e4e37a03f92d2",
"__v": 0,
"type": "1",
"key": 1,
"value": "1590138663854&1&0x292103a4b1d06d42bab4fee2cf3721485ac12b0b&0x8f0f4482081b8d266ccc050ecd0110efd4d988eea2d126c5e422cfdc517cac422dfa02f785ef0437918de27decaf36949a92109d13c7f4d6cc3233ba38ee52651b",
"keyHash": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b",
"valueHash": "a797b12d6b2d7d5e89aaa4cdc7a3e0627a4b59910af8a415f7bc717c49c514ad",
"valueProof": "[{\"left\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"},{\"right\":\"c325b46b19835bab28a4866698d307f211e25f68390c90ead4e85f63326e512f\"},{\"right\":\"bb67192158f620d1c2595a703855845a980c116825aec38f60a602e0642a89a9\"},{\"right\":\"d77a193767bf5aff053b6e84d71611ca6a5f2c6bb6fb19ae585c72f5bb3c2953\"},{\"right\":\"4d5afc27c79cba9095e6f28d976c1a892f6ad002068e3041fcf2d443fe3251d5\"},{\"right\":\"7ac0a114b6fc2e30294004e51bcf3df84bcbcc00b4aacd19b51629d4015bfcde\"},{\"right\":\"2838ee98b56d3b136918adec26d731403ac3814e2d3f4de57abc8f00018eb6f5\"},{\"right\":\"57e6e9992454fe0b61520bec968f71ee16da7236d8642b96c775af6ab7518d19\"},{\"right\":\"189577ecba4c767e7836e396de73a9743e067b50fcb8be3568e76437ecb048f7\"},{\"right\":\"186a5c6ed1a4a739c80764679a4aaefb7c11f0576e792d397c41a6e55064bc2e\"},{\"right\":\"194039a8700467582007bfb383d58dce8c732e6f9f9bab74de968200f6fb0c21\"}]",
"updateTime": 1590138672706,
"txHash": "0x1d69e08ef66368ca03e390de66ef383627dcde35316b295139861a22bd9ca569",
"rootHash": "0x4342a044f209d872f7a2a19b2f597afc5f1e94ab70bd46f7ead282e16308cafb",
"owner": "0x292103a4b1d06d42bab4fee2cf3721485ac12b0b",
"contractAddress": "0x29e5c10152dc6a5609aaafc974d16de6f0d0ff96",
"tempValue": "",
"status": "0"
}]
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| statusCode | number | 状态码 |
| success | boolean | true / false |
| message | string | 异常说明 |
| data | object | 查询信息 |
| data参数名 | 类型 | 说明 |
|---|---|---|
| recordsTotal | number | 总条数 |
| pageTotal | number | 总页数 |
| page | number | 当前页数 |
| records | array | 数据列表 |
| records参数名 | 类型 | 说明 |
|---|---|---|
| _id | string | id编码 |
| type | string | 类型(详见配置说明) |
| key | number | 资产唯一编号 |
| value | string | 资产流转记录 |
| keyHash | string | 资产唯一编号哈希值 |
| valueHash | string | 资产流转记录哈希值 |
| updateTime | number | 更新时间戳 |
| txHash | string | 交易哈希值 |
| valueProof | rootHash | merkelTree根哈希值 |
| owner | string | 当前拥有者 |
| contractAddress | string | 所在合约地址 |
| tempValue | string | 未确认的流转记录 |
| status | string | 是否确认,“0”:未确认,“1”:已确认 |
12. 根据资产唯一编号获取资产流转记录¶
简要描述:
- 根据资产唯一编号获取资产流转记录
请求URL: - http://localhost:3001/getTokenTransfe
请求方式: - POST
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| type | 是 | number | 类型(详见配置说明) |
| key | 是 | number | 资产唯一编号 |
请求示例
{
"type": "10",
"key": 1
}
返回示例
{
"success": true,
"statusCode": 200,
"message": "查询成功",
"data": {
"confirmedList": [{
"time": "1590139186911",
"user": "0x292103a4b1d06d42bab4fee2cf3721485ac12b0b"
}]
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| statusCode | number | 状态码 |
| success | boolean | true / false |
| message | string | 异常说明 |
| data | object | 查询信息 |
| data参数名 | 类型 | 说明 |
|---|---|---|
| confirmedList | array | 已确认的流转记录 |
| confirmingList | array | 未确认的流转记录 |
状态码
- 服务异常状态码
501:find db异常
502:update db异常
- 业务异常状态码
610:初始化MerkleTools失败
611:获取合约失败
612:makeTree数据初始化失败
614:初始化标签时,rpc调用addKVLeaf失败
617:入厂时候rpc调用modifyTraceValue异常
618:入厂时候rpc调用getTraceValue异常
619:该用户无权限操作此数据
621:入厂时候key不合法
622:签名验证失败
623:用户未登录
624:上链未确认
625:校验失败
626:调用合约出错
627:调用rpc出错
628:查询资产为空
629:资产唯一编号不合法
630:注册失败
631:密码错误
632:登录失败
633:keyStore登录解析keystore失败
634:登录失败,请用keyStore方式登录
635:设置缓存时候,验签失败
636:退出失败