# 链上版权Api文档
# 操作指南
# 代理商
代理商申请
发送申请邮件到(m17302321997@163.com)公司邮箱,留下联系方式,会有专门工作人员联系您,与您沟通成为代理商事宜。成为代理后,通过账号密码可以登录代理商后台。
代理商秘钥
通过代理商后台-代理商-密钥,新增秘钥,此秘钥在后续接口生成作品中会用到。一个代理商可以创建多个秘钥。代理商后台秘钥生成如下图:
如果您想删除密钥或怀疑您的密钥已被泄露,您可以单击“删除”删除该密钥并生成新密钥。
# API接口
# 申请存证
基础信息
url:http://139.186.77.248:8000/baas-platform/nft/thirdNftCreate
method: POST
Content-Type:multipart/form-data
请求参数
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
createTime | 2022-04-19 14:31:24 | 是 | String | |
content | {"content":"我们可以在预执行脚本或后执行脚本里,通过 request 对象来获得请求的参数数据。该对象结构如下:","contractName":"夏天快来了","createnft":{"content":"我们可以在预执行脚本或后执行脚本里,通过 request 对象来获得请求的参数数据。该对象结构如下:","contractName":"夏天快来了","count":1,"unit":"夏天快来了"},"imgType":"0","isPublic":true,"type":"7" } | 是 | String | NFT实体类转为json格式(NFT实体详解及生成重要参数生成方法见下方“接口参数详细介绍”) |
tradeName | 夏天快来了 | 是 | String | 存证名称 |
e | {"appId":"sidevnkwiv9884453","appKey":"GXefb7V0ok","createTime":"2022-04-19 14:31:24","enterpriseEnName":"夏天快来了","enterpriseEnShortName":"夏天快来了","enterpriseName":"夏天快来了","secretKey":"f%X6Q7jc8RFIhlN*ZMGH7rVKb343SZ3v"} | 是 | String | Enterprise实体转换为json格式,Enterprise实体主要包含appKey、appId、secretKey等参数(Enterprise实体详解及生成重要参数生成方法见下方“接口参数详细介绍”) |
orderNo | tokMsgba56bb42afa6f9b346f0774636ed882871797232 | 是 | String | "tokMsg" + EncryptUtil.encryptSHA1(TradeJson.toString()); //使用sha-1计算摘要EncryptUtil.encryptSHA1生成重要参数生成方法见下方“接口参数详细介绍”) |
file | [文件路径] | 是 | [文件类型] | tradeType类型不同,file提交内容不同。为7(艺术存证)是艺术图片主图、1(照片存证)是照片存证主图1张、2(视频存证)视频封面图1张、3(文件存证)存证文件、4(网页存证)网页页面展示图片1张、5(录音存证)录音文件、6(录屏存证)录屏图片1张 |
signatureFile | [文件路径] | 是 | [文件类型] | 电子签名 |
annex | [文件路径] | 是 | [文件类型] | 为附件也根据tradeType类型不同,annex提交内容不同。7(艺术存证)是创作过程图片(最多9张)、1(照片存证)是照片存证所有图片(最多6张)、2(视频存证)视频文件、3(文件存证)存证文件、4(网页存证)网页存证不需要上传annex参数、5(录音存证)录音存证不需要上传annex参数、6(录屏存证)录屏视频 |
secretKey | 是 | String | 秘钥获取路径:代理商后台-代理商-密钥 | |
tradeType | 7 | 是 | String | 存证类型。1(拍照存证)、2(视频存证)、3(文件存证)、4(网站存证)、5(录音存证)、6(录屏存证)、7(艺术存证) |
响应示例
{
"code": "200",
"msg": "发送成功",
"content": null
} -->
接口参数详细介绍
NFT 实体详解:
contractName:存证名称
unit: 存证名称
content: 存证秒速
imageType: 图片信息直接填写0
type: 存证类型1(拍照存证)、2(视频存证)、3(文件存证)、4(网站存证)、5(录音存证)、6(录屏存证)、7(艺术存证)
isPublic: 是否公开,1e公开,0不公开
origina:存证原创信息
createnft:CreateNft实体
实体实例
public class NFT {
private String contractName ;
private String unit;
private String origina;
private String type;
private String content;
private CreateNft createnft;
private String imgType;
private boolean isPublic;
}
CreateNft 实体详解:
contractName:存证名称
unit: 存证名称
content:作品介绍
count:固定填1
实体实例
public class NFT {
private String contractName ;
private String unit;
private String content;
private Integer count;
}
Enterprise实体详解:
enterpriseName: 存证名称
enterpriseEnName: 存证名称
enterpriseEnShortName: 存证名称
createTime:创建时间
appId:生成appId,具体生成方式见下方“appId生成方法”
secretKey:生成秘钥,具体生成方式见下方“secretKey生成方法”
appKey:生成摘要字符串,具体生成方式见下方“appKey生成方法”
实体实例
public class NFT {
private String enterpriseName ;
private String enterpriseEnName ;
private String enterpriseEnShortName ;
private String createTime ;
private String appId ;
private String secretKey ;
private String appKey ;
}
appId生成方法:
public static String genAppId() {
String str = "abcdefghijklmnopqrstuvwxyz";
Random random=new Random();
StringBuffer sb=new StringBuffer();
for(int i=0;i<10;i++){
int number=random.nextInt(25);
sb.append(str.charAt(number));
}
String time = new Date().getTime() + "";
sb.append(time.substring(6));
return sb.toString();
}
secretKey生成方法:
public static String genSecretKey() {
String str="abcdefghijklmnopqrstuvwxyz&*@#$%0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
StringBuffer sb=new StringBuffer();
for(int i=0;i<32;i++){
int number=random.nextInt(78);
sb.append(str.charAt(number));
}
return sb.toString();
}
appKey生成方法:
public static String genAppKey() {
String str="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
StringBuffer sb=new StringBuffer();
for(int i=0;i<10;i++){
int number=random.nextInt(72);
sb.append(str.charAt(number));
}
return sb.toString();
}
TradeJson实体详解:
content:将NFT实体转为json格式为参数
createTime: 创建时间
orderNo:通过“tokMsg”拼接TradeJson.toString()的SHA1计算方法encryptSHA1(); "tokMsg" + encryptSHA1(TradeJson.toString());
tradeType:数据类型固定填"7"
tradeName:存证名称
e: Enterprise实体
toString()方法,用于生成字符串用于sha-1计算摘要
实体实例
public class TradeJson {
private String content;
private String createTime;
private String orderNo;
private String tradeType;
private String tradeName;
private Enterprise e;
public String toString() {
return "TradeJson [ content=" + content + ", createTime=" + createTime + ", tradeType=" + tradeType + ", tradeName=" + tradeName + "]";
}
}
sha-1计算摘要方法:
public static String encryptSHA1(String content) {
try {
if (TextUtils.isEmpty(content)) {
System.out.println("加密明文不能为空");
}
MessageDigest md = MessageDigest.getInstance("SHA-1");
byte[] result = md.digest(content.getBytes("UTF-8"));
return ConvertUtil.byteToHexString(result);
} catch (Exception e) {
}
return null;
}
orderNo参数介绍:
过“tokMsg”拼接TradeJson.toString()的SHA1计算方法encryptSHA1()
代码如下:
"tokMsg" + encryptSHA1(TradeJson.toString());
,