# 链上版权Api文档

# 操作指南

# 代理商

代理商申请

发送申请邮件到(m17302321997@163.com)公司邮箱,留下联系方式,会有专门工作人员联系您,与您沟通成为代理商事宜。成为代理后,通过账号密码可以登录代理商后台。

代理商秘钥

通过代理商后台-代理商-密钥,新增秘钥,此秘钥在后续接口生成作品中会用到。一个代理商可以创建多个秘钥。代理商后台秘钥生成如下图:

图片1

如果您想删除密钥或怀疑您的密钥已被泄露,您可以单击“删除”删除该密钥并生成新密钥。

图片2

# 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()); ,

# 相关下载

申请艺术存证Demo(Demo.jar) (opens new window)