创建链上账户
进行权证发行或者发放权证给其他用户时,发行方和其他用户均需要有一个链上身份即链上账户,通过该接口可以创建一个链上身份,创建链上身份前,需要业务自己做好用户的实名认证处理,创建链上身份后需要业务自己做好现实用户和链上用户的关联。
接口方法
antchain.caasplatform.extend.rights.create
请求参数
名称  | 是否必选  | 类型  | 取值约束  | 示例值  | 描述  | 
service_id  | 是  | STRING  | -  | cme2021034016405521c119  | 合约实例id  | 
account_name  | 是  | STRING  | -  | testAccount  | 账号名称  | 
返回参数
名称  | 类型  | 示例值  | 描述  | 
req_msg_id  | STRING  | b20167e21a8d4cc2b5f1022d24f43815  | 请求唯一ID,用于链路跟踪和问题排查  | 
result_code  | STRING  | OK  | 结果码,一般OK表示调用成功  | 
result_msg  | STRING  | OK  | 请求返回的消息,如果失败则为失败的相关描述  | 
address  | STRING  | 01f661a065ebc437fa99ec1f867bd4d2965109f4fcacc2ae136fd0d35738099e52b1448bac137c7792753585352f3f4c5fe6c7484c1e71ecfbd9b0886ef83e13  | 链上账户地址  | 
接口示例
// This file is auto-generated, don't edit it. Thanks.
package com.antgroup.antchain.openapi.sample;
 
import com.aliyun.tea.*;
import com.antgroup.antchain.openapi.caasplatform.*;
import com.antgroup.antchain.openapi.caasplatform.models.*;
 
public class Client {
 
    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.antgroup.antchain.openapi.caasplatform.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config();
        // 您的AccessKey ID
        config.accessKeyId = accessKeyId;
        // 您的AccessKey Secret
        config.accessKeySecret = accessKeySecret;
        return new com.antgroup.antchain.openapi.caasplatform.Client(config);
    }
 
    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        //强烈建议不要把合约服务的AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下合约服务的安全。
        //本示例通过从环境变量中读取合约服务的AccessKey,来实现API访问的身份验证。运行代码示例前,请配置环境变量CONTRACT_SERVICE_ACCESS_KEY_ID和CONTRACT_SERVICE_ACCESS_SECRET。
        com.antgroup.antchain.openapi.caasplatform.Client client = Client.createClient(System.getenv("CONTRACT_SERVICE_ACCESS_KEY_ID"),
        System.getenv("CONTRACT_SERVICE_ACCESS_SECRET"));
        CreateExtendRightsRequest createExtendRightsRequest = new CreateExtendRightsRequest()
                .setServiceId("cme2021034016405521c119")
                .setAccountName("testAccount");
        client.createExtendRights(createExtendRightsRequest);
    }
}响应示例
{
  "address": "01f661a065ebc437fa99ec1f867bd4d2965109f4fcacc2ae136fd0d35738099e52b1448bac137c7792753585352f3f4c5fe6c7484c1e71ecfbd9b0886ef83e13",
  "resultCode": "OK",
  "reqMsgId": "7571290506d849e58d6fe9877eab7c99",
  "resultMsg": "OK"
}结果码
果码  | 说明  | 解决方案  | 
OK  | 成功结果码  | 
创建资源文件
权证铸造时需要有相应的资源文件,资源文件本身是JSON串,用于描述使用的资源信息,示例如下:
{
  "name": "测试权证",
  "description": "这个只是测试使用的权证描述",
  "attributes": [
    "{\"author\":\"testUser\",\"tag\":\"这个是扩展补充数据\"}"
  ],
  "fileId": "https://test.al.com/lxsrpdpj3cdcea44_4.23.jpeg"
}这里面,重点包括资源文件的名称、资源文件的描述、资源文件图片信息(fileId),以及属性信息,属性信息包括作者和标签为tag的扩展信息。
其中资源文件图片信息是一个图片资源的URL地址,可以是自己的一个可供访问的URL资源地址,也可以通过OpenAPI来上传资源图片,由合约服务来托管相关图片,同时分配一个可供访问的资源图片URL地址。
如果传入的是一个非直接可访问的地址,为自己内部系统管理的一个文件ID,则在后续查询资源文件时进行转换。
接口方法
antchain.caasplatform.extend.rights.upload
请求参数
名称  | 是否必选  | 类型  | 取值约束  | 示例值  | 描述  | 
name  | 是  | STRING  | -  | 测试权证  | 资源名称  | 
description  | 否  | STRING  | -  | 这个只是测试使用的权证描述  | 资源描述  | 
file_id  | 是  | STRING  | -  | 略  | 资源文件id,如果使用合约服务进行文件托管,可以不设置文件ID,通过SDK提供的方式来做文件上传。如果文件自己管理,可以存放具体的可访问的文件URL(建议)或者文件ID,如果是文件ID,最后结果输出需要自己进行文件可访问地址转换  | 
data  | 否  | STRING  | -  | 这个是扩展补充数据  | 扩展字段  | 
author  | 是  | STRING  | -  | testUser  | 作者或发行方,该部分主要用于资源描述文件使用,可用作页面展示  | 
返回参数
名称  | 类型  | 示例值  | 描述  | 
req_msg_id  | STRING  | b20167e21a8d4cc2b5f1022d24f43815  | 请求唯一ID,用于链路跟踪和问题排查  | 
result_code  | STRING  | OK  | 结果码,一般OK表示调用成功  | 
result_msg  | STRING  | OK  | 请求返回的消息,如果失败则为失败的相关描述  | 
rights_id  | LONG  | 略  | 数据资产id,后续资产铸造等都会用到  | 
接口示例
// This file is auto-generated, don't edit it. Thanks.
package com.antgroup.antchain.openapi.sample;
 
