i. 加密流程步骤说明

以下是加密操作的步骤:

  1. 准备 业务请求参数 。(所有字段定义见加密前请求参数部分)
  2. 序列化为 JSON 字符串。
  3. 使用 WaaS 提供的 RSA公钥 加密 JSON 数据。
  4. 对加密结果进行 Base64 编码。

ii. 加密代码实例

以下是实现加密的代码示例:

class EncryptionExample {
    public static void main(String[] args) {
        try {
            // ===================== 1. 准备业务参数 =====================
            Map<String, Object> requestParams = new HashMap<>();
            requestParams.put("tenantUserId", "tenant_001");
            requestParams.put("chainName", "ETH");
            requestParams.put("symbol", "USDT");

            // ===================== 2. JSON序列化 =====================
            // 使用 JSON 工具类进行序列化,具体实现可参考相关工具类中的示例代码。
            String jsonData = JsonUtils.toJson(requestParams);

            // ===================== 3. RSA公钥加密 =====================
            // 使用WaaS提供的公钥
            String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQ...";

            // 使用 RSA 工具类进行加密,具体实现可以参考相关工具类中的示例代码。
            byte[] encryptedData = RSAUtils.encryptByPublicKey(
                jsonData.getBytes(StandardCharsets.UTF_8),
                publicKey
            );

            // ===================== 4. Base64编码 =====================
            // 使用Base64工具类进行编码,具体实现可以参考相关工具类中的示例代码。
            String base64Data = Base64Util.encodeByte(encryptedData);

            // ===================== 5. 准备HTTP请求 =====================
            // 创建HTTP请求头
            HttpHeaders headers = new HttpHeaders();
            headers.add("X-API-KEY", "MERCHANT_123456"); // 商户身份凭证
            headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); // 表单格式

            // 封装请求体
            MultiValueMap<String, String> body = new LinkedMultiValueMap<>();
            body.add("data", base64Data); // 参数名必须为"data"

            // ===================== 6. 发送API请求 =====================
            // 创建并配置RestTemplate
            RestTemplate restTemplate = new RestTemplate();
            restTemplate.getMessageConverters().add(new FormHttpMessageConverter());

            // 发送请求并获取响应
            APIResult response = restTemplate.postForObject(
                "https://waas2-out-api.powersafe-rel.cc/api/v1/api/user/getUserAddress",
                new HttpEntity<>(body, headers),
                APIResult.class
            );

            // 处理响应,具体内容可参考响应示例。
            System.out.println("\nAPI响应结果:");
            System.out.println(response);

        } catch (Exception e) {
            System.err.println("\n处理过程中发生错误: " + e.getMessage());
            e.printStackTrace();
        }
    }
}