钱包地址格式约定

  • TRON 钱包地址对字母的 大小写敏感
  • ETH 钱包地址使用 小写 字母。

API Request Header

属性名Required/Optional型态描述
Content-TypeRequiredStringmultipart/form-data
X-API-KEYRequiredString由平台方分配的 API-KEY

API 格式约定

所有请求参数必须以 form-data 的形式构建,使用 RSA 公钥 加密,并以 Base64 编码 的形式提交。加密后的数据应作为 data 参数提交。

同时,响应的 data 参数也是加密的,开发者需要解密后才能获取明文内容。

请求格式

Content-Disposition: form-data; name="data"

U2FsdGVkX1+... (加密后的数据)

加密过程

  • 使用平台提供的 RSA 公钥 对请求参数进行加密。
  • 加密后的数据需进行 Base64 编码,并作为 data 参数提交。

解密过程

  • 平台接收到加密的 data 参数后,会使用对应的私钥进行解密。
  • 返回的响应 data 参数同样是加密后的,开发者需使用公钥解密以获得明文。

Java 加密代码示例

以下是使用 RSA 公钥 对数据加密的代码示例:

import javax.crypto.Cipher;
import java.io.ByteArrayOutputStream;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;

public class RSAEncrypt {
    public static String encryptByPublicKeyForOut(String data, String publicKey) throws Exception {
        // 将公钥字符串解码
        X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(Base64.getDecoder().decode(publicKey));
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey publicK = keyFactory.generatePublic(x509EncodedKeySpec);

        // 初始化加密器
        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
        cipher.init(Cipher.ENCRYPT_MODE, publicK);

        byte[] dataByte = data.getBytes();
        int inputLen = dataByte.length;
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        int offSet = 0;
        byte[] cache;
        int i = 0;

        // 分段加密
        while (inputLen - offSet > 0) {
            if (inputLen - offSet > 117) {
                cache = cipher.doFinal(dataByte, offSet, 117);
            } else {
                cache = cipher.doFinal(dataByte, offSet, inputLen - offSet);
            }
            out.write(cache, 0, cache.length);
            i++;
            offSet = i * 117;
        }

        byte[] encryptedData = out.toByteArray();
        out.close();

        // 对加密结果进行 Base64 编码
        return Base64.getEncoder().encodeToString(encryptedData);
    }
}

Java 解密代码示例

以下是使用 RSA 公钥 对响应数据解密的代码示例:

import javax.crypto.Cipher;
import java.io.ByteArrayOutputStream;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;

public class RSADecrypt {
    public static String decryptByPublicKeyForOut(String data, String publicKey) throws Exception {
        // 将公钥字符串解码
        X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(Base64.getDecoder().decode(publicKey));
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey publicK = keyFactory.generatePublic(x509EncodedKeySpec);

        // 初始化解密器
        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
        cipher.init(Cipher.DECRYPT_MODE, publicK);

        byte[] encryptedData = Base64.getDecoder().decode(data);
        int inputLen = encryptedData.length;
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        int offSet = 0;
        byte[] cache;
        int i = 0;

        // 分段解密
        while (inputLen - offSet > 0) {
            if (inputLen - offSet > 128) {
                cache = cipher.doFinal(encryptedData, offSet, 128);
            } else {
                cache = cipher.doFinal(encryptedData, offSet, inputLen - offSet);
            }
            out.write(cache, 0, cache.length);
            i++;
            offSet = i * 128;
        }

        byte[] decryptedData = out.toByteArray();
        out.close();

        // 返回解密后的明文
        return new String(decryptedData);
    }
}

注意事项

  • 公钥/私钥管理: 平台会为每个商户分配 RSA 公钥,请妥善保存,避免泄露。私钥由平台严格保管,商户无需关心。

  • Base64 编码: 加密和解密的结果需进行 Base64 编解码,确保数据在传输过程中不出问题。


支持的代币

代币链类型支持状态

USDT

TRC20✅ 已支持

USDT

ERC20✅ 已支持

USDT

BEP20⏳ 开发中

PHT

TRC20✅ 已支持

PHT

ERC20✅ 已支持

USDC

ERC20✅ 已支持

USDC

BEP20⏳ 开发中

ETH

ERC20⏳ 开发中

ETH

BEP20⏳ 开发中

风险评分参考

  • 🟢 低风险: 0 ~ 30,无风险或低风险。

  • 🟡 中等风险: 31 ~ 64,可能与中高风险地址有交易。

  • 🟠 高风险: 65 ~ 84,建议隔离。

  • 🔴 严重风险: 85 ~ 100,建议立即隔离。