import com.aliyun.tea.*;
import com.antgroup.antchain.openapi.caasplatform.*;
import com.antgroup.antchain.openapi.caasplatform.models.*;
 
public class Client {
 
    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.antgroup.antchain.openapi.caasplatform.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config();
        // 您的AccessKey ID
        config.accessKeyId = accessKeyId;
        // 您的AccessKey Secret
        config.accessKeySecret = accessKeySecret;
        return new com.antgroup.antchain.openapi.caasplatform.Client(config);
    }
 
    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        // 强烈建议不要把合约服务的AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下合约服务的安全。
        // 本示例通过从环境变量中读取合约服务的AccessKey,来实现API访问的身份验证。运行代码示例前,请配置环境变量CONTRACT_SERVICE_ACCESS_KEY_ID和CONTRACT_SERVICE_ACCESS_SECRET。
        com.antgroup.antchain.openapi.caasplatform.Client client = Client.createClient(System.getenv("CONTRACT_SERVICE_ACCESS_KEY_ID"),
        System.getenv("CONTRACT_SERVICE_ACCESS_SECRET")); 
        UploadExtendRightsRequest uploadExtendRightsRequest = new UploadExtendRightsRequest()
                .setData("这个是扩展补充数据")
                .setAuthor("testUser")
                .setName("测试权证")
                .setDescription("这个只是测试使用的权证描述");
        //以下通过托管文件方式来进行资源文件创建,上传资源文件
        File file = new File("资产文件相关位置");
        uploadExtendRightsRequest.setFileObjectName(file.getName());
        uploadExtendRightsRequest.setFileObject(new FileInputStream(file));
        client.uploadExtendRights(uploadExtendRightsRequest);
    }
}如果不使用文件托管,资源文件自己进行管理,则需要对上述示例中的以下内容进行调整。
        //以下通过托管文件方式来进行资源文件创建,上传资源文件
        File file = new File("资产文件相关位置");
        uploadExtendRightsRequest.setFileObjectName(file.getName());
        uploadExtendRightsRequest.setFileObject(new FileInputStream(file));可以调整为提供直接可供访问的URL文件地址的方式。
