From 2c09b3c972c22a55351ed6e27fd8d1e7459967d2 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期四, 28 八月 2025 17:46:34 +0800
Subject: [PATCH] 条码接口测试

---
 src/main/java/com/gs/xiaomi/service/BCS101ApiService.java |  451 +++++++------------------------------
 src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java   |  260 ---------------------
 2 files changed, 91 insertions(+), 620 deletions(-)

diff --git a/src/main/java/com/gs/xiaomi/service/BCS101ApiService.java b/src/main/java/com/gs/xiaomi/service/BCS101ApiService.java
index f1c36eb..e36db50 100644
--- a/src/main/java/com/gs/xiaomi/service/BCS101ApiService.java
+++ b/src/main/java/com/gs/xiaomi/service/BCS101ApiService.java
@@ -1,10 +1,12 @@
 package com.gs.xiaomi.service;
 
-import cn.hutool.crypto.SmUtil;
 import cn.hutool.crypto.digest.DigestUtil;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.gs.xiaomi.config.DataAcquisitionConfiguration;
 import com.gs.xiaomi.dto.BCS101Request;
+import com.gs.xiaomi.dto.X5Header;
+import com.gs.xiaomi.dto.X5Request;
+import com.gs.xiaomi.dto.X5Response;
 import com.gs.xiaomi.util.X5StringUtils;
 import okhttp3.*;
 import org.springframework.stereotype.Service;
