From 4b26316398729b3071d39408268cb52e05c85f4d Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 20 八月 2025 15:18:31 +0800
Subject: [PATCH] 条码接口测试

---
 src/main/java/com/gs/xiaomi/service/BCS101ApiService.java |   35 +++++++++++++++++++++++++++++++++++
 1 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/gs/xiaomi/service/BCS101ApiService.java b/src/main/java/com/gs/xiaomi/service/BCS101ApiService.java
index 8b16f88..7c157cc 100644
--- a/src/main/java/com/gs/xiaomi/service/BCS101ApiService.java
+++ b/src/main/java/com/gs/xiaomi/service/BCS101ApiService.java
@@ -1,5 +1,6 @@
 package com.gs.xiaomi.service;
 
+import cn.hutool.crypto.digest.DigestUtil;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.gs.xiaomi.config.DataAcquisitionConfiguration;
 import com.gs.xiaomi.dto.BCS101Request;
@@ -32,6 +33,11 @@
      * @param request BCS101璇锋眰鍙傛暟
      * @return API鍝嶅簲
      * @throws IOException 缃戠粶寮傚父
+     *                     鎺ュ彛杩斿洖
+     *                     Error: ERROR_IN_MODULECHAIN;ERROR_IN_MODULECHAIN, Sender Channel &#39;CC_MI_OEM_HTTP_OUT&#39; (ID: a58369adbaa03aafb76d2c02c2ae7cd7): Catching exception calling messaging system
+     *                     鎴戞槸闇�瑕乆5鍗忚鐨勶紝 鎴戠湅浣犳病鏈変负鎴戞坊鍔�
+     *                     APP ID锛歜cs_fty_177301
+     *                     APP Key锛欼JBVGMJXG4ZTAMLSMFXGI33NONQWY5DG
      */
     public String getBCS101Data(BCS101Request request) throws IOException {
         // 鐩存帴灏嗚姹傚璞¤浆鎹负JSON瀛楃涓�
@@ -46,6 +52,17 @@
         // 鏋勫缓form琛ㄥ崟鏁版嵁
         String formData = "data=" + urlEncodedData;
 
+        // 鐢熸垚鏃堕棿鎴�
+        String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
+
+        // 鐢熸垚X5绛惧悕
+        String signature = generateX5Signature(
+                DataAcquisitionConfiguration.BCS_APP_ID,
+                DataAcquisitionConfiguration.BCS_APP_Key,
+                timestamp,
+                formData
+        );
+
         // 鏋勫缓Authorization header
         String credentials = DataAcquisitionConfiguration.BCS_USER_NAME + ":" + DataAcquisitionConfiguration.BCS_PWD;
         String auth = X5StringUtils.encodeBase64(credentials);
@@ -59,6 +76,9 @@
                 .method("POST", body)
                 .addHeader("Content-Type", "application/x-www-form-urlencoded")
                 .addHeader("Authorization", "Basic " + auth)
+                .addHeader("X-App-Id", DataAcquisitionConfiguration.BCS_APP_ID)
+                .addHeader("X-Timestamp", timestamp)
+                .addHeader("X-Signature", signature)
                 .build();
 
         // 鎵ц璇锋眰
@@ -69,4 +89,19 @@
             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绛惧悕绠楁硶: MD5(appId + appKey + timestamp + data)
+        String signString = appId + appKey + timestamp + data;
+        return DigestUtil.md5Hex(signString).toUpperCase();
+    }
 }

--
Gitblit v1.9.3