//以下提供直接可供访问的URL文件地址 uploadExtendRightsRequest.setFileId("https://test.al.com/lxsrpdpj3cdcea44_4.23.jpeg");也可以调整为自己管理文件的方式
//以下提供自己管理文件的相关唯一ID,后续查询资源文件返回的数据中, //对FileID再进行转换,转为可供访问的文件URL uploadExtendRightsRequest.setFileId("asfainnerasda1313asda1r");
响应示例
{
  "rightsId": 171922085292216,
  "resultCode": "OK",
  "reqMsgId": "70f7a36d3b3140c0b13a69de09747b4c",
  "resultMsg": "OK"
}结果码
果码  | 说明  | 解决方案  | 
OK  | 成功结果码  | 
权证铸造
权证铸造即权证发行,数字权证合约可以发行一批权证,这一批权证将共用一个tokenId。
接口方法
antchain.caasplatform.general.rights.register
请求参数
名称  | 是否必选  | 类型  | 取值约束  | 示例值  | 描述  | 
service_id  | 是  | STRING  | -  | cme2021034016405521c119  | 合约实例id  | 
account  | 是  | STRING  | -  | testAccount  | 创建链上账户时指定的accountName  | 
id  | 是  | LONG  | -  | 171922085292216  | 通过调用托管资源接口返回的资源id:rights_id  | 
amount  | 是  | LONG  | -  | 100  | 要铸造的数据资产数量  | 
data  | 否  | STRING  | -  | 略  | 扩展参数  | 
返回参数
名称  | 类型  | 示例值  | 描述  | 
req_msg_id  | STRING  | b20167e21a8d4cc2b5f1022d24f43815  | 请求唯一ID,用于链路跟踪和问题排查  | 
result_code  | STRING  | OK  | 结果码,一般OK表示调用成功  | 
result_msg  | STRING  | OK  | 请求返回的消息,如果失败则为失败的相关描述  | 
tx_hash  | STRING  | c73c751472a9f9fbceef29665101377ba7e170b649b83db33b4634d4484ac626  | 合约调用交易哈希  | 
block_number  | LONG  | 10000  | 合约调用交易块高  | 
code  | LONG  | 0  | 合约调用的错误码,0表示成功  | 
接口示例
// This file is auto-generated, don't edit it. Thanks.
package com.antgroup.antchain.openapi.sample;
 
import com.aliyun.tea.*;
import com.antgroup.antchain.openapi.caasplatform.*;
import com.antgroup.antchain.openapi.caasplatform.models.*;
 
public class Client {
 
    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.antgroup.antchain.openapi.caasplatform.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config();
        // 您的AccessKey ID
        config.accessKeyId = accessKeyId;
        // 您的AccessKey Secret
        config.accessKeySecret = accessKeySecret;
        return new com.antgroup.antchain.openapi.caasplatform.Client(config);
    }
 
    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        // 强烈建议不要把合约服务的AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下合约服务的安全。
        // 本示例通过从环境变量中读取合约服务的AccessKey,来实现API访问的身份验证。运行代码示例前,请配置环境变量CONTRACT_SERVICE_ACCESS_KEY_ID和CONTRACT_SERVICE_ACCESS_SECRET。
        com.antgroup.antchain.openapi.caasplatform.Client client = Client.createClient(System.getenv("CONTRACT_SERVICE_ACCESS_KEY_ID"),
        System.getenv("CONTRACT_SERVICE_ACCESS_SECRET"));
        RegisterGeneralRightsRequest registerGeneralRightsRequest = new RegisterGeneralRightsRequest()
                .setServiceId("cme2021034016405521c119")
                .setAccount("testAccount")
                .setAmount(100L)
                .setId(171922085292216L);
        client.registerGeneralRights(registerGeneralRightsRequest);
    }
}响应示例
{
  "code": 0,
  "blockNumber": 20929865,
  "resultCode": "OK",
  "txHash": "4309817fd1fb76e9b47b07619dc48cd14d0c8118553bb39f24ec629e935eb465",
  "reqMsgId": "4715d546c5804bb9b16cf451357ed833",
  "resultMsg": "OK"
}结果码
果码  | 说明  | 解决方案  | 
OK  | 成功结果码  | 
权证转移
用户购买或者发行方赠送时,将权证从发行方转移到购买方。
接口方法
antchain.caasplatform.general.rights.pay
请求参数
名称  | 是否必选  | 类型  | 取值约束  | 示例值  | 描述  | 
service_id  | 是  | STRING  | -  | cme2021034016405521c119  | 合约实例id  | 
from  | 是  | STRING  | -  | testAccount  | 持有资产的链上账号名称  | 
to  | 是  | STRING  | -  | toUserAccount  | 接收资产的链上账号名称  | 
id  | 是  | LONG  | -  | 171922085292216  | 数据资产ID  | 
amount  | 是  | LONG  | -  | 10  | 要转增的数据资产数量  | 
data  | 否  | STRING  | -  | 略  | 扩展数据  | 
返回参数
名称  | 类型  | 示例值  | 描述  | 
req_msg_id  | STRING  | b20167e21a8d4cc2b5f1022d24f43815  | 请求唯一ID,用于链路跟踪和问题排查  | 
result_code  | STRING  | OK  | 结果码,一般OK表示调用成功  | 
result_msg  | STRING  | OK  | 请求返回的消息,如果失败则为失败的相关描述  | 
tx_hash  | STRING  | c73c751472a9f9fbceef29665101377ba7e170b649b83db33b4634d4484ac626  | 合约调用交易哈希  | 
block_number  | LONG  | 10000  | 合约调用交易块高  | 
code  | LONG  | 0  | 合约调用的错误码,0表示成功  | 
接口示例
// This file is auto-generated, don't edit it. Thanks.
package com.antgroup.antchain.openapi.sample;
 
