src/main/java/com/gs/xiaomi/config/DataAcquisitionConfiguration.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/gs/xiaomi/service/BCS101ApiService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/gs/xiaomi/service/BCS101Service.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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(); } 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"); } } } 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); } 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(); } } }