From 721bd249ecfda100ed275c9e9688fdf72adafd4a Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 20 八月 2025 15:09:40 +0800
Subject: [PATCH] 条码接口测试
---
src/main/java/com/gs/xiaomi/config/DataAcquisitionConfiguration.java | 19 +++++-
src/main/java/com/gs/xiaomi/service/BCS101ApiService.java | 72 ++++++++++++++++++++++++
src/main/java/com/gs/xiaomi/service/BCS101Service.java | 16 +++++
src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java | 35 ++++++++++-
4 files changed, 135 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/gs/xiaomi/config/DataAcquisitionConfiguration.java b/src/main/java/com/gs/xiaomi/config/DataAcquisitionConfiguration.java
index 62dca9b..b6259fe 100644
--- a/src/main/java/com/gs/xiaomi/config/DataAcquisitionConfiguration.java
+++ b/src/main/java/com/gs/xiaomi/config/DataAcquisitionConfiguration.java
@@ -8,13 +8,26 @@
public static final String IV_CODEXM103 = "VDATA.XM103";
public static final String IV_CODEXM104 = "VDATA.XM104";
public static final String IV_PASSKEY = "c5Kl}xN&i(";
-// public static final String IV_PASSKEY = "QHTe%uvA*s";
+ // public static final String IV_PASSKEY = "QHTe%uvA*s"; //娴嬭瘯
public static final String USER_NAME = "RFCZJXIAOBU";
public static final String PWD = "m9%qPEWK";
-// public static final String PWD = "ppB9R!He";
+ // public static final String PWD = "ppB9R!He"; //娴嬭瘯
public static final String LIFNR = "177301";
public static final String XM104_URL = "https://mipop.p.mi.com/XISOAPAdapter/MessageServlet?senderParty=&senderService=ZJ_XIAOBU_PRD&receiverParty=&receiverService=&interface=SI_ZFM_WS_API_OUT&interfaceNamespace=http://xiaomi.com/srm/b2b";
- //public static final String XM104_URL = "https://mipoq.p.mi.com/XISOAPAdapter/MessageServlet?p=ic/9e8a118fb0b7379aa11c2a5c2860982a&senderParty=&senderService=ZJ_XIAOBU_QAS&receiverParty=&receiverService=&interface=SI_ZFM_WS_API_OUT&interfaceNamespace=http://xiaomi.com/srm/b2b";
+
+ //public static final String XM104_URL = "https://mipoq.p.mi.com/XISOAPAdapter/MessageServlet?p=ic/9e8a118fb0b7379aa11c2a5c2860982a&senderParty=&senderService=ZJ_XIAOBU_QAS&receiverParty=&receiverService=&interface=SI_ZFM_WS_API_OUT&interfaceNamespace=http://xiaomi.com/srm/b2b"; //娴嬭瘯
+
+ //=====================鏉$爜鑾峰彇
+ public static final String BCS_101_URL = "https://mipoq.p.mi.com/HttpAdapter/HttpMessageServlet?interfaceNamespace=http://xiaomi.com/bcs/dummy&interface=SI_MI_BCS_IF101_GET_SN_S_OUT&senderService=ZJ_XIAOBU_QAS&qos=BE"; //娴嬭瘯
+
+ public static final String BCS_USER_NAME = "RFCBCSXIAOBU"; //娴嬭瘯
+ public static final String BCS_PWD = "L5X8!pdL"; //娴嬭瘯
+
+ //X5鍗忚
+ public static final String BCS_APP_ID = "bcs_fty_177301"; //娴嬭瘯
+ public static final String BCS_APP_Key = "IJBVGMJXG4ZTAMLSMFXGI33NONQWY5DG"; //娴嬭瘯
+
+
public static String getIvPass(String ivCode) {
return DigestUtil.md5Hex(ivCode + "/" + IV_USER + "/" + IV_PASSKEY).toUpperCase();
}
diff --git a/src/main/java/com/gs/xiaomi/service/BCS101ApiService.java b/src/main/java/com/gs/xiaomi/service/BCS101ApiService.java
new file mode 100644
index 0000000..8b16f88
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/service/BCS101ApiService.java
@@ -0,0 +1,72 @@
+package com.gs.xiaomi.service;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.gs.xiaomi.config.DataAcquisitionConfiguration;
+import com.gs.xiaomi.dto.BCS101Request;
+import com.gs.xiaomi.util.X5StringUtils;
+import okhttp3.*;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.TimeUnit;
+
+@Service
+public class BCS101ApiService {
+
+ private final OkHttpClient client;
+ private final ObjectMapper objectMapper;
+
+ public BCS101ApiService() {
+ this.client = new OkHttpClient.Builder()
+ .connectTimeout(3000, TimeUnit.SECONDS)
+ .readTimeout(90, TimeUnit.SECONDS)
+ .build();
+ this.objectMapper = new ObjectMapper();
+ }
+
+ /**
+ * 鑾峰彇BCS101鏁版嵁
+ *
+ * @param request BCS101璇锋眰鍙傛暟
+ * @return API鍝嶅簲
+ * @throws IOException 缃戠粶寮傚父
+ */
+ 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, String.valueOf(StandardCharsets.UTF_8));
+
+ // 鏋勫缓form琛ㄥ崟鏁版嵁
+ String formData = "data=" + urlEncodedData;
+
+ // 鏋勫缓Authorization header
+ 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 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) {
+ return response.body().string();
+ }
+ throw new IOException("Empty response body");
+ }
+ }
+}
diff --git a/src/main/java/com/gs/xiaomi/service/BCS101Service.java b/src/main/java/com/gs/xiaomi/service/BCS101Service.java
new file mode 100644
index 0000000..d7e6eed
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/service/BCS101Service.java
@@ -0,0 +1,16 @@
+package com.gs.xiaomi.service;
+
+
+import lombok.RequiredArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+@RequiredArgsConstructor
+public class BCS101Service {
+
+ private static final Logger log = LoggerFactory.getLogger(XM104Service.class);
+}
diff --git a/src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java b/src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java
index 81ed733..b7a66c5 100644
--- a/src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java
+++ b/src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java
@@ -1,5 +1,8 @@
package com.gs.xiaomi;
+import cn.hutool.crypto.digest.DigestUtil;
+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;
@@ -11,6 +14,9 @@
@Autowired
private XM104Service xm104Service;
+ @Autowired
+ private BCS101ApiService bcs101ApiService;
+
@Test
void contextLoads() throws Exception {
xm104Service.getDb();
@@ -18,10 +24,31 @@
@Test
void test() {
- String str = ",,";
- String[] parts = str.split(",");
- for (String part : parts) {
- System.out.println(part);
+// String str = ",,";
+// String[] parts = str.split(",");
+// for (String part : parts) {
+// System.out.println(part);
+// }
+ System.out.println(DigestUtil.md5Hex("VDATA.XM104/177301/c5Kl}xN&i(").toUpperCase());
+ }
+
+ @Test
+ void testBCS101ApiService() throws Exception {
+ // 鍒涘缓娴嬭瘯璇锋眰鍙傛暟
+ BCS101Request request = new BCS101Request();
+ request.setSupplierId("100071");
+ request.setDocNo("9311991542");
+ request.setDocType("ASNGR");
+ request.setPageNo(1);
+ request.setPageSize(1000);
+
+ try {
+ // 璋冪敤BCS101 API鏈嶅姟
+ String response = bcs101ApiService.getBCS101Data(request);
+ System.out.println("BCS101 API Response: " + response);
+ } catch (Exception e) {
+ System.out.println("BCS101 API璋冪敤寮傚父: " + e.getMessage());
+ e.printStackTrace();
}
}
}
--
Gitblit v1.9.3