import com.aliyun.tea.*;
import com.antgroup.antchain.openapi.caasplatform.*;
import com.antgroup.antchain.openapi.caasplatform.models.*;
 
public class Client {
 
    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.antgroup.antchain.openapi.caasplatform.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config();
        // 您的AccessKey ID
        config.accessKeyId = accessKeyId;
        // 您的AccessKey Secret
        config.accessKeySecret = accessKeySecret;
        return new com.antgroup.antchain.openapi.caasplatform.Client(config);
    }
 
    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        // 强烈建议不要把合约服务的AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下合约服务的安全。
        // 本示例通过从环境变量中读取合约服务的AccessKey,来实现API访问的身份验证。运行代码示例前,请配置环境变量CONTRACT_SERVICE_ACCESS_KEY_ID和CONTRACT_SERVICE_ACCESS_SECRET。
        com.antgroup.antchain.openapi.caasplatform.Client client = Client.createClient(System.getenv("CONTRACT_SERVICE_ACCESS_KEY_ID"),
        System.getenv("CONTRACT_SERVICE_ACCESS_SECRET"));
        PayGeneralRightsRequest payGeneralRightsRequest = new PayGeneralRightsRequest()
                .setServiceId("cme2021034016405521c119")
                .setFrom("testAccount")
                .setTo("toUserAccount")
                .setId(171922085292216L)
                .setAmount(1L);
        client.payGeneralRights(payGeneralRightsRequest);
    }
}响应示例
{
  "code": 0,
  "blockNumber": 20930209,
  "resultCode": "OK",
  "txHash": "d3e5f5bc657ba4fec8301abf8fc9aa4f4d4789af02489d9bae0e367be52cd71a",
  "reqMsgId": "55ee78971a794e3bb82c56fed015808a",
  "resultMsg": "OK"
}结果码
果码  | 说明  | 解决方案  | 
OK  | 成功结果码  | 
资源文件查询
创建资源文件后即可调用该接口查询资源描述文件的内容。
接口方法
antchain.caasplatform.general.rights.get
请求参数
名称  | 是否必选  | 类型  | 取值约束  | 示例值  | 描述  | 
service_id  | 是  | STRING  | -  | cme2021034016405521c119  | 合约实例id  | 
token_id  | 是  | LONG  | -  | 171922085292216  | 数据资产id  | 
返回参数
名称  | 类型  | 示例值  | 描述  | 
req_msg_id  | STRING  | b20167e21a8d4cc2b5f1022d24f43815  | 请求唯一ID,用于链路跟踪和问题排查  | 
result_code  | STRING  | OK  | 结果码,一般OK表示调用成功  | 
result_msg  | STRING  | OK  | 请求返回的消息,如果失败则为失败的相关描述  | 
tx_hash  | STRING  | c73c751472a9f9fbceef29665101377ba7e170b649b83db33b4634d4484ac626  | 合约调用交易哈希  | 
block_number  | LONG  | 10000  | 合约调用交易块高  | 
code  | LONG  | 0  | 合约调用的错误码,0表示成功  | 
result  | STRING  | https://caas-backend-prod.antdigital.com/caas/contract/extend/getAssetUri/171922085292216  | 资产对应资源文件的描述文件,为JSON字符串  | 
针对result,请求后将获得资源描述文件,文件的详细格式与说明参考创建资源文件。
接口示例
// This file is auto-generated, don't edit it. Thanks.
package com.antgroup.antchain.openapi.sample;
 
import com.aliyun.tea.*;
import com.antgroup.antchain.openapi.caasplatform.*;
import com.antgroup.antchain.openapi.caasplatform.models.*;
 