@@ -28,387 +30,112 @@
     }
 
     /**
-     * 鑾峰彇BCS101鏁版嵁
+     * 鑾峰彇BCS101鏁版嵁 - 涓ユ牸鎸夌収C# X5鍗忚瀹炵幇
+     * <p>
+     * 鍩轰簬C# Helper102.POSTResponseData鏂规硶鐨凧ava瀹炵幇
+     * X5鍗忚娴佺▼:
+     * 1. 搴忓垪鍖朆ody涓篔SON瀛楃涓�
+     * 2. MD5绛惧悕: MD5(appid+bodyStr+appkey)
+     * 3. 鏋勫缓X5Request {header: {appid, sign}, body: bodyStr}
+     * 4. Base64缂栫爜鏁翠釜X5Request
+     * 5. URL缂栫爜
+     * 6. 鍙戦�� data=url缂栫爜(base64缂栫爜)鐨勬暟鎹�
      *
      * @param request BCS101璇锋眰鍙傛暟
      * @return API鍝嶅簲
      * @throws IOException 缃戠粶寮傚父
-     *                     <p>
-     *                     HTTP璁块棶闇�瑕丅aisc Auth(璇ヨ处鎴蜂负鏉$爜闆嗘垚涓撶敤璐︽埛锛屽瘑鐮佸垏鍕胯緭鍏ラ敊璇紒锛�:
-     *                     璐︽埛: RFCBCSXIAOBU
-     *                     瀵嗙爜: L5X8!pdL
-     *                     濡備綍浣跨敤锛�
-     *                     浣跨敤http 璋冪敤鏃堕渶瑕佹牴鎹处鎴峰瘑鐮佸鍔爃ttp headers鍙傛暟Authorization
-     *                     瀵瑰簲鐨勫�间负Basic bas64(璐︽埛:瀵嗙爜)
-     *                     <p>
-     *                     X5鍗忚涓娇鐢ㄧ殑锛堝浗瀵嗙畻娉曪級
-     *                     瀵瑰簲appid鍜屽搴攁ppkey璇蜂娇鐢ㄥ皬绫虫潯鐮佸钩鍙板垎閰嶇殑瀵瑰簲鐨勬祴璇曟満淇℃伅锛�
-     *                     APP ID锛歜cs_fty_177301
-     *                     APP Key锛欼JBVGMJXG4ZTAMLSMFXGI33NONQWY5DG
-     *                     <p>
-     *                     HTTP HEADER鍙傛暟:
-     *                     Authorization  Basic XXXXX
-     *                     鍚屾椂璇锋坊鍔燞TTP HEADER鍙傛暟锛�
-     *                     Content-Type  application/x-www-form-urlencoded
-     *                     body閫夋嫨raw锛�
-     *                     鏁版嵁鏍煎紡涓篸ata=url缂栫爜(base64缂栫爜)鐨勬暟鎹�
-     *                     </p>
      */
     public String getBCS101Data(BCS101Request request) throws IOException {
-        // 鐩存帴灏嗚姹傚璞¤浆鎹负JSON瀛楃涓�
-        String jsonData = objectMapper.writeValueAsString(request);
-
-        // Base64缂栫爜
-        String base64Data = X5StringUtils.encodeBase64(jsonData);
-
-        // URL缂栫爜
-        String urlEncodedData = URLEncoder.encode(base64Data, "UTF-8");
-
-        // 鏋勫缓form琛ㄥ崟鏁版嵁 - 鎸夌収娉ㄩ噴瑕佹眰锛歞ata=url缂栫爜(base64缂栫爜)鐨勬暟鎹�
-        String formData = "data=" + urlEncodedData;
-
-        // 鏋勫缓Basic Auth - 浣跨敤涓撶敤鏉$爜闆嗘垚璐︽埛
-        String credentials = DataAcquisitionConfiguration.BCS_USER_NAME + ":" + DataAcquisitionConfiguration.BCS_PWD;
-        String auth = X5StringUtils.encodeBase64(credentials);
-
-        // 鏋勫缓璇锋眰浣� - Content-Type: application/x-www-form-urlencoded
-        RequestBody body = RequestBody.create(formData, MediaType.parse("application/x-www-form-urlencoded"));
-
-        // 鏋勫缓璇锋眰 - 涓ユ牸鎸夌収娉ㄩ噴瑕佹眰
-        Request httpRequest = new Request.Builder()
-                .url(DataAcquisitionConfiguration.BCS_101_URL)
-                .method("POST", body)
-                .addHeader("Content-Type", "application/x-www-form-urlencoded")
-                .addHeader("Authorization", "Basic " + auth)
-                .build();
-
-        // 鎵ц璇锋眰
-        try (Response response = client.newCall(httpRequest).execute()) {
-            if (response.body() != null) {
-                String responseBody = response.body().string();
-                // 璁板綍鍝嶅簲淇℃伅鐢ㄤ簬璋冭瘯
-                System.out.println("BCS101 API鍝嶅簲鐘舵��: " + response.code());
-                System.out.println("BCS101 API鍝嶅簲鍐呭: " + responseBody);
-                return responseBody;
-            }
-            throw new IOException("Empty response body");
-        }
-    }
-
-    /**
-     * 鑾峰彇BCS101鏁版嵁 - 甯5鍗忚鏀寔
-     *
-     * @param request  BCS101璇锋眰鍙傛暟
-     * @param enableX5 鏄惁鍚敤X5鍗忚鍥藉瘑绛惧悕
-     * @return API鍝嶅簲
-     * @throws IOException 缃戠粶寮傚父
-     */
-    public String getBCS101DataWithX5(BCS101Request request, boolean enableX5) throws IOException {
-        // 鐩存帴灏嗚姹傚璞¤浆鎹负JSON瀛楃涓�
-        String jsonData = objectMapper.writeValueAsString(request);
-
-        // Base64缂栫爜
-        String base64Data = X5StringUtils.encodeBase64(jsonData);
-
-        // URL缂栫爜
-        String urlEncodedData = URLEncoder.encode(base64Data, "UTF-8");
-
-        // 鏋勫缓form琛ㄥ崟鏁版嵁
-        String formData = "data=" + urlEncodedData;
-
-        // 鏋勫缓Basic Auth
-        String credentials = DataAcquisitionConfiguration.BCS_USER_NAME + ":" + DataAcquisitionConfiguration.BCS_PWD;
-        String auth = X5StringUtils.encodeBase64(credentials);
-
-        // 鏋勫缓璇锋眰浣�
-        RequestBody body = RequestBody.create(formData, MediaType.parse("application/x-www-form-urlencoded"));
-
-        Request.Builder requestBuilder = new Request.Builder()
-                .url(DataAcquisitionConfiguration.BCS_101_URL)
-                .method("POST", body)
-                .addHeader("Content-Type", "application/x-www-form-urlencoded")
-                .addHeader("Authorization", "Basic " + auth);
-
-        // 濡傛灉鍚敤X5鍗忚锛屾坊鍔犲浗瀵嗙鍚�
-        if (enableX5) {
-            String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
-            String signature = generateX5Signature(
-                    DataAcquisitionConfiguration.BCS_APP_ID,
-                    DataAcquisitionConfiguration.BCS_APP_Key,
-                    timestamp,
-                    formData
-            );
-            requestBuilder.addHeader("X-App-Id", DataAcquisitionConfiguration.BCS_APP_ID)
-                    .addHeader("X-Timestamp", timestamp)
-                    .addHeader("X-Signature", signature);
-        }
-
-        Request httpRequest = requestBuilder.build();
-
-        // 鎵ц璇锋眰
-        try (Response response = client.newCall(httpRequest).execute()) {
-            if (response.body() != null) {
-                String responseBody = response.body().string();
-                System.out.println("BCS101 API鍝嶅簲鐘舵��: " + response.code());
-                System.out.println("BCS101 API鍝嶅簲鍐呭: " + responseBody);
-                return responseBody;
-            }
-            throw new IOException("Empty response body");
-        }
-    }
-
-    /**
-     * 鐢熸垚X5鍗忚绛惧悕 - 浣跨敤鍥藉瘑绠楁硶
-     *
-     * @param appId     APP ID
-     * @param appKey    APP Key
-     * @param timestamp 鏃堕棿鎴�
-     * @param data      璇锋眰鏁版嵁
-     * @return 绛惧悕瀛楃涓�
-     */
-    private String generateX5Signature(String appId, String appKey, String timestamp, String data) {
-        // X5鍗忚鍥藉瘑绠楁硶绛惧悕: 灏濊瘯浣跨敤SM3锛屽鏋滀笉鏀寔鍒欎娇鐢∕D5
-        String signString = appId + appKey + timestamp + data;
         try {
-            // 灏濊瘯浣跨敤鍥藉瘑SM3绠楁硶
-            return SmUtil.sm3(signString).toUpperCase();
-        } catch (Exception e) {
-            // 濡傛灉SM3涓嶅彲鐢紝fallback鍒癕D5
-            System.out.println("SM3绠楁硶涓嶅彲鐢紝浣跨敤MD5鏇夸唬: " + e.getMessage());
-            return DigestUtil.md5Hex(signString).toUpperCase();
-        }
-    }
+            System.out.println("=== BCS101 X5鍗忚瀹炵幇 (鍩轰簬C#浠g爜) ===");
 
