湖南文化大数据交易所Open API 【文悟链合作方专用】
  1. 交易中心调用
湖南文化大数据交易所Open API 【文悟链合作方专用】
  • 合作方调用
    • ★★★开发前必读
    • 用户注册绿色通道
      POST
    • 保管箱校验查询接口
      POST
    • 资产转入校验查询接口
      POST
    • 资产转入详情通知接口
      POST
  • 交易中心调用
    • ★★★开发前必读
    • 回链成功通知合作方
      POST
    • 跨平台身份信息查询
      POST
    • 跨平台身份信息验证
      POST
  1. 交易中心调用

★★★开发前必读

基本说明#

1.
签名算法类型SHA1withRSA(格式PKCS8、1024),需要交易中心和合作方平台互相提供公钥进行解密
2.
sign签名及验签的JSON排序规则:根据key值进行升序排序,例如Java的SortedMap。
{"chain_id":"wenchang-tianhe","class_id":"dasdsa","nft_id":"dasdsa","recipient":"dasdsa",
"recipient_phone":"17381842007","sender":"dasdsa","tx_hash":"dasdsa"}
3.
测试环境请求地址由合作方平台提供baseUrl,接口地址按文档约定来,例如{baseUrl}/notice/nfts {baseUrl}/auth/users
4.
exchange_no交易中心唯一标志,为固定值:hunan-bigdatatrade
5.
密文采用AES对称加密算法,默认的AES加密方式:AES/ECB/PKCS5Padding,Algorithm="AES", EncodingAESKey长度固定为32个随机字符由交易中心提供。

SHA1withRSA加密工具类#

import cn.hutool.core.util.CharsetUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.Sign;
import cn.hutool.crypto.asymmetric.SignAlgorithm;
import java.util.Base64;

public class SignUtils {

    public static  boolean verifySign(String resData, String signData, String publicKey) {
        Sign sign = SecureUtil.sign(SignAlgorithm.SHA1withRSA,null, publicKey);
        //注意Base64
        return  sign.verify(resData.getBytes(CharsetUtil.CHARSET_UTF_8), Base64.getDecoder().decode(signData));
    }

    public static String sign(String respData, String platformPrivateKey, String platformPublicKey) {
        Sign sign = SecureUtil.sign(SignAlgorithm.SHA1withRSA, platformPrivateKey, platformPublicKey);
        byte[] signed = sign.sign(respData.getBytes(CharsetUtil.CHARSET_UTF_8));
        //注意Base64
        return  Base64.getEncoder().encodeToString(signed);
    }

}

AES#

import cn.hutool.core.codec.Base64;
import cn.hutool.crypto.symmetric.AES;
import cn.hutool.core.util.RandomUtil;
import org.junit.Assert;
import org.junit.Test;

public class AesTest {
    @Test
    public void aes() {
        String key=RandomUtil.randomString(32);
        System.out.println(key);
        //默认的AES加密方式:AES/ECB/PKCS5Padding
        AES aes=new AES(key.getBytes(StandardCharsets.UTF_8));
        Assert.assertEquals(key,new String(aes.getSecretKey().getEncoded(),StandardCharsets.UTF_8));
        //注意Base64
        String encrypt = Base64.encode(aes.encrypt("18692709323".getBytes(StandardCharsets.UTF_8)));
        System.out.println("加密:"+encrypt);
        //注意Base64
        System.out.println("解密:"+new String(aes.decrypt(Base64.decode(encrypt)),StandardCharsets.UTF_8));
    }
}
修改于 2023-01-17 03:11:27
上一页
资产转入详情通知接口
下一页
回链成功通知合作方
Built with