public class Client {
 
    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.antgroup.antchain.openapi.caasplatform.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config();
        // 您的AccessKey ID
        config.accessKeyId = accessKeyId;
        // 您的AccessKey Secret
        config.accessKeySecret = accessKeySecret;
        return new com.antgroup.antchain.openapi.caasplatform.Client(config);
    }
 
    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        // 强烈建议不要把合约服务的AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下合约服务的安全。
        // 本示例通过从环境变量中读取合约服务的AccessKey,来实现API访问的身份验证。运行代码示例前,请配置环境变量CONTRACT_SERVICE_ACCESS_KEY_ID和CONTRACT_SERVICE_ACCESS_SECRET。
        com.antgroup.antchain.openapi.caasplatform.Client client = Client.createClient(System.getenv("CONTRACT_SERVICE_ACCESS_KEY_ID"),
        System.getenv("CONTRACT_SERVICE_ACCESS_SECRET"));
        GetGeneralRightsRequest getGeneralRightsRequest = new GetGeneralRightsRequest()
                .setTokenId(171922085292216L)
                .setServiceId("cme2021034016405521c119");
        client.getGeneralRights(getGeneralRightsRequest);
    }
}响应示例
{
  "result": "https://caas-backend-prod.antdigital.com/caas/contract/extend/getAssetUri/171922085292216",
  "code": 0,
  "blockNumber": 20929866,
  "resultCode": "OK",
  "txHash": "d8aa1ed871a6f1c3574f253b5cc67337e0f91cb300b2f5b3fde343858eb87832",
  "reqMsgId": "25af2ab547e547f487e91b4747b45d14",
  "resultMsg": "OK"
}结果码
果码  | 说明  | 解决方案  | 
OK  | 成功结果码  | 
账户资产余额查询
查询某个账户的某个资产的拥有数量。
接口方法
antchain.caasplatform.general.rightsbalance.get
请求参数
名称  | 是否必选  | 类型  | 取值约束  | 示例值  | 描述  | 
service_id  | 是  | STRING  | -  | cme2021034016405521c119  | 合约实例id  | 
account  | 是  | STRING  | -  | sltest24081303  | 账号的地址  | 
id  | 是  | LONG  | -  | 171922085292216  | 数据资产id  | 
返回参数
名称  | 类型  | 示例值  | 描述  | 
req_msg_id  | STRING  | b20167e21a8d4cc2b5f1022d24f43815  | 请求唯一ID,用于链路跟踪和问题排查  | 
result_code  | STRING  | OK  | 结果码,一般OK表示调用成功  | 
result_msg  | STRING  | OK  | 请求返回的消息,如果失败则为失败的相关描述  | 
tx_hash  | STRING  | c73c751472a9f9fbceef29665101377ba7e170b649b83db33b4634d4484ac626  | 合约调用交易哈希  | 
block_number  | LONG  | 10000  | 合约调用交易块高  | 
code  | LONG  | 0  | 合约调用的错误码,0表示成功  | 
result  | STRING  | 资产对应资源文件的描述文件,为JSON字符串  | 
针对result,请求后将获得资源描述文件,文件的详细格式与说明参考创建资源文件。
接口示例
// This file is auto-generated, don't edit it. Thanks.
package com.antgroup.antchain.openapi.sample;
 
import com.aliyun.tea.*;
import com.antgroup.antchain.openapi.caasplatform.*;
import com.antgroup.antchain.openapi.caasplatform.models.*;
 
public class Client {
 
    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.antgroup.antchain.openapi.caasplatform.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config();
        // 您的AccessKey ID
        config.accessKeyId = accessKeyId;
        // 您的AccessKey Secret
        config.accessKeySecret = accessKeySecret;
        return new com.antgroup.antchain.openapi.caasplatform.Client(config);
    }
 
    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.antgroup.antchain.openapi.caasplatform.Client client = Client.createClient("accessKeyId", "accessKeySecret");
        GetGeneralRightsbalanceRequest request = new GetGeneralRightsbalanceRequest();
        request.setServiceId("cme2021034016405521c119");
        request.setAccount("sltest24081303");
        request.setId(171922085292216L);
        GetGeneralRightsbalanceResponse response = caasClient.getGeneralRightsbalance(request);
    }
}响应示例
{
  "blockNumber": 120384752,
  "code": 0,
  "reqMsgId": "043b28078b354266b4d04ae372bf65de",
  "result": "21",
  "resultCode": "OK",
  "resultMsg": "OK",
  "txHash": "6466ed67793ba561e672a93863ce2f0dc548cf2acc12dfe8e2602f36604ee3a5"
}结果码
果码  | 说明  | 解决方案  | 
OK  | 成功结果码  |