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