-    /**
-     * 璋冭瘯鐗堟湰 - 璇︾粏杈撳嚭璇锋眰淇℃伅鏉ュ畾浣嶉棶棰�
-     */
-    public String getBCS101DataDebug(BCS101Request request) throws IOException {
-        System.out.println("=== BCS101 API 璋冭瘯淇℃伅 ===");
+            // 1. 搴忓垪鍖朆ody涓篔SON瀛楃涓�
+            String bodyStr = objectMapper.writeValueAsString(request);
+            System.out.println("1. Body JSON: " + bodyStr);
 
-        // 鐩存帴灏嗚姹傚璞¤浆鎹负JSON瀛楃涓�
-        String jsonData = objectMapper.writeValueAsString(request);
-        System.out.println("1. 鍘熷JSON鏁版嵁: " + jsonData);
+            // 2. MD5绛惧悕: sign = MD5(appid + bodyStr + appkey)
+            String appId = DataAcquisitionConfiguration.BCS_APP_ID;
+            String appKey = DataAcquisitionConfiguration.BCS_APP_Key;
+            String signString = appId + bodyStr + appKey;
+            String sign = DigestUtil.md5Hex(signString).toUpperCase();
+            System.out.println("2. 绛惧悕瀛楃涓�: " + signString);
+            System.out.println("3. MD5绛惧悕: " + sign);
 
-        // Base64缂栫爜
-        String base64Data = X5StringUtils.encodeBase64(jsonData);
-        System.out.println("2. Base64缂栫爜鍚�: " + base64Data);
+            // 3. 鏋勫缓X5Header
+            X5Header header = new X5Header(appId, sign);
 
-        // URL缂栫爜
-        String urlEncodedData = URLEncoder.encode(base64Data, "UTF-8");
-        System.out.println("3. URL缂栫爜鍚�: " + urlEncodedData);
+            // 4. 鏋勫缓X5Request
+            X5Request x5Request = new X5Request(header, bodyStr);
+            String x5RequestJson = objectMapper.writeValueAsString(x5Request);
+            System.out.println("4. X5Request JSON: " + x5RequestJson);
 
-        // 鏋勫缓form琛ㄥ崟鏁版嵁
-        String formData = "data=" + urlEncodedData;
-        System.out.println("4. Form鏁版嵁: " + formData);
+            // 5. Base64缂栫爜鏁翠釜X5Request
+            String base64Data = X5StringUtils.encodeBase64(x5RequestJson);
+            System.out.println("5. Base64缂栫爜: " + base64Data);
 
-        // 鏋勫缓Basic Auth
-        String credentials = DataAcquisitionConfiguration.BCS_USER_NAME + ":" + DataAcquisitionConfiguration.BCS_PWD;
-        String auth = X5StringUtils.encodeBase64(credentials);
-        System.out.println("5. Auth缂栫爜: Basic " + auth);
-        System.out.println("6. 璇锋眰URL: " + DataAcquisitionConfiguration.BCS_101_URL);
+            // 6. URL缂栫爜
+            String urlEncodedData = URLEncoder.encode(base64Data, "UTF-8");
+            System.out.println("6. URL缂栫爜: " + urlEncodedData);
 
-        // 灏濊瘯涓嶅悓鐨凜ontent-Type
-        RequestBody body = RequestBody.create(formData, MediaType.parse("application/x-www-form-urlencoded; charset=utf-8"));
+            // 7. 鏋勫缓form琛ㄥ崟鏁版嵁: data=url缂栫爜(base64缂栫爜)鐨勬暟鎹�
+            String formData = "data=" + urlEncodedData;
+            System.out.println("7. Form鏁版嵁: " + formData);
 
-        Request httpRequest = new Request.Builder()
-                .url(DataAcquisitionConfiguration.BCS_101_URL)
-                .method("POST", body)
-                .addHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")
-                .addHeader("Authorization", "Basic " + auth)
-                .addHeader("Accept", "application/xml, text/xml, */*")
-                .addHeader("User-Agent", "BCS101-Client/1.0")
-                .addHeader("Connection", "close")
-                .build();
+            // 8. Basic Auth璁よ瘉
+            String credentials = DataAcquisitionConfiguration.BCS_USER_NAME + ":" + DataAcquisitionConfiguration.BCS_PWD;
+            String auth = X5StringUtils.encodeBase64(credentials);
+            System.out.println("8. Basic Auth: Basic " + auth);
 
-        System.out.println("7. 鍙戦�佽姹�...");
+            // 9. 鏋勫缓HTTP璇锋眰 - 涓ユ牸鎸夌収C#浠g爜鐨勮姹傛牸寮�
+            RequestBody body = RequestBody.create(formData, MediaType.parse("application/x-www-form-urlencoded"));
+            Request httpRequest = new Request.Builder()
+                    .url(DataAcquisitionConfiguration.BCS_101_URL)
+                    .method("POST", body)
+                    .addHeader("Content-Type", "application/x-www-form-urlencoded")
+                    .addHeader("Authorization", "Basic " + auth)
+                    .addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
+                    .addHeader("Cache-Control", "no-cache")
+                    .addHeader("Pragma", "no-cache")
+                    .build();
 
-        // 鎵ц璇锋眰
-        try (Response response = client.newCall(httpRequest).execute()) {
-            System.out.println("8. 鍝嶅簲鐘舵�佺爜: " + response.code());
-            System.out.println("9. 鍝嶅簲澶�: " + response.headers().toString());
+            System.out.println("9. 鍙戦�乆5鍗忚璇锋眰鍒�: " + DataAcquisitionConfiguration.BCS_101_URL);
 
-            if (response.body() != null) {
-                String responseBody = response.body().string();
-                System.out.println("10. 鍝嶅簲鍐呭: " + responseBody);
-                return responseBody;
+            // 10. 鎵ц璇锋眰
+            try (Response response = client.newCall(httpRequest).execute()) {
+                System.out.println("10. HTTP鐘舵�佺爜: " + response.code());
+                System.out.println("11. 鍝嶅簲澶�: " + response.headers());
+
+                if (response.body() != null) {
+                    String responseBody = response.body().string();
+                    System.out.println("12. 鍘熷鍝嶅簲: " + responseBody);
+
+                    // 11. 灏濊瘯瑙f瀽涓篨5Response鏍煎紡
+                    try {
+                        X5Response x5Response = objectMapper.readValue(responseBody, X5Response.class);
+                        System.out.println("13. X5鍝嶅簲瑙f瀽鎴愬姛: " + x5Response);
+
+                        // 妫�鏌ュ搷搴旂姸鎬�
+                        if (x5Response.getHeader() != null && "200".equals(x5Response.getHeader().getCode())) {
+                            System.out.println("14. X5鍗忚璋冪敤鎴愬姛");
+                        } else {
+                            System.out.println("14. X5鍗忚璋冪敤澶辫触: " +
+                                    (x5Response.getHeader() != null ? x5Response.getHeader().getDesc() : "鏈煡閿欒"));
+                        }
+                    } catch (Exception e) {
+                        System.out.println("13. 闈瀀5鏍煎紡鍝嶅簲锛岀洿鎺ヨ繑鍥炲師濮嬪唴瀹�");
+                    }
+
+                    return responseBody;
+                }
+
+                throw new IOException("Empty response body");
             }
-            throw new IOException("Empty response body");
+
+        } catch (Exception ex) {
+            System.err.println("BCS101 X5鍗忚璋冪敤寮傚父: " + ex.getMessage());
+            ex.printStackTrace();
+            throw new IOException("BCS101 X5鍗忚璋冪敤澶辫触", ex);
         }
     }
 
-    /**
-     * 绠�鍖栫増鏈� - 灏濊瘯鐩存帴鍙戦�丣SON鏁版嵁
-     */
-    public String getBCS101DataSimple(BCS101Request request) throws IOException {
-        System.out.println("=== BCS101 API 绠�鍖栫増鏈祴璇� ===");
-
-        // 鐩存帴灏嗚姹傚璞¤浆鎹负JSON瀛楃涓�
-        String jsonData = objectMapper.writeValueAsString(request);
-        System.out.println("鍙戦�佺殑JSON鏁版嵁: " + jsonData);
-
-        // 鏋勫缓Basic Auth
-        String credentials = DataAcquisitionConfiguration.BCS_USER_NAME + ":" + DataAcquisitionConfiguration.BCS_PWD;
-        String auth = X5StringUtils.encodeBase64(credentials);
-
-        // 灏濊瘯鐩存帴鍙戦�丣SON鏁版嵁锛堜笉缁忚繃Base64鍜孶RL缂栫爜锛�
-        RequestBody body = RequestBody.create(jsonData, MediaType.parse("application/json; charset=utf-8"));
-
-        Request httpRequest = new Request.Builder()
-                .url(DataAcquisitionConfiguration.BCS_101_URL)
-                .method("POST", body)
-                .addHeader("Content-Type", "application/json; charset=utf-8")
-                .addHeader("Authorization", "Basic " + auth)
-                .build();
-
-        // 鎵ц璇锋眰
-        try (Response response = client.newCall(httpRequest).execute()) {
-            System.out.println("绠�鍖栫増鏈搷搴旂姸鎬�: " + response.code());
-            if (response.body() != null) {
-                String responseBody = response.body().string();
-                System.out.println("绠�鍖栫増鏈搷搴斿唴瀹�: " + responseBody);
-                return responseBody;
-            }
-            throw new IOException("Empty response body");
-        }
-    }
-
-    /**
-     * X5鍗忚鏍囧噯瀹炵幇鐗堟湰
-     * 鍩轰簬娉ㄩ噴瑕佹眰锛歑5鍗忚涓娇鐢ㄧ殑锛堝浗瀵嗙畻娉曪級
-     * APP ID锛歜cs_fty_177301, APP Key锛欼JBVGMJXG4ZTAMLSMFXGI33NONQWY5DG
-     */
-    public String getBCS101DataX5Standard(BCS101Request request) throws IOException {
-        System.out.println("=== BCS101 API X5鍗忚鏍囧噯瀹炵幇 ===");
-
-        // 1. 鏋勫缓JSON鏁版嵁
-        String jsonData = objectMapper.writeValueAsString(request);
-        System.out.println("1. 鍘熷JSON: " + jsonData);
-
-        // 2. Base64缂栫爜
-        String base64Data = X5StringUtils.encodeBase64(jsonData);
-        System.out.println("2. Base64缂栫爜: " + base64Data);
-
-        // 3. URL缂栫爜
-        String urlEncodedData = URLEncoder.encode(base64Data, "UTF-8");
-        System.out.println("3. URL缂栫爜: " + urlEncodedData);
-
-        // 4. 鏋勫缓form鏁版嵁
-        String formData = "data=" + urlEncodedData;
-        System.out.println("4. Form鏁版嵁: " + formData);
-
-        // 5. X5鍗忚鍙傛暟
-        String appId = DataAcquisitionConfiguration.BCS_APP_ID;
-        String appKey = DataAcquisitionConfiguration.BCS_APP_Key;
-        String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
-        String nonce = String.valueOf(System.currentTimeMillis()); // 浣跨敤鏃堕棿鎴充綔涓簄once
-
-        // 6. X5鍗忚绛惧悕 - 鏍囧噯绠楁硶: hash(appId + timestamp + nonce + appKey + data)
-        String signString = appId + timestamp + nonce + appKey + formData;
-        String signature;
-        try {
-            signature = SmUtil.sm3(signString);
-            System.out.println("5. 浣跨敤SM3绛惧悕");
-        } catch (Exception e) {
-            signature = DigestUtil.md5Hex(signString).toUpperCase();
-            System.out.println("5. 浣跨敤MD5绛惧悕 (SM3涓嶅彲鐢�)");
-        }
-
-        System.out.println("6. 绛惧悕瀛楃涓�: " + signString);
-        System.out.println("7. 绛惧悕鍊�: " + signature);
-
-        // 7. Basic Auth
-        String credentials = DataAcquisitionConfiguration.BCS_USER_NAME + ":" + DataAcquisitionConfiguration.BCS_PWD;
-        String auth = X5StringUtils.encodeBase64(credentials);
-
-        // 8. 鏋勫缓璇锋眰浣�
-        RequestBody body = RequestBody.create(formData, MediaType.parse("application/x-www-form-urlencoded"));
-
-        // 9. 鏋勫缓璇锋眰 - 娣诲姞X5鍗忚鏍囧噯澶撮儴
-        Request httpRequest = new Request.Builder()
-                .url(DataAcquisitionConfiguration.BCS_101_URL)
-                .method("POST", body)
-                .addHeader("Content-Type", "application/x-www-form-urlencoded")
-                .addHeader("Authorization", "Basic " + auth)
-                .addHeader("X-App-Id", appId)
-                .addHeader("X-Timestamp", timestamp)
-                .addHeader("X-Nonce", nonce)
-                .addHeader("X-Signature", signature)
-                .build();
-
-        System.out.println("8. 鍙戦�乆5鏍囧噯璇锋眰...");
-
-        // 10. 鎵ц璇锋眰
-        try (Response response = client.newCall(httpRequest).execute()) {
-            System.out.println("9. 鍝嶅簲鐘舵��: " + response.code());
-            System.out.println("10. 鍝嶅簲澶�: " + response.headers());
-
-            if (response.body() != null) {
-                String responseBody = response.body().string();
-                System.out.println("11. 鍝嶅簲鍐呭: " + responseBody);
-                return responseBody;
-            }
-            throw new IOException("Empty response body");
-        }
-    }
-
-    /**
-     * X5鍗忚鍙樹綋2 - 涓嶅悓鐨勭鍚嶇畻娉�
-     * 绛惧悕绠楁硶: hash(appKey + data + timestamp + appId)
-     */
-    public String getBCS101DataX5Variant(BCS101Request request) throws IOException {
-        System.out.println("=== BCS101 API X5鍗忚鍙樹綋2 ===");
-
-        // 1. 鏋勫缓鏁版嵁
-        String jsonData = objectMapper.writeValueAsString(request);
-        String base64Data = X5StringUtils.encodeBase64(jsonData);
-        String urlEncodedData = URLEncoder.encode(base64Data, "UTF-8");
-        String formData = "data=" + urlEncodedData;
-
-        // 2. X5鍗忚鍙傛暟
-        String appId = DataAcquisitionConfiguration.BCS_APP_ID;
-        String appKey = DataAcquisitionConfiguration.BCS_APP_Key;
-        String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
-
-        // 3. 鍙樹綋绛惧悕绠楁硶: appKey + data + timestamp + appId
-        String signString = appKey + formData + timestamp + appId;
-        String signature;
-        try {
-            signature = SmUtil.sm3(signString);
-            System.out.println("浣跨敤SM3绛惧悕鍙樹綋");
-        } catch (Exception e) {
-            signature = DigestUtil.md5Hex(signString).toUpperCase();
-            System.out.println("浣跨敤MD5绛惧悕鍙樹綋");
-        }
-
-        System.out.println("绛惧悕瀛楃涓�(鍙樹綋): " + signString);
-        System.out.println("绛惧悕鍊�(鍙樹綋): " + signature);
-
-        // 4. Basic Auth
-        String credentials = DataAcquisitionConfiguration.BCS_USER_NAME + ":" + DataAcquisitionConfiguration.BCS_PWD;
-        String auth = X5StringUtils.encodeBase64(credentials);
-
-        // 5. 鏋勫缓璇锋眰 - 浣跨敤甯歌鐨刋5澶撮儴鍚嶇О
-        RequestBody body = RequestBody.create(formData, MediaType.parse("application/x-www-form-urlencoded"));
-        Request httpRequest = new Request.Builder()
-                .url(DataAcquisitionConfiguration.BCS_101_URL)
-                .method("POST", body)
-                .addHeader("Content-Type", "application/x-www-form-urlencoded")
-                .addHeader("Authorization", "Basic " + auth)
-                .addHeader("appId", appId)
-                .addHeader("timestamp", timestamp)
-                .addHeader("signature", signature)
-                .build();
-
-        System.out.println("鍙戦�乆5鍙樹綋璇锋眰...");
-
-        try (Response response = client.newCall(httpRequest).execute()) {
-            System.out.println("鍙樹綋鍝嶅簲鐘舵��: " + response.code());
-            if (response.body() != null) {
-                String responseBody = response.body().string();
-                System.out.println("鍙樹綋鍝嶅簲鍐呭: " + responseBody);
-                return responseBody;
-            }
-            throw new IOException("Empty response body");
-        }
-    }
 }
