5.4.3.5 密钥托管模式下调用链码接口
链下系统通过城市节点网关调用链码的交易处理函数时,需要按照接口说明在请求中加入相应的请求参数,调用节点网关后,节点网关会返回链码的执行结果。
接口地址: https://节点网关地址/api/fabric/v1/node/reqChainCode
该接口不等交易落块结果直接响应结果,可以调用“获取交易信息接口”根据交易ID查询落块结果;
注:用户参与服务成功后可以在服务详情页面查看并下载应用链下业务系统访问链上智能合约所需要的应用服务配置参数、节点网关地址和应用接入密钥对,如下图:
2. 通讯方式:POST
3. 签名算法:详见5.4.3.1应用接入签名算法
4. 请求参数
序号 | 字段名 | 字段 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | 信息头 | header | Map | 是 | |
2 | 信息体 | body | Map | 是 | |
3 | 签名值 | mac | String | 是 | |
header: | |||||
1 | 用户唯一标示 | userCode | String | 是 | |
2 | 应用唯一标识 | appCode | String | 是 | |
3 | 用户与应用ID | tId | String | 否 | |
body: | |||||
1 | 用户名 | userName | String | 否 | |
2 | 随机字符串 | nonce | String | 是 | 使用base64编码的 24位随机byte数据 |
3 | 链码Code | chainCode | String | 是 | |
4 | 方法名称 | funcName | String | 是 | |
5 | 请求参数 | args | String[] | 否 | |
6 | 临时数据 | transientData | Map<string,string> | 否 |
示例:
{
"header":{
"userCode":"USER0001202004161009309407413",
"appCode":"app0001202004161017141233920",
"tId":""
},
"mac":"MEQCICJpE1jfeJKtw/ZboVuKSLy2RmmSdkhrEVPGFJhm9IaIAiA/Qqs6RNz0ndSS4/AFSwBj7vC76Py1hXnqO5zMD9pNtA==",
"body":{
"userName":"",
"nonce":"lgH7Ozfv6npqg9D3pSbq9c6o+rAcpa5D","chainCode":"cc_app0001202004161017141233920_00",
"funcName":"set",
"args":["{\"baseKey\":\"test2020048\",\"baseValue\":\"this is string \"}"],
"transientData":{}
}
}
5. 响应参数
序号 | 字段名 | 字段 | 类型 | 必填 | 备注 |
---|---|---|---|---|---|
1 | 信息头 | header | Map | 是 | |
2 | 信息体 | body | Map | 是 | |
3 | 签名值 | mac | String | 是 | |
header: | |||||
1 | 响应标识 | code | int | 是 | 0:校验成功 -1:校验失败 |
2 | 响应信息 | msg | String | 否 | code=0时可为null |
body: | |||||
1 | 块信息 | blockInfo | blockInfo | 否 | code不为0时为空 |
2 | 链码响应结果 | ccRes | ccRes | 否 | code不为0时为空 |
blockInfo: | |||||
1 | 交易Id | txId | String | 是 | |
2 | 块哈希 | blockHash | String | 否 | 同步接口返回块哈希 |
3 | 状态值 | status | Int | 是 | [详见交易状态描述] |
ccRes: | |||||
1 | 链码响应状态 | ccCode | Int | 是 | 200:成功 500:失败 |
2 | 链码响应结果 | ccData | Str | 否 | 具体链码响应的结果 |
示例:
{
"header": {
"code": 0,
"msg": "处理成功"
},
"mac": "MEUCIQCBtfO1AfYkoJ2hIlp8CfKK1iuhVEAYkPY8YFRAdvPJlAIgDjSqYgwlORJRyF6KZPU/uC5Fx/DxXxu9VgKwU9+JhjU=",
"body": {
"blockInfo": {
"txId": "a144149150ee615a9d11c68485600f43dc2c3eb2a98d7b36de53a6b99e03c495",
"blockHash": "",
"status": 0
},
"ccRes": {
"ccCode": 200,
"ccData": "SUCCESS"
}
}
}