diff --git a/src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java b/src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java
index 297f9b1..d30c6a8 100644
--- a/src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java
+++ b/src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java
@@ -1,22 +1,12 @@
 package com.gs.xiaomi;
 
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.crypto.SmUtil;
 import cn.hutool.crypto.digest.DigestUtil;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.gs.xiaomi.config.DataAcquisitionConfiguration;
 import com.gs.xiaomi.dto.BCS101Request;
 import com.gs.xiaomi.service.BCS101ApiService;
 import com.gs.xiaomi.service.XM104Service;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.Base64;
-import java.util.Date;
 
 @SpringBootTest
 class XiaomiApplicationTests {
@@ -52,254 +42,8 @@
         request.setPageNo(1);
         request.setPageSize(1000);
 
-        //Error: ERROR_IN_MODULECHAIN;ERROR_IN_MODULECHAIN, Sender Channel &#39;CC_MI_OEM_HTTP_OUT&#39; (ID: a58369adbaa03aafb76d2c02c2ae7cd7): Catching exception calling messaging system
-        System.out.println("=== 娴嬭瘯BCS101 API鏈嶅姟锛圔asic Auth鐗堟湰锛� ===");
-        try {
-            // 璋冪敤鏍囧噯BCS101 API鏈嶅姟锛堝彧浣跨敤Basic Auth锛�
-            String response = bcs101ApiService.getBCS101Data(request);
-            System.out.println("BCS101 API Response: " + response);
-        } catch (Exception e) {
-            System.out.println("BCS101 API璋冪敤寮傚父: " + e.getMessage());
-            e.printStackTrace();
-        }
+        String bcs101Data = bcs101ApiService.getBCS101Data(request);
+        System.out.println(bcs101Data);
 
-        //Error: ERROR_IN_MODULECHAIN;ERROR_IN_MODULECHAIN, Sender Channel &#39;CC_MI_OEM_HTTP_OUT&#39; (ID: a58369adbaa03aafb76d2c02c2ae7cd7): Catching exception calling messaging system
-        System.out.println("\n=== 娴嬭瘯BCS101 API鏈嶅姟锛堝甫X5鍗忚鐗堟湰锛� ===");
-        try {
-            // 璋冪敤甯5鍗忚鐨凚CS101 API鏈嶅姟
-            String responseWithX5 = bcs101ApiService.getBCS101DataWithX5(request, true);
-            System.out.println("BCS101 API Response (X5): " + responseWithX5);
-        } catch (Exception e) {
-            System.out.println("BCS101 API X5璋冪敤寮傚父: " + e.getMessage());
-            e.printStackTrace();
-        }
-
-        System.out.println("\n=== 娴嬭瘯BCS101 API鏈嶅姟锛堣皟璇曠増鏈級 ===");
-        try {
-            // 璋冪敤璋冭瘯鐗堟湰API鏈嶅姟
-            String debugResponse = bcs101ApiService.getBCS101DataDebug(request);
-            System.out.println("BCS101 API Debug Response: " + debugResponse);
-        } catch (Exception e) {
-            System.out.println("BCS101 API 璋冭瘯鐗堟湰璋冪敤寮傚父: " + e.getMessage());
-            e.printStackTrace();
-        }
-
-        System.out.println("\n=== 娴嬭瘯BCS101 API鏈嶅姟锛堢畝鍖栫増鏈級 ===");
-        try {
-            // 璋冪敤绠�鍖栫増鏈珹PI鏈嶅姟
-            String simpleResponse = bcs101ApiService.getBCS101DataSimple(request);
-            System.out.println("BCS101 API Simple Response: " + simpleResponse);
-        } catch (Exception e) {
-            System.out.println("BCS101 API 绠�鍖栫増鏈皟鐢ㄥ紓甯�: " + e.getMessage());
-            e.printStackTrace();
-        }
-
-        System.out.println("\n=== 娴嬭瘯BCS101 API鏈嶅姟锛圶5鍗忚鏍囧噯鐗堟湰锛� ===");
-        try {
-            // 璋冪敤X5鍗忚鏍囧噯鐗堟湰
-            String x5StandardResponse = bcs101ApiService.getBCS101DataX5Standard(request);
-            System.out.println("BCS101 API X5Standard Response: " + x5StandardResponse);
-        } catch (Exception e) {
-            System.out.println("BCS101 API X5鏍囧噯鐗堟湰璋冪敤寮傚父: " + e.getMessage());
-            e.printStackTrace();
-        }
-
-        System.out.println("\n=== 娴嬭瘯BCS101 API鏈嶅姟锛圶5鍗忚鍙樹綋鐗堟湰锛� ===");
-        try {
-            // 璋冪敤X5鍗忚鍙樹綋鐗堟湰
-            String x5VariantResponse = bcs101ApiService.getBCS101DataX5Variant(request);
-            System.out.println("BCS101 API X5Variant Response: " + x5VariantResponse);
-        } catch (Exception e) {
-            System.out.println("BCS101 API X5鍙樹綋鐗堟湰璋冪敤寮傚父: " + e.getMessage());
-            e.printStackTrace();
-        }
-    }
-
-    @Test
-    void test1() throws UnsupportedEncodingException, JsonProcessingException {
-        // 鍒涘缓娴嬭瘯璇锋眰瀵硅薄
-        BCS101Request request = new BCS101Request();
-        request.setSupplierId("177301");
-        request.setDocNo("9311036039");
-        request.setDocType("ASNGR");
-        request.setPageNo(1);
-        request.setPageSize(1000);
-
-
-        ObjectMapper objectMapper = new ObjectMapper();
-
-        System.out.println("=== BCS101 API 瀹為檯璇锋眰鍙傛暟璇︽儏 ===\n");
-
-        //鏃堕棿
-        String yyyyMMddHHmmss = DateUtil.format(new Date(), "yyyyMMddHHmmss");
-        System.out.println(yyyyMMddHHmmss);
-
-        // 1. 鍘熷JSON鏁版嵁
-        String jsonData = objectMapper.writeValueAsString(request);
-        System.out.println("1. 鍘熷JSON鏁版嵁:");
-        System.out.println(jsonData);
-        System.out.println();
-
-        // 2. Base64缂栫爜
-        String base64Data = Base64.getEncoder().encodeToString(jsonData.getBytes("UTF-8"));
-        System.out.println("2. Base64缂栫爜鍚�:");
-        System.out.println(base64Data);
-        System.out.println();
-
-        // 3. URL缂栫爜
-        String urlEncodedData = URLEncoder.encode(base64Data, "UTF-8");
-        System.out.println("3. URL缂栫爜鍚�:");
-        System.out.println(urlEncodedData);
-        System.out.println();
-
-        // 4. Form鏁版嵁
-        String formData = "data=" + urlEncodedData;
-        System.out.println("4. Form鏁版嵁 (璇锋眰Body):");
-        System.out.println(formData);
-        System.out.println();
-
-        // 5. 璇锋眰URL
-        System.out.println("5. 璇锋眰URL:");
-        System.out.println(DataAcquisitionConfiguration.BCS_101_URL);
-        System.out.println();
-
-        // 6. Basic Auth
-        String credentials = DataAcquisitionConfiguration.BCS_USER_NAME + ":" + DataAcquisitionConfiguration.BCS_PWD;
-        String auth = Base64.getEncoder().encodeToString(credentials.getBytes("UTF-8"));
-        System.out.println("6. Basic Auth淇℃伅:");
-        System.out.println("鐢ㄦ埛鍚�: " + DataAcquisitionConfiguration.BCS_USER_NAME);
-        System.out.println("瀵嗙爜: " + DataAcquisitionConfiguration.BCS_PWD);
-        System.out.println("Base64缂栫爜: " + auth);
-        System.out.println();
-
-        // 7. X5鍗忚鍙傛暟
-        String appId = DataAcquisitionConfiguration.BCS_APP_ID;
-        String appKey = DataAcquisitionConfiguration.BCS_APP_Key;
-        long timestamp = System.currentTimeMillis() / 1000;
-
-        System.out.println("7. X5鍗忚鍙傛暟:");
-        System.out.println("App ID: " + appId);
-        System.out.println("App Key: " + appKey);
-        System.out.println("Timestamp: " + timestamp);
-        System.out.println();
-
-        // 8. X5绛惧悕璁$畻
-        String signString = appId + appKey + timestamp + formData;
-        String signature;
-        try {
-            signature = SmUtil.sm3(signString).toUpperCase();
-            System.out.println("8. X5绛惧悕 (浣跨敤SM3):");
-        } catch (Exception e) {
-            signature = DigestUtil.md5Hex(signString).toUpperCase();
-            System.out.println("8. X5绛惧悕 (浣跨敤MD5):");
-        }
-        System.out.println("绛惧悕瀛楃涓�: " + signString);
-        System.out.println("绛惧悕鍊�: " + signature);
-        System.out.println();
-
-        // 9. 瀹屾暣鐨凥TTP璇锋眰澶�
-        System.out.println("9. 瀹屾暣鐨凥TTP璇锋眰澶�:");
-        System.out.println("Content-Type: application/x-www-form-urlencoded");
-        System.out.println("Authorization: Basic " + auth);
-        System.out.println("X-App-Id: " + appId);
-        System.out.println("X-Timestamp: " + timestamp);
-        System.out.println("X-Signature: " + signature);
-        System.out.println();
-
-        // 10. 瀹屾暣鐨刢URL鍛戒护绀轰緥
-        System.out.println("10. 瀹屾暣鐨刢URL鍛戒护绀轰緥:");
-        System.out.println("curl -X POST \\");
-        System.out.println("  '" + DataAcquisitionConfiguration.BCS_101_URL + "' \\");
-        System.out.println("  -H 'Content-Type: application/x-www-form-urlencoded' \\");
-        System.out.println("  -H 'Authorization: Basic " + auth + "' \\");
-        System.out.println("  -H 'X-App-Id: " + appId + "' \\");
-        System.out.println("  -H 'X-Timestamp: " + timestamp + "' \\");
-        System.out.println("  -H 'X-Signature: " + signature + "' \\");
-        System.out.println("  -d '" + formData + "'");
-        System.out.println();
-
-        // 11. Postman鏍煎紡
-        System.out.println("11. Postman娴嬭瘯鏍煎紡:");
-        System.out.println("Method: POST");
-        System.out.println("URL: " + DataAcquisitionConfiguration.BCS_101_URL);
-        System.out.println("Headers:");
-        System.out.println("  Content-Type: application/x-www-form-urlencoded");
-        System.out.println("  Authorization: Basic " + auth);
-        System.out.println("  X-App-Id: " + appId);
-        System.out.println("  X-Timestamp: " + timestamp);
-        System.out.println("  X-Signature: " + signature);
-        System.out.println("Body (x-www-form-urlencoded):");
-        System.out.println("  data: " + urlEncodedData);
-        System.out.println();
-
-        // 12. 瀹為檯璋冪敤API骞惰幏鍙栧搷搴�
-        System.out.println("12. === 瀹為檯API璋冪敤鍜屽搷搴� ===");
-        StringBuilder responseResult = new StringBuilder();
-
-        System.out.println("\n=== 娴嬭瘯BCS101 API鏈嶅姟锛圔asic Auth鐗堟湰锛� ===");
-        try {
-            String response = bcs101ApiService.getBCS101Data(request);
-            System.out.println("BCS101 API Response: " + response);
-            responseResult.append("Basic Auth鍝嶅簲: ").append(response.length()).append("瀛楃; ");
-        } catch (Exception e) {
-            System.out.println("BCS101 API璋冪敤寮傚父: " + e.getMessage());
-            responseResult.append("Basic Auth寮傚父: ").append(e.getMessage()).append("; ");
-        }
-
-        System.out.println("\n=== 娴嬭瘯BCS101 API鏈嶅姟锛堝甫X5鍗忚鐗堟湰锛� ===");
-        try {
-            String responseWithX5 = bcs101ApiService.getBCS101DataWithX5(request, true);
-            System.out.println("BCS101 API Response (X5): " + responseWithX5);
-            responseResult.append("X5鍗忚鍝嶅簲: ").append(responseWithX5.length()).append("瀛楃; ");
-        } catch (Exception e) {
-            System.out.println("BCS101 API X5璋冪敤寮傚父: " + e.getMessage());
-            responseResult.append("X5鍗忚寮傚父: ").append(e.getMessage()).append("; ");
-        }
-
-        System.out.println("\n=== 娴嬭瘯BCS101 API鏈嶅姟锛堣皟璇曠増鏈級 ===");
-        try {
-            String debugResponse = bcs101ApiService.getBCS101DataDebug(request);
-            System.out.println("BCS101 API Debug Response: " + debugResponse);
-            responseResult.append("璋冭瘯鐗堟湰鍝嶅簲: ").append(debugResponse.length()).append("瀛楃; ");
-        } catch (Exception e) {
-            System.out.println("BCS101 API 璋冭瘯鐗堟湰璋冪敤寮傚父: " + e.getMessage());
-            responseResult.append("璋冭瘯鐗堟湰寮傚父: ").append(e.getMessage()).append("; ");
-        }
-
-        System.out.println("\n=== 娴嬭瘯BCS101 API鏈嶅姟锛堢畝鍖栫増鏈級 ===");
-        try {
-            String simpleResponse = bcs101ApiService.getBCS101DataSimple(request);
-            System.out.println("BCS101 API Simple Response: " + simpleResponse);
-            responseResult.append("绠�鍖栫増鏈搷搴�: ").append(simpleResponse.length()).append("瀛楃; ");
-        } catch (Exception e) {
-            System.out.println("BCS101 API 绠�鍖栫増鏈皟鐢ㄥ紓甯�: " + e.getMessage());
-            responseResult.append("绠�鍖栫増鏈紓甯�: ").append(e.getMessage()).append("; ");
-        }
-
-        System.out.println("\n=== 娴嬭瘯BCS101 API鏈嶅姟锛圶5鍗忚鏍囧噯鐗堟湰锛� ===");
-        try {
-            String x5StandardResponse = bcs101ApiService.getBCS101DataX5Standard(request);
-            System.out.println("BCS101 API X5Standard Response: " + x5StandardResponse);
-            responseResult.append("X5鏍囧噯鐗堟湰鍝嶅簲: ").append(x5StandardResponse.length()).append("瀛楃; ");
-        } catch (Exception e) {
-            System.out.println("BCS101 API X5鏍囧噯鐗堟湰璋冪敤寮傚父: " + e.getMessage());
-            responseResult.append("X5鏍囧噯鐗堟湰寮傚父: ").append(e.getMessage()).append("; ");
-        }
-
-        System.out.println("\n=== 娴嬭瘯BCS101 API鏈嶅姟锛圶5鍗忚鍙樹綋鐗堟湰锛� ===");
-        try {
-            String x5VariantResponse = bcs101ApiService.getBCS101DataX5Variant(request);
-            System.out.println("BCS101 API X5Variant Response: " + x5VariantResponse);
-            responseResult.append("X5鍙樹綋鐗堟湰鍝嶅簲: ").append(x5VariantResponse.length()).append("瀛楃; ");
-        } catch (Exception e) {
-            System.out.println("BCS101 API X5鍙樹綋鐗堟湰璋冪敤寮傚父: " + e.getMessage());
-            responseResult.append("X5鍙樹綋鐗堟湰寮傚父: ").append(e.getMessage()).append("; ");
-        }
-
-        // 杩斿洖姹囨�讳俊鎭�
-        String summary = String.format("璇锋眰鍙傛暟[渚涘簲鍟咺D: %s, 鍗曟嵁鍙�: %s, 绛惧悕: %s, 鏃堕棿鎴�: %d] | 鍝嶅簲姹囨�籟%s]",
-                request.getSupplierId(), request.getDocNo(), signature, timestamp, responseResult.toString());
-        System.out.println("\n=== 娴嬭瘯姹囨�� ===");
-        System.out.println(summary);
     }
 }

--
Gitblit